/[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.3 - (show annotations) (download)
Tue Jul 13 18:26:45 2004 UTC (19 years, 11 months ago) by molod
Branch: MAIN
Changes since 1.2: +3 -1 lines
Debugging - get routines to compile

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

  ViewVC Help
Powered by ViewVC 1.1.22