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

Last change on this file since 1115 was 1115, checked in by hoffmann, 11 years ago

optimization of two-moments cloud physics

  • Property svn:keywords set to Id
File size: 10.2 KB
Line 
1 SUBROUTINE average_3d_data
2
3!--------------------------------------------------------------------------------!
4! This file is part of PALM.
5!
6! PALM is free software: you can redistribute it and/or modify it under the terms
7! of the GNU General Public License as published by the Free Software Foundation,
8! either version 3 of the License, or (at your option) any later version.
9!
10! PALM is distributed in the hope that it will be useful, but WITHOUT ANY
11! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12! A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13!
14! You should have received a copy of the GNU General Public License along with
15! PALM. If not, see <http://www.gnu.org/licenses/>.
16!
17! Copyright 1997-2012  Leibniz University Hannover
18!--------------------------------------------------------------------------------!
19!
20! Current revisions:
21! -----------------
22! +qc
23!
24! Former revisions:
25! -----------------
26! $Id: average_3d_data.f90 1115 2013-03-26 18:16:16Z hoffmann $
27!
28! 1053 2012-11-13 17:11:03Z hoffmann
29! averaging of nr, qr added
30!
31! 1036 2012-10-22 13:43:42Z raasch
32! code put under GPL (PALM 3.9)
33!
34! 978 2012-08-09 08:28:32Z fricke
35! +z0h_av
36!
37! 771 2011-10-27 10:56:21Z heinze
38! +lpt_av
39!
40! 667 2010-12-23 12:06:00Z suehring/gryschka
41! nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng
42!
43! 367 2009-08-25 08:35:52Z maronga
44! Added calculation of shf* and qsws*
45!
46! 96 2007-06-04 08:07:41Z raasch
47! Averaging of density and salinity
48!
49! 72 2007-03-19 08:20:46Z raasch
50! Averaging the precipitation rate and roughness length (prr*, z0*)
51!
52! RCS Log replace by Id keyword, revision history cleaned up
53!
54! Revision 1.1  2006/02/23 09:48:58  raasch
55! Initial revision
56!
57!
58! Description:
59! ------------
60! Time-averaging of 3d-data-arrays.
61!------------------------------------------------------------------------------!
62
63    USE arrays_3d
64    USE averaging
65    USE cloud_parameters
66    USE control_parameters
67    USE cpulog
68    USE indices
69    USE interfaces
70
71    IMPLICIT NONE
72
73    INTEGER ::  i, ii, j, k
74
75
76    CALL cpu_log (log_point(35),'average_3d_data','start')
77
78!
79!-- Check, if averaging is necessary
80    IF ( average_count_3d <= 1 )  RETURN
81
82!
83!-- Loop of all variables to be averaged.
84    DO  ii = 1, doav_n
85
86!
87!--    Store the array chosen on the temporary array.
88       SELECT CASE ( TRIM( doav(ii) ) )
89
90          CASE ( 'e' )
91             DO  i = nxlg, nxrg
92                DO  j = nysg, nyng
93                   DO  k = nzb, nzt+1
94                      e_av(k,j,i) = e_av(k,j,i) / REAL( average_count_3d )
95                   ENDDO
96                ENDDO
97             ENDDO
98
99          CASE ( 'qsws*' )
100             DO  i = nxlg, nxrg
101                DO  j = nysg, nyng
102                   qsws_av(j,i) = qsws_av(j,i) / REAL( average_count_3d )
103                ENDDO
104             ENDDO
105
106          CASE ( 'lpt' )
107             DO  i = nxlg, nxrg
108                DO  j = nysg, nyng
109                   DO  k = nzb, nzt+1
110                      lpt_av(k,j,i) = lpt_av(k,j,i) / REAL( average_count_3d )
111                   ENDDO
112                ENDDO
113             ENDDO
114
115          CASE ( 'lwp*' )
116             DO  i = nxlg, nxrg
117                DO  j = nysg, nyng
118                   lwp_av(j,i) = lwp_av(j,i) / REAL( average_count_3d )
119                ENDDO
120             ENDDO
121
122          CASE ( 'nr' )
123             DO  i = nxlg, nxrg
124                DO  j = nysg, nyng
125                   DO  k = nzb, nzt+1
126                      nr_av(k,j,i) = nr_av(k,j,i) / REAL( average_count_3d )
127                   ENDDO
128                ENDDO
129             ENDDO
130
131          CASE ( 'p' )
132             DO  i = nxlg, nxrg
133                DO  j = nysg, nyng
134                   DO  k = nzb, nzt+1
135                      p_av(k,j,i) = p_av(k,j,i) / REAL( average_count_3d )
136                   ENDDO
137                ENDDO
138             ENDDO
139
140          CASE ( 'pc' )
141             DO  i = nxl, nxr
142                DO  j = nys, nyn
143                   DO  k = nzb, nzt+1
144                      pc_av(k,j,i) = pc_av(k,j,i) / REAL( average_count_3d )
145                   ENDDO
146                ENDDO
147             ENDDO
148
149          CASE ( 'pr' )
150             DO  i = nxl, nxr
151                DO  j = nys, nyn
152                   DO  k = nzb, nzt+1
153                      pr_av(k,j,i) = pr_av(k,j,i) / REAL( average_count_3d )
154                   ENDDO
155                ENDDO
156             ENDDO
157
158          CASE ( 'prr*' )
159             DO  i = nxlg, nxrg
160                DO  j = nysg, nyng
161                   precipitation_rate_av(j,i) = precipitation_rate_av(j,i) / &
162                                                REAL( average_count_3d )
163                ENDDO
164             ENDDO
165
166          CASE ( 'pt' )
167             DO  i = nxlg, nxrg
168                DO  j = nysg, nyng
169                   DO  k = nzb, nzt+1
170                      pt_av(k,j,i) = pt_av(k,j,i) / REAL( average_count_3d )
171                   ENDDO
172                ENDDO
173             ENDDO
174
175          CASE ( 'q' )
176             DO  i = nxlg, nxrg
177                DO  j = nysg, nyng
178                   DO  k = nzb, nzt+1
179                      q_av(k,j,i) = q_av(k,j,i) / REAL( average_count_3d )
180                   ENDDO
181                ENDDO
182             ENDDO
183
184          CASE ( 'qc' )
185             DO  i = nxlg, nxrg
186                DO  j = nysg, nyng
187                   DO  k = nzb, nzt+1
188                      qc_av(k,j,i) = qc_av(k,j,i) / REAL( average_count_3d )
189                   ENDDO
190                ENDDO
191             ENDDO
192
193          CASE ( 'ql' )
194             DO  i = nxlg, nxrg
195                DO  j = nysg, nyng
196                   DO  k = nzb, nzt+1
197                      ql_av(k,j,i) = ql_av(k,j,i) / REAL( average_count_3d )
198                   ENDDO
199                ENDDO
200             ENDDO
201
202          CASE ( 'ql_c' )
203             DO  i = nxlg, nxrg
204                DO  j = nysg, nyng
205                   DO  k = nzb, nzt+1
206                      ql_c_av(k,j,i) = ql_c_av(k,j,i) / REAL( average_count_3d )
207                   ENDDO
208                ENDDO
209             ENDDO
210
211          CASE ( 'ql_v' )
212             DO  i = nxlg, nxrg
213                DO  j = nysg, nyng
214                   DO  k = nzb, nzt+1
215                      ql_v_av(k,j,i) = ql_v_av(k,j,i) / REAL( average_count_3d )
216                   ENDDO
217                ENDDO
218             ENDDO
219
220          CASE ( 'ql_vp' )
221             DO  i = nxlg, nxrg
222                DO  j = nysg, nyng
223                   DO  k = nzb, nzt+1
224                      ql_vp_av(k,j,i) = ql_vp_av(k,j,i) / &
225                                        REAL( average_count_3d )
226                   ENDDO
227                ENDDO
228             ENDDO
229
230          CASE ( 'qr' )
231             DO  i = nxlg, nxrg
232                DO  j = nysg, nyng
233                   DO  k = nzb, nzt+1
234                      qr_av(k,j,i) = qr_av(k,j,i) / REAL( average_count_3d )
235                   ENDDO
236                ENDDO
237             ENDDO
238
239          CASE ( 'qv' )
240             DO  i = nxlg, nxrg
241                DO  j = nysg, nyng
242                   DO  k = nzb, nzt+1
243                      qv_av(k,j,i) = qv_av(k,j,i) / REAL( average_count_3d )
244                   ENDDO
245                ENDDO
246             ENDDO
247
248          CASE ( 'rho' )
249             DO  i = nxlg, nxrg
250                DO  j = nysg, nyng
251                   DO  k = nzb, nzt+1
252                      rho_av(k,j,i) = rho_av(k,j,i) / REAL( average_count_3d )
253                   ENDDO
254                ENDDO
255             ENDDO
256
257          CASE ( 's' )
258             DO  i = nxlg, nxrg
259                DO  j = nysg, nyng
260                   DO  k = nzb, nzt+1
261                      s_av(k,j,i) = s_av(k,j,i) / REAL( average_count_3d )
262                   ENDDO
263                ENDDO
264             ENDDO
265
266          CASE ( 'sa' )
267             DO  i = nxlg, nxrg
268                DO  j = nysg, nyng
269                   DO  k = nzb, nzt+1
270                      sa_av(k,j,i) = sa_av(k,j,i) / REAL( average_count_3d )
271                   ENDDO
272                ENDDO
273             ENDDO
274
275         CASE ( 'shf*' )
276             DO  i = nxlg, nxrg
277                DO  j = nysg, nyng
278                   shf_av(j,i) = shf_av(j,i) / REAL( average_count_3d )
279                ENDDO
280             ENDDO
281
282          CASE ( 't*' )
283             DO  i = nxlg, nxrg
284                DO  j = nysg, nyng
285                   ts_av(j,i) = ts_av(j,i) / REAL( average_count_3d )
286                ENDDO
287             ENDDO
288
289          CASE ( 'u' )
290             DO  i = nxlg, nxrg
291                DO  j = nysg, nyng
292                   DO  k = nzb, nzt+1
293                      u_av(k,j,i) = u_av(k,j,i) / REAL( average_count_3d )
294                   ENDDO
295                ENDDO
296             ENDDO
297
298          CASE ( 'u*' )
299             DO  i = nxlg, nxrg
300                DO  j = nysg, nyng
301                   us_av(j,i) = us_av(j,i) / REAL( average_count_3d )
302                ENDDO
303             ENDDO
304
305          CASE ( 'v' )
306             DO  i = nxlg, nxrg
307                DO  j = nysg, nyng
308                   DO  k = nzb, nzt+1
309                      v_av(k,j,i) = v_av(k,j,i) / REAL( average_count_3d )
310                   ENDDO
311                ENDDO
312             ENDDO
313
314          CASE ( 'vpt' )
315             DO  i = nxlg, nxrg
316                DO  j = nysg, nyng
317                   DO  k = nzb, nzt+1
318                      vpt_av(k,j,i) = vpt_av(k,j,i) / REAL( average_count_3d )
319                   ENDDO
320                ENDDO
321             ENDDO
322
323          CASE ( 'w' )
324             DO  i = nxlg, nxrg
325                DO  j = nysg, nyng
326                   DO  k = nzb, nzt+1
327                      w_av(k,j,i) = w_av(k,j,i) / REAL( average_count_3d )
328                   ENDDO
329                ENDDO
330             ENDDO
331
332          CASE ( 'z0*' )
333             DO  i = nxlg, nxrg
334                DO  j = nysg, nyng
335                   z0_av(j,i) = z0_av(j,i) / REAL( average_count_3d )
336                ENDDO
337             ENDDO
338
339          CASE ( 'z0h*' )
340             DO  i = nxlg, nxrg
341                DO  j = nysg, nyng
342                   z0h_av(j,i) = z0h_av(j,i) / REAL( average_count_3d )
343                ENDDO
344             ENDDO
345
346          CASE DEFAULT
347!
348!--          User-defined quantity
349             CALL user_3d_data_averaging( 'average', doav(ii) )
350
351       END SELECT
352
353    ENDDO
354
355!
356!-- Reset the counter
357    average_count_3d = 0.0
358
359    CALL cpu_log (log_point(35),'average_3d_data','stop','nobarrier')
360
361
362 END SUBROUTINE average_3d_data
Note: See TracBrowser for help on using the repository browser.