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

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

merge fricke branch back into trunk

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