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

Last change on this file since 96 was 96, checked in by raasch, 14 years ago

more preliminary uncomplete changes for ocean version

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