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

Last change on this file since 771 was 771, checked in by heinze, 12 years ago

Output of liquid water potential temperature in case of cloud_physics=.T. enabled

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