source: palm/trunk/SOURCE/average_3d_data.f90 @ 992

Last change on this file since 992 was 979, checked in by fricke, 12 years ago

last commit documented

  • Property svn:keywords set to Id
File size: 8.5 KB
Line 
1 SUBROUTINE average_3d_data
2
3!------------------------------------------------------------------------------!
4! Current revisions:
5! -----------------
6!
7!
8! Former revisions:
9! -----------------
10! $Id: average_3d_data.f90 979 2012-08-09 08:50:11Z hoffmann $
11!
12! 978 2012-08-09 08:28:32Z fricke
13! +z0h_av
14!
15! 771 2011-10-27 10:56:21Z heinze
16! +lpt_av
17!
18! 667 2010-12-23 12:06:00Z suehring/gryschka
19! nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng
20!
21! 367 2009-08-25 08:35:52Z maronga
22! Added calculation of shf* and qsws*
23!
24! 96 2007-06-04 08:07:41Z raasch
25! Averaging of density and salinity
26!
27! 72 2007-03-19 08:20:46Z raasch
28! Averaging the precipitation rate and roughness length (prr*, z0*)
29!
30! RCS Log replace by Id keyword, revision history cleaned up
31!
32! Revision 1.1  2006/02/23 09:48:58  raasch
33! Initial revision
34!
35!
36! Description:
37! ------------
38! Time-averaging of 3d-data-arrays.
39!------------------------------------------------------------------------------!
40
41    USE arrays_3d
42    USE averaging
43    USE cloud_parameters
44    USE control_parameters
45    USE cpulog
46    USE indices
47    USE interfaces
48
49    IMPLICIT NONE
50
51    INTEGER ::  i, ii, j, k
52
53
54    CALL cpu_log (log_point(35),'average_3d_data','start')
55
56!
57!-- Check, if averaging is necessary
58    IF ( average_count_3d <= 1 )  RETURN
59
60!
61!-- Loop of all variables to be averaged.
62    DO  ii = 1, doav_n
63
64!
65!--    Store the array chosen on the temporary array.
66       SELECT CASE ( TRIM( doav(ii) ) )
67
68          CASE ( 'e' )
69             DO  i = nxlg, nxrg
70                DO  j = nysg, nyng
71                   DO  k = nzb, nzt+1
72                      e_av(k,j,i) = e_av(k,j,i) / REAL( average_count_3d )
73                   ENDDO
74                ENDDO
75             ENDDO
76
77          CASE ( 'qsws*' )
78             DO  i = nxlg, nxrg
79                DO  j = nysg, nyng
80                   qsws_av(j,i) = qsws_av(j,i) / REAL( average_count_3d )
81                ENDDO
82             ENDDO
83
84          CASE ( 'lpt' )
85             DO  i = nxlg, nxrg
86                DO  j = nysg, nyng
87                   DO  k = nzb, nzt+1
88                      lpt_av(k,j,i) = lpt_av(k,j,i) / REAL( average_count_3d )
89                   ENDDO
90                ENDDO
91             ENDDO
92
93          CASE ( 'lwp*' )
94             DO  i = nxlg, nxrg
95                DO  j = nysg, nyng
96                   lwp_av(j,i) = lwp_av(j,i) / REAL( average_count_3d )
97                ENDDO
98             ENDDO
99
100          CASE ( 'p' )
101             DO  i = nxlg, nxrg
102                DO  j = nysg, nyng
103                   DO  k = nzb, nzt+1
104                      p_av(k,j,i) = p_av(k,j,i) / REAL( average_count_3d )
105                   ENDDO
106                ENDDO
107             ENDDO
108
109          CASE ( 'pc' )
110             DO  i = nxl, nxr
111                DO  j = nys, nyn
112                   DO  k = nzb, nzt+1
113                      pc_av(k,j,i) = pc_av(k,j,i) / REAL( average_count_3d )
114                   ENDDO
115                ENDDO
116             ENDDO
117
118          CASE ( 'pr' )
119             DO  i = nxl, nxr
120                DO  j = nys, nyn
121                   DO  k = nzb, nzt+1
122                      pr_av(k,j,i) = pr_av(k,j,i) / REAL( average_count_3d )
123                   ENDDO
124                ENDDO
125             ENDDO
126
127          CASE ( 'prr*' )
128             DO  i = nxlg, nxrg
129                DO  j = nysg, nyng
130                   precipitation_rate_av(j,i) = precipitation_rate_av(j,i) / &
131                                                REAL( average_count_3d )
132                ENDDO
133             ENDDO
134
135          CASE ( 'pt' )
136             DO  i = nxlg, nxrg
137                DO  j = nysg, nyng
138                   DO  k = nzb, nzt+1
139                      pt_av(k,j,i) = pt_av(k,j,i) / REAL( average_count_3d )
140                   ENDDO
141                ENDDO
142             ENDDO
143
144          CASE ( 'q' )
145             DO  i = nxlg, nxrg
146                DO  j = nysg, nyng
147                   DO  k = nzb, nzt+1
148                      q_av(k,j,i) = q_av(k,j,i) / REAL( average_count_3d )
149                   ENDDO
150                ENDDO
151             ENDDO
152
153          CASE ( 'ql' )
154             DO  i = nxlg, nxrg
155                DO  j = nysg, nyng
156                   DO  k = nzb, nzt+1
157                      ql_av(k,j,i) = ql_av(k,j,i) / REAL( average_count_3d )
158                   ENDDO
159                ENDDO
160             ENDDO
161
162          CASE ( 'ql_c' )
163             DO  i = nxlg, nxrg
164                DO  j = nysg, nyng
165                   DO  k = nzb, nzt+1
166                      ql_c_av(k,j,i) = ql_c_av(k,j,i) / REAL( average_count_3d )
167                   ENDDO
168                ENDDO
169             ENDDO
170
171          CASE ( 'ql_v' )
172             DO  i = nxlg, nxrg
173                DO  j = nysg, nyng
174                   DO  k = nzb, nzt+1
175                      ql_v_av(k,j,i) = ql_v_av(k,j,i) / REAL( average_count_3d )
176                   ENDDO
177                ENDDO
178             ENDDO
179
180          CASE ( 'ql_vp' )
181             DO  i = nxlg, nxrg
182                DO  j = nysg, nyng
183                   DO  k = nzb, nzt+1
184                      ql_vp_av(k,j,i) = ql_vp_av(k,j,i) / &
185                                        REAL( average_count_3d )
186                   ENDDO
187                ENDDO
188             ENDDO
189
190          CASE ( 'qv' )
191             DO  i = nxlg, nxrg
192                DO  j = nysg, nyng
193                   DO  k = nzb, nzt+1
194                      qv_av(k,j,i) = qv_av(k,j,i) / REAL( average_count_3d )
195                   ENDDO
196                ENDDO
197             ENDDO
198
199          CASE ( 'rho' )
200             DO  i = nxlg, nxrg
201                DO  j = nysg, nyng
202                   DO  k = nzb, nzt+1
203                      rho_av(k,j,i) = rho_av(k,j,i) / REAL( average_count_3d )
204                   ENDDO
205                ENDDO
206             ENDDO
207
208          CASE ( 's' )
209             DO  i = nxlg, nxrg
210                DO  j = nysg, nyng
211                   DO  k = nzb, nzt+1
212                      s_av(k,j,i) = s_av(k,j,i) / REAL( average_count_3d )
213                   ENDDO
214                ENDDO
215             ENDDO
216
217          CASE ( 'sa' )
218             DO  i = nxlg, nxrg
219                DO  j = nysg, nyng
220                   DO  k = nzb, nzt+1
221                      sa_av(k,j,i) = sa_av(k,j,i) / REAL( average_count_3d )
222                   ENDDO
223                ENDDO
224             ENDDO
225
226         CASE ( 'shf*' )
227             DO  i = nxlg, nxrg
228                DO  j = nysg, nyng
229                   shf_av(j,i) = shf_av(j,i) / REAL( average_count_3d )
230                ENDDO
231             ENDDO
232
233          CASE ( 't*' )
234             DO  i = nxlg, nxrg
235                DO  j = nysg, nyng
236                   ts_av(j,i) = ts_av(j,i) / REAL( average_count_3d )
237                ENDDO
238             ENDDO
239
240          CASE ( 'u' )
241             DO  i = nxlg, nxrg
242                DO  j = nysg, nyng
243                   DO  k = nzb, nzt+1
244                      u_av(k,j,i) = u_av(k,j,i) / REAL( average_count_3d )
245                   ENDDO
246                ENDDO
247             ENDDO
248
249          CASE ( 'u*' )
250             DO  i = nxlg, nxrg
251                DO  j = nysg, nyng
252                   us_av(j,i) = us_av(j,i) / REAL( average_count_3d )
253                ENDDO
254             ENDDO
255
256          CASE ( 'v' )
257             DO  i = nxlg, nxrg
258                DO  j = nysg, nyng
259                   DO  k = nzb, nzt+1
260                      v_av(k,j,i) = v_av(k,j,i) / REAL( average_count_3d )
261                   ENDDO
262                ENDDO
263             ENDDO
264
265          CASE ( 'vpt' )
266             DO  i = nxlg, nxrg
267                DO  j = nysg, nyng
268                   DO  k = nzb, nzt+1
269                      vpt_av(k,j,i) = vpt_av(k,j,i) / REAL( average_count_3d )
270                   ENDDO
271                ENDDO
272             ENDDO
273
274          CASE ( 'w' )
275             DO  i = nxlg, nxrg
276                DO  j = nysg, nyng
277                   DO  k = nzb, nzt+1
278                      w_av(k,j,i) = w_av(k,j,i) / REAL( average_count_3d )
279                   ENDDO
280                ENDDO
281             ENDDO
282
283          CASE ( 'z0*' )
284             DO  i = nxlg, nxrg
285                DO  j = nysg, nyng
286                   z0_av(j,i) = z0_av(j,i) / REAL( average_count_3d )
287                ENDDO
288             ENDDO
289
290          CASE ( 'z0h*' )
291             DO  i = nxlg, nxrg
292                DO  j = nysg, nyng
293                   z0h_av(j,i) = z0h_av(j,i) / REAL( average_count_3d )
294                ENDDO
295             ENDDO
296
297          CASE DEFAULT
298!
299!--          User-defined quantity
300             CALL user_3d_data_averaging( 'average', doav(ii) )
301
302       END SELECT
303
304    ENDDO
305
306!
307!-- Reset the counter
308    average_count_3d = 0.0
309
310    CALL cpu_log (log_point(35),'average_3d_data','stop','nobarrier')
311
312
313 END SUBROUTINE average_3d_data
Note: See TracBrowser for help on using the repository browser.