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

Last change on this file since 771 was 771, checked in by heinze, 10 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
Line 
1 SUBROUTINE average_3d_data
2
3!------------------------------------------------------------------------------!
4! Current revisions:
5! -----------------
6! +lpt_av
7! Former revisions:
8! -----------------
9! $Id: average_3d_data.f90 771 2011-10-27 10:56:21Z heinze $
10!
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!
14! 367 2009-08-25 08:35:52Z maronga
15! Added calculation of shf* and qsws*
16!
17! 96 2007-06-04 08:07:41Z raasch
18! Averaging of density and salinity
19!
20! 72 2007-03-19 08:20:46Z raasch
21! Averaging the precipitation rate and roughness length (prr*, z0*)
22!
23! RCS Log replace by Id keyword, revision history cleaned up
24!
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' )
62             DO  i = nxlg, nxrg
63                DO  j = nysg, nyng
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
70          CASE ( 'qsws*' )
71             DO  i = nxlg, nxrg
72                DO  j = nysg, nyng
73                   qsws_av(j,i) = qsws_av(j,i) / REAL( average_count_3d )
74                ENDDO
75             ENDDO
76
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
86          CASE ( 'lwp*' )
87             DO  i = nxlg, nxrg
88                DO  j = nysg, nyng
89                   lwp_av(j,i) = lwp_av(j,i) / REAL( average_count_3d )
90                ENDDO
91             ENDDO
92
93          CASE ( 'p' )
94             DO  i = nxlg, nxrg
95                DO  j = nysg, nyng
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
120          CASE ( 'prr*' )
121             DO  i = nxlg, nxrg
122                DO  j = nysg, nyng
123                   precipitation_rate_av(j,i) = precipitation_rate_av(j,i) / &
124                                                REAL( average_count_3d )
125                ENDDO
126             ENDDO
127
128          CASE ( 'pt' )
129             DO  i = nxlg, nxrg
130                DO  j = nysg, nyng
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' )
138             DO  i = nxlg, nxrg
139                DO  j = nysg, nyng
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
145
146          CASE ( 'ql' )
147             DO  i = nxlg, nxrg
148                DO  j = nysg, nyng
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' )
156             DO  i = nxlg, nxrg
157                DO  j = nysg, nyng
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' )
165             DO  i = nxlg, nxrg
166                DO  j = nysg, nyng
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' )
174             DO  i = nxlg, nxrg
175                DO  j = nysg, nyng
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' )
184             DO  i = nxlg, nxrg
185                DO  j = nysg, nyng
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
191
192          CASE ( 'rho' )
193             DO  i = nxlg, nxrg
194                DO  j = nysg, nyng
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
200
201          CASE ( 's' )
202             DO  i = nxlg, nxrg
203                DO  j = nysg, nyng
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
209
210          CASE ( 'sa' )
211             DO  i = nxlg, nxrg
212                DO  j = nysg, nyng
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
218
219         CASE ( 'shf*' )
220             DO  i = nxlg, nxrg
221                DO  j = nysg, nyng
222                   shf_av(j,i) = shf_av(j,i) / REAL( average_count_3d )
223                ENDDO
224             ENDDO
225
226          CASE ( 't*' )
227             DO  i = nxlg, nxrg
228                DO  j = nysg, nyng
229                   ts_av(j,i) = ts_av(j,i) / REAL( average_count_3d )
230                ENDDO
231             ENDDO
232
233          CASE ( 'u' )
234             DO  i = nxlg, nxrg
235                DO  j = nysg, nyng
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*' )
243             DO  i = nxlg, nxrg
244                DO  j = nysg, nyng
245                   us_av(j,i) = us_av(j,i) / REAL( average_count_3d )
246                ENDDO
247             ENDDO
248
249          CASE ( 'v' )
250             DO  i = nxlg, nxrg
251                DO  j = nysg, nyng
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' )
259             DO  i = nxlg, nxrg
260                DO  j = nysg, nyng
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' )
268             DO  i = nxlg, nxrg
269                DO  j = nysg, nyng
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
276          CASE ( 'z0*' )
277             DO  i = nxlg, nxrg
278                DO  j = nysg, nyng
279                   z0_av(j,i) = z0_av(j,i) / REAL( average_count_3d )
280                ENDDO
281             ENDDO
282
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.