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

Last change on this file since 1036 was 1036, checked in by raasch, 11 years ago

code has been put under the GNU General Public License (v3)

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