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

Last change on this file since 858 was 772, checked in by heinze, 13 years ago

last commit documented

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