/[MITgcm]/MITgcm/pkg/fizhi/fizhi_step_diag.F
ViewVC logotype

Contents of /MITgcm/pkg/fizhi/fizhi_step_diag.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.5 - (show annotations) (download)
Wed Jul 14 14:50:04 2004 UTC (19 years, 11 months ago) by molod
Branch: MAIN
CVS Tags: checkpoint54c_post
Changes since 1.4: +30 -26 lines
Debugging

1 C $Header: /u/gcmpack/MITgcm/pkg/fizhi/fizhi_step_diag.F,v 1.4 2004/07/13 23:44:43 molod Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6 subroutine fizhi_step_diag(myThid,p,uphy,vphy,thphy,sphy,qq,pk,dp,
7 . radswt,radswg,swgclr,osr,osrclr,st4,dst4,tgz,tg0,radlwg,lwgclr,
8 . turbu,turbv,turbt,turbq,moistu,moistv,moistt,moistq,
9 . lwdt,swdt,lwdtclr,swdtclr,dlwdtg,
10 . im1,im2,jm1,jm2,Nrphys,Nbi,Nbj,bi,bj,ntracer)
11 C***********************************************************************
12 implicit none
13
14 #ifdef ALLOW_DIAGNOSTICS
15 #include "SIZE.h"
16 #include "diagnostics_SIZE.h"
17 #include "diagnostics.h"
18 #endif
19
20 integer myThid,im1,im2,jm1,jm2,Nrphys,Nbi,Nbj,bi,bj,ntracer
21 real p(im2,jm2,Nbi,Nbj)
22 real uphy(im2,jm2,Nrphys,Nbi,Nbj),vphy(im2,jm2,Nrphys,Nbi,Nbj)
23 real thphy(im2,jm2,Nrphys,Nbi,Nbj),sphy(im2,jm2,Nrphys,Nbi,Nbj)
24 real qq(im2,jm2,Nrphys),pk(im2,jm2,Nrphys,Nbi,Nbj)
25 real dp(im2,jm2,Nrphys,Nbi,Nbj)
26 real radswt(im2,jm2,Nbi,Nbj),radswg(im2,jm2,Nbi,Nbj)
27 real swgclr(im2,jm2,Nbi,Nbj),osr(im2,jm2,Nbi,Nbj)
28 real osrclr(im2,jm2,Nbi,Nbj),st4(im2,jm2,Nbi,Nbj)
29 real dst4(im2,jm2,Nbi,Nbj),tgz(im2,jm2,Nbi,Nbj)
30 real tg0(im2,jm2,Nbi,Nbj),radlwg(im2,jm2,Nbi,Nbj)
31 real lwgclr(im2,jm2,Nbi,Nbj)
32 real turbu(im2,jm2,Nrphys,Nbi,Nbj),turbv(im2,jm2,Nrphys,Nbi,Nbj)
33 real turbt(im2,jm2,Nrphys,Nbi,Nbj)
34 real turbq(im2,jm2,Nrphys,ntracer,Nbi,Nbj)
35 real moistu(im2,jm2,Nrphys,Nbi,Nbj),moistv(im2,jm2,Nrphys,Nbi,Nbj)
36 real moistt(im2,jm2,Nrphys,Nbi,Nbj)
37 real moistq(im2,jm2,Nrphys,ntracer,Nbi,Nbj)
38 real lwdt(im2,jm2,Nrphys,Nbi,Nbj),swdt(im2,jm2,Nrphys,Nbi,Nbj)
39 real lwdtclr(im2,jm2,Nrphys,Nbi,Nbj)
40 real swdtclr(im2,jm2,Nrphys,Nbi,Nbj)
41 real dlwdtg(im2,jm2,Nrphys,Nbi,Nbj)
42
43 integer i,j,L
44 real pinv(im2,jm2), qbar(im2,jm2)
45
46 C **********************************************************************
47
48 do j=jm1,jm2
49 do i=im1,im2
50 pinv(i,j) = 1.0 / p(i,j,bi,bj)
51 enddo
52 enddo
53
54 c Incident Solar Radiation (W/m**2)
55 c ---------------------------------
56 if (iradswt.ne.0) then
57 do j=jm1,jm2
58 do i=im1,im2
59 qdiag(i,j,iradswt,bi,bj)= qdiag(i,j,iradswt,bi,bj) +
60 . radswt(i,j,bi,bj)
61 enddo
62 enddo
63 endif
64
65 c Net Solar Radiation at the Ground (W/m**2)
66 c ------------------------------------------
67 if (iradswg.ne.0) then
68 do j=jm1,jm2
69 do i=im1,im2
70 qdiag(i,j,iradswg,bi,bj) = qdiag(i,j,iradswg,bi,bj) +
71 . radswg(i,j,bi,bj)*radswt(i,j,bi,bj)
72 enddo
73 enddo
74 endif
75
76 c Net Clear Sky Solar Radiation at the Ground (W/m**2)
77 c ----------------------------------------------------
78 if (iswgclr.ne.0) then
79 do j=jm1,jm2
80 do i=im1,im2
81 qdiag(i,j,iswgclr,bi,bj) = qdiag(i,j,iswgclr,bi,bj) +
82 . swgclr(i,j,bi,bj)*radswt(i,j,bi,bj)
83 enddo
84 enddo
85 endif
86
87 c Outgoing Solar Radiation at top (W/m**2)
88 c -----------------------------------------
89 if (iosr.ne.0) then
90 do j=jm1,jm2
91 do i=im1,im2
92 qdiag(i,j,iosr,bi,bj) = qdiag(i,j,iosr,bi,bj) +
93 . (1.0-osr(i,j,bi,bj))*radswt(i,j,bi,bj)
94 enddo
95 enddo
96 endif
97
98 c Outgoing Clear Sky Solar Radiation at top (W/m**2)
99 c ---------------------------------------------------
100 if (iosrclr.ne.0) then
101 do j=jm1,jm2
102 do i=im1,im2
103 qdiag(i,j,iosrclr,bi,bj) = qdiag(i,j,iosrclr,bi,bj) +
104 . (1.0-osrclr(i,j,bi,bj))*radswt(i,j,bi,bj)
105 enddo
106 enddo
107 endif
108
109 c Upward Longwave Flux at the Ground (W/m**2)
110 c -------------------------------------------
111 if (ilwgup.ne.0) then
112 do j=jm1,jm2
113 do i=im1,im2
114 qdiag(i,j,ilwgup,bi,bj) = qdiag(i,j,ilwgup,bi,bj) + st4(i,j,bi,bj)
115 . + dst4(i,j,bi,bj)*(tgz(i,j,bi,bj)-tg0(i,j,bi,bj))
116 enddo
117 enddo
118 endif
119
120 c Net Longwave Flux at the Ground (W/m**2)
121 c ----------------------------------------
122 if (iradlwg.ne.0) then
123 do j=jm1,jm2
124 do i=im1,im2
125 qdiag(i,j,iradlwg,bi,bj) = qdiag(i,j,iradlwg,bi,bj) +
126 . radlwg(i,j,bi,bj) +
127 . dst4(i,j,bi,bj)*(tgz(i,j,bi,bj)-tg0(i,j,bi,bj))
128 enddo
129 enddo
130 endif
131
132 c Net Longwave Flux at the Ground Clear Sky (W/m**2)
133 c --------------------------------------------------
134 if (ilwgclr.ne.0) then
135 do j=jm1,jm2
136 do i=im1,im2
137 qdiag(i,j,ilwgclr,bi,bj) = qdiag(i,j,ilwgclr,bi,bj) +
138 . lwgclr(i,j,bi,bj) +
139 . dst4(i,j,bi,bj)*(tgz(i,j,bi,bj)-tg0(i,j,bi,bj))
140 enddo
141 enddo
142 endif
143
144 nradswt = nradswt + 1
145 nradswg = nradswg + 1
146 nswgclr = nswgclr + 1
147 nosr = nosr + 1
148 nosrclr = nosrclr + 1
149 nradlwg = nradlwg + 1
150 nlwgclr = nlwgclr + 1
151 nlwgup = nlwgup + 1
152
153 C **********************************************************************
154 do L=1,Nrphys
155
156 c Total Diabatic U-Tendency (m/sec/day)
157 c -------------------------------------
158 if( idiabu.ne.0 ) then
159 do j=jm1,jm2
160 do i=im1,im2
161 qdiag(i,j,idiabu+L-1,bi,bj) = qdiag(i,j,idiabu+L-1,bi,bj)
162 . + ( moistu (i,j,L,bi,bj) + turbu(i,j,L,bi,bj) )*86400
163 enddo
164 enddo
165 endif
166
167 c Total Diabatic V-Tendency (m/sec/day)
168 c -------------------------------------
169 if( idiabv.ne.0 ) then
170 do j=jm1,jm2
171 do i=im1,im2
172 qdiag(i,j,idiabv+L-1,bi,bj) = qdiag(i,j,idiabv+L-1,bi,bj)
173 . + ( moistv (i,j,L,bi,bj) + turbv(i,j,L,bi,bj) )*86400
174 enddo
175 enddo
176 endif
177
178 c Total Diabatic T-Tendency (deg/day)
179 c -----------------------------------
180 if( idiabt.ne.0 ) then
181 do j=jm1,jm2
182 do i=im1,im2
183 qdiag(i,j,idiabt+L-1,bi,bj) = qdiag(i,j,idiabt+L-1,bi,bj) +
184 . ( turbt(i,j,L,bi,bj) + moistt(i,j,L,bi,bj) +
185 . lwdt(i,j,L,bi,bj) +
186 . dlwdtg(i,j,L,bi,bj)*(tgz(i,j,bi,bj)-tg0(i,j,bi,bj)) +
187 . swdt(i,j,L,bi,bj)*radswt(i,j,bi,bj) )
188 . * pk(i,j,L,bi,bj)*pinv(i,j)*86400
189 enddo
190 enddo
191 endif
192
193 c Total Diabatic Q-Tendency (g/kg/day)
194 c ------------------------------------
195 if( idiabq.ne.0 ) then
196 do j=jm1,jm2
197 do i=im1,im2
198 qdiag(i,j,idiabq+L-1,bi,bj) = qdiag(i,j,idiabq+L-1,bi,bj) +
199 . ( turbq(i,j,L,1,bi,bj) + moistq(i,j,L,1,bi,bj) ) *
200 . pinv(i,j)*86400*1000
201 enddo
202 enddo
203 endif
204
205 c Longwave Heating (deg/day)
206 c --------------------------
207 if (iradlw.ne.0) then
208 do j=jm1,jm2
209 do i=im1,im2
210 qdiag(i,j,iradlw+l-1,bi,bj) = qdiag(i,j,iradlw+l-1,bi,bj) +
211 . ( lwdt(i,j,l,bi,bj) +
212 . dlwdtg (i,j,L,bi,bj)*(tgz(i,j,bi,bj)-tg0(i,j,bi,bj)) )
213 . * pk(i,j,l,bi,bj)*pinv(i,j)*86400
214 enddo
215 enddo
216 endif
217
218 c Longwave Heating Clear-Sky (deg/day)
219 c ------------------------------------
220 if (ilwclr.ne.0) then
221 do j=jm1,jm2
222 do i=im1,im2
223 qdiag(i,j,ilwclr+l-1,bi,bj) = qdiag(i,j,ilwclr+l-1,bi,bj) +
224 . ( lwdtclr(i,j,l,bi,bj) +
225 . dlwdtg(i,j,L,bi,bj)*(tgz(i,j,bi,bj)-tg0(i,j,bi,bj)) )
226 . * pk(i,j,l,bi,bj)*pinv(i,j)*86400
227 enddo
228 enddo
229 endif
230
231 c Solar Radiative Heating (deg/day)
232 c ---------------------------------
233 if (iradsw.ne.0) then
234 do j=jm1,jm2
235 do i=im1,im2
236 qdiag(i,j,iradsw+l-1,bi,bj) = qdiag(i,j,iradsw+l-1,bi,bj) +
237 . + swdt(i,j,l,bi,bj)*radswt(i,j,bi,bj)*
238 . pk(i,j,l,bi,bj)*pinv(i,j)*86400
239 enddo
240 enddo
241 endif
242
243 c Clear Sky Solar Radiative Heating (deg/day)
244 c -------------------------------------------
245 if (iswclr.ne.0) then
246 do j=jm1,jm2
247 do i=im1,im2
248 qdiag(i,j,iswclr+l-1,bi,bj) = qdiag(i,j,iswclr+l-1,bi,bj) +
249 . swdtclr(i,j,l,bi,bj)*radswt(i,j,bi,bj)*
250 . pk(i,j,l,bi,bj)*pinv(i,j)*86400
251 enddo
252 enddo
253 endif
254
255 c Averaged U-Field (m/sec)
256 c ------------------------
257 if( iuwnd.ne.0 ) then
258 do j=jm1,jm2
259 do i=im1,im2
260 qdiag(i,j,iuwnd+L-1,bi,bj) = qdiag(i,j,iuwnd+L-1,bi,bj) +
261 . uphy(i,j,L,bi,bj)
262 enddo
263 enddo
264 endif
265
266 c Averaged V-Field (m/sec)
267 c ------------------------
268 if( ivwnd.ne.0 ) then
269 do j=jm1,jm2
270 do i=im1,im2
271 qdiag(i,j,ivwnd+L-1,bi,bj) = qdiag(i,j,ivwnd+L-1,bi,bj) +
272 . vphy(i,j,L,bi,bj)
273 enddo
274 enddo
275 endif
276
277 c Averaged T-Field (deg)
278 c ----------------------
279 if( itmpu.ne.0 ) then
280 do j=jm1,jm2
281 do i=im1,im2
282 qdiag(i,j,itmpu+L-1,bi,bj) = qdiag(i,j,itmpu+L-1,bi,bj) +
283 . thphy(i,j,L,bi,bj)*pk(i,j,L,bi,bj)
284 enddo
285 enddo
286 endif
287
288 c Averaged QQ-Field (m/sec)**2
289 c ----------------------------
290 if( itke.ne.0 ) then
291 do j=jm1,jm2
292 do i=im1,im2
293 qdiag(i,j,itke+L-1,bi,bj) = qdiag(i,j,itke+L-1,bi,bj) + qq(i,j,L)
294 enddo
295 enddo
296 endif
297
298 c Averaged Q-Field (g/kg)
299 c -----------------------
300 if( isphu.ne.0 ) then
301 do j=jm1,jm2
302 do i=im1,im2
303 qdiag(i,j,isphu+L-1,bi,bj) = qdiag(i,j,isphu+L-1,bi,bj) +
304 . sphy(i,j,L,bi,bj)*1000
305 enddo
306 enddo
307 endif
308
309 enddo
310
311 ndiabu = ndiabu + 1
312 ndiabv = ndiabv + 1
313 ndiabt = ndiabt + 1
314 ndiabq = ndiabq + 1
315 nradlw = nradlw + 1
316 nlwclr = nlwclr + 1
317 nradsw = nradsw + 1
318 nswclr = nswclr + 1
319 nuwnd = nuwnd + 1
320 nvwnd = nvwnd + 1
321 ntmpu = ntmpu + 1
322 ntke = ntke + 1
323 nsphu = nsphu + 1
324
325 C **********************************************************************
326
327 c Vertically Averaged Moist-T Increment (K/day)
328 c ---------------------------------------------
329 if( ivdtmoist.ne.0 ) then
330 do j=jm1,jm2
331 do i=im1,im2
332 qbar(i,j) = 0.0
333 enddo
334 enddo
335 do L=1,Nrphys
336 do j=jm1,jm2
337 do i=im1,im2
338 qbar(i,j) = qbar(i,j) +
339 . moistt(i,j,L,bi,bj)*pk(i,j,l,bi,bj)*dp(i,j,L,bi,bj)
340 enddo
341 enddo
342 enddo
343 do j=jm1,jm2
344 do i=im1,im2
345 qdiag(i,j,ivdtmoist,bi,bj) = qdiag(i,j,ivdtmoist,bi,bj) +
346 . qbar(i,j)*pinv(i,j)*pinv(i,j)*86400
347 enddo
348 enddo
349 endif
350
351 c Vertically Averaged Turb-T Increment (K/day)
352 c --------------------------------------------
353 if( ivdtturb.ne.0 ) then
354 do j=jm1,jm2
355 do i=im1,im2
356 qbar(i,j) = 0.0
357 enddo
358 enddo
359 do L=1,Nrphys
360 do j=jm1,jm2
361 do i=im1,im2
362 qbar(i,j) = qbar(i,j) +
363 . turbt(i,j,L,bi,bj)*pk(i,j,l,bi,bj)*dp(i,j,L,bi,bj)
364 enddo
365 enddo
366 enddo
367 do j=jm1,jm2
368 do i=im1,im2
369 qdiag(i,j,ivdtturb,bi,bj) = qdiag(i,j,ivdtturb,bi,bj) +
370 . qbar(i,j)*pinv(i,j)*pinv(i,j)*86400
371 enddo
372 enddo
373 endif
374
375 c Vertically Averaged RADLW Temperature Increment (K/day)
376 c -------------------------------------------------------
377 if( ivdtradlw.ne.0 ) then
378 do j=jm1,jm2
379 do i=im1,im2
380 qbar(i,j) = 0.0
381 enddo
382 enddo
383 do L=1,Nrphys
384 do j=jm1,jm2
385 do i=im1,im2
386 qbar(i,j) = qbar(i,j) + ( lwdt(i,j,L,bi,bj) +
387 . dlwdtg(i,j,L,bi,bj)*(tgz(i,j,bi,bj)-tg0(i,j,bi,bj)) )
388 . *pk(i,j,l,bi,bj)*dp(i,j,L,bi,bj)
389 enddo
390 enddo
391 enddo
392 do j=jm1,jm2
393 do i=im1,im2
394 qdiag(i,j,ivdtradlw,bi,bj) = qdiag(i,j,ivdtradlw,bi,bj) +
395 . qbar(i,j)*pinv(i,j)*pinv(i,j)*86400
396 enddo
397 enddo
398 endif
399
400 c Vertically Averaged RADSW Temperature Increment (K/day)
401 c -------------------------------------------------------
402 if( ivdtradsw.ne.0 ) then
403 do j=jm1,jm2
404 do i=im1,im2
405 qbar(i,j) = 0.0
406 enddo
407 enddo
408 do L=1,Nrphys
409 do j=jm1,jm2
410 do i=im1,im2
411 qbar(i,j) = qbar(i,j) +
412 . swdt(i,j,L,bi,bj)*pk(i,j,l,bi,bj)*dp(i,j,L,bi,bj)
413 enddo
414 enddo
415 enddo
416 do j=jm1,jm2
417 do i=im1,im2
418 qdiag(i,j,ivdtradsw,bi,bj) = qdiag(i,j,ivdtradsw,bi,bj) +
419 . qbar(i,j)*radswt(i,j,bi,bj)*pinv(i,j)*pinv(i,j)*86400
420 enddo
421 enddo
422 endif
423
424 nvdtmoist = nvdtmoist + 1
425 nvdtturb = nvdtturb + 1
426 nvdtradlw = nvdtradlw + 1
427 nvdtradsw = nvdtradsw + 1
428
429 return
430 end

  ViewVC Help
Powered by ViewVC 1.1.22