/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_fill_state.F
ViewVC logotype

Contents of /MITgcm/pkg/diagnostics/diagnostics_fill_state.F

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


Revision 1.37 - (show annotations) (download)
Tue Apr 22 22:01:01 2008 UTC (16 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59q
Changes since 1.36: +8 -2 lines
add diagnostics for non-hydrostatic pressure

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.36 2007/07/11 15:11:05 molod Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: DIAGNOSTICS_FILL_STATE
8 C !INTERFACE:
9 SUBROUTINE DIAGNOSTICS_FILL_STATE( selectVars, myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE DIAGNOSTICS_FILL_STATE
14 C | o Fill-in main code, state-variables diagnostics
15 C *==========================================================*
16 C \ev
17
18 C !USES:
19 IMPLICIT NONE
20 C == Global variables ===
21 #include "SIZE.h"
22 #include "EEPARAMS.h"
23 #include "PARAMS.h"
24 #include "GRID.h"
25 #include "SURFACE.h"
26 #include "DYNVARS.h"
27 #include "NH_VARS.h"
28
29 C !INPUT/OUTPUT PARAMETERS:
30 C == Routine arguments ==
31 C selectVars :: select which group of dianostics variables to fill-in
32 C = 1 :: fill-in diagnostics for tracer variables only
33 C = 2 :: fill-in diagnostics for momentum variables only
34 C = 3 :: fill-in diagnostics for momentum & tracer variables
35 C = 4 :: fill-in state variable tendency diagnostics the second time
36 C myThid :: my Thread Id number
37 INTEGER selectVars
38 INTEGER myThid
39
40 #ifdef ALLOW_DIAGNOSTICS
41 C !LOCAL VARIABLES:
42 C == Local variables ==
43 LOGICAL DIAGNOSTICS_IS_ON
44 EXTERNAL DIAGNOSTICS_IS_ON
45 _RL tmpMk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
46 _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
47 _RL tmpFac, uBarC, vBarC
48 #ifdef ALLOW_FIZHI
49 _RL dummy1, dummy2, dummy3, dummy4, kappa, getcon
50 #endif
51 INTEGER i,j,K,bi,bj
52 INTEGER km1
53
54 tmpFac = 1. _d 0
55
56 IF ( selectVars.EQ.2 .OR. selectVars.EQ.3 ) THEN
57 C-- fill momentum state-var diagnostics:
58
59 CALL DIAGNOSTICS_FILL(etaN, 'ETAN ',0, 1,0,1,1,myThid)
60
61 IF ( DIAGNOSTICS_IS_ON('RSURF ',myThid) ) THEN
62 DO bj = myByLo(myThid), myByHi(myThid)
63 DO bi = myBxLo(myThid), myBxHi(myThid)
64 DO j = 1,sNy
65 DO i = 1,sNx
66 tmp1k(i,j,bi,bj) = Ro_surf(i,j,bi,bj) + etaH(i,j,bi,bj)
67 ENDDO
68 ENDDO
69 ENDDO
70 ENDDO
71 CALL DIAGNOSTICS_FILL(tmp1k,'RSURF ',0,1,0,1,1,myThid)
72 ENDIF
73
74 CALL DIAGNOSTICS_SCALE_FILL(etaN,tmpFac,2,
75 & 'ETANSQ ',0, 1,0,1,1,myThid)
76
77 #ifdef EXACT_CONSERV
78 CALL DIAGNOSTICS_SCALE_FILL(dEtaHdt,tmpFac,2,
79 & 'DETADT2 ',0, 1,0,1,1,myThid)
80 #endif
81 #ifdef ALLOW_NONHYDROSTATIC
82 IF ( use3Dsolver ) THEN
83 CALL DIAGNOSTICS_FILL( phi_nh,'PHI_NH ',0,Nr,0,1,1,myThid )
84 ENDIF
85 #endif
86
87 CALL DIAGNOSTICS_FILL(uVel, 'UVEL ',0,Nr,0,1,1,myThid)
88 CALL DIAGNOSTICS_FILL(vVel, 'VVEL ',0,Nr,0,1,1,myThid)
89 CALL DIAGNOSTICS_FILL(wVel, 'WVEL ',0,Nr,0,1,1,myThid)
90
91 CALL DIAGNOSTICS_SCALE_FILL(uVel,tmpFac,2,
92 & 'UVELSQ ',0,Nr,0,1,1,myThid)
93 CALL DIAGNOSTICS_SCALE_FILL(vVel,tmpFac,2,
94 & 'VVELSQ ',0,Nr,0,1,1,myThid)
95 CALL DIAGNOSTICS_SCALE_FILL(wVel,tmpFac,2,
96 & 'WVELSQ ',0,Nr,0,1,1,myThid)
97
98 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
99
100 IF ( DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN
101 DO bj = myByLo(myThid), myByHi(myThid)
102 DO bi = myBxLo(myThid), myBxHi(myThid)
103 DO K=1,Nr
104 DO j = 1,sNy
105 DO i = 1,sNx
106 uBarC = 0.5 _d 0
107 & *(uVel(i,j,K,bi,bj)+uVel(i+1,j,K,bi,bj))
108 vBarC = 0.5 _d 0
109 & *(vVel(i,j,K,bi,bj)+vVel(i,j+1,K,bi,bj))
110 tmpMk(i,j,K,bi,bj) =
111 & ( angleCosC(i,j,bi,bj)*uBarC
112 & -angleSinC(i,j,bi,bj)*vBarC )
113 & *( angleSinC(i,j,bi,bj)*uBarC
114 & +angleCosC(i,j,bi,bj)*vBarC )
115 ENDDO
116 ENDDO
117 ENDDO
118 ENDDO
119 ENDDO
120 CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_C',0,Nr,0,1,1,myThid)
121 ENDIF
122
123 IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN
124 DO bj = myByLo(myThid), myByHi(myThid)
125 DO bi = myBxLo(myThid), myBxHi(myThid)
126 DO K=1,Nr
127 DO j = 1,sNy+1
128 DO i = 1,sNx+1
129 tmpMk(i,j,K,bi,bj) = 0.25 _d 0
130 & *(uVel(i,j-1,K,bi,bj)+uVel(i,j,K,bi,bj))
131 & *(vVel(i-1,j,K,bi,bj)+vVel(i,j,K,bi,bj))
132 ENDDO
133 ENDDO
134 ENDDO
135 ENDDO
136 ENDDO
137 CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_Z',0,Nr,0,1,1,myThid)
138 ENDIF
139
140 IF ( DIAGNOSTICS_IS_ON('WU_VEL ',myThid) ) THEN
141 DO bj = myByLo(myThid), myByHi(myThid)
142 DO bi = myBxLo(myThid), myBxHi(myThid)
143 DO K=1,Nr
144 km1 = MAX(k-1,1)
145 DO j = 1,sNy
146 DO i = 1,sNx+1
147 tmpMk(i,j,K,bi,bj) = 0.25 _d 0
148 & *(uVel(i,j,km1,bi,bj)+uVel(i,j,K,bi,bj))
149 & *(wVel(i-1,j,K,bi,bj)*rA(i-1,j,bi,bj)
150 & +wVel( i ,j,K,bi,bj)*rA( i ,j,bi,bj)
151 & )*recip_rAw(i,j,bi,bj)
152 ENDDO
153 ENDDO
154 ENDDO
155 ENDDO
156 ENDDO
157 CALL DIAGNOSTICS_FILL(tmpMk,'WU_VEL ',0,Nr,0,1,1,myThid)
158 ENDIF
159
160 IF ( DIAGNOSTICS_IS_ON('WV_VEL ',myThid) ) THEN
161 DO bj = myByLo(myThid), myByHi(myThid)
162 DO bi = myBxLo(myThid), myBxHi(myThid)
163 DO K=1,Nr
164 km1 = MAX(k-1,1)
165 DO j = 1,sNy+1
166 DO i = 1,sNx
167 tmpMk(i,j,K,bi,bj) = 0.25 _d 0
168 & *(vVel(i,j,km1,bi,bj)+vVel(i,j,K,bi,bj))
169 & *(wVel(i,j-1,K,bi,bj)*rA(i,j-1,bi,bj)
170 & +wVel(i, j ,K,bi,bj)*rA(i, j ,bi,bj)
171 & )*recip_rAs(i,j,bi,bj)
172 ENDDO
173 ENDDO
174 ENDDO
175 ENDDO
176 ENDDO
177 CALL DIAGNOSTICS_FILL(tmpMk,'WV_VEL ',0,Nr,0,1,1,myThid)
178 ENDIF
179
180 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
181
182 IF ( DIAGNOSTICS_IS_ON('UVELTH ',myThid) ) THEN
183 DO bj = myByLo(myThid), myByHi(myThid)
184 DO bi = myBxLo(myThid), myBxHi(myThid)
185 DO K=1,Nr
186 DO j = 1,sNy
187 DO i = 1,sNx+1
188 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
189 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
190 ENDDO
191 ENDDO
192 ENDDO
193 ENDDO
194 ENDDO
195 CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH ',0,Nr,0,1,1,myThid)
196 ENDIF
197
198 IF ( DIAGNOSTICS_IS_ON('VVELTH ',myThid) ) THEN
199 DO bj = myByLo(myThid), myByHi(myThid)
200 DO bi = myBxLo(myThid), myBxHi(myThid)
201 DO K=1,Nr
202 DO j = 1,sNy+1
203 DO i = 1,sNx
204 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
205 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
206 ENDDO
207 ENDDO
208 ENDDO
209 ENDDO
210 ENDDO
211 CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH ',0,Nr,0,1,1,myThid)
212 ENDIF
213
214 IF ( DIAGNOSTICS_IS_ON('WVELTH ',myThid) ) THEN
215 DO bj = myByLo(myThid), myByHi(myThid)
216 DO bi = myBxLo(myThid), myBxHi(myThid)
217 DO K=1,Nr
218 km1 = MAX(k-1,1)
219 DO j = 1,sNy
220 DO i = 1,sNx
221 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
222 & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
223 ENDDO
224 ENDDO
225 ENDDO
226 ENDDO
227 ENDDO
228 CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
229 ENDIF
230
231 IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
232 DO bj = myByLo(myThid), myByHi(myThid)
233 DO bi = myBxLo(myThid), myBxHi(myThid)
234 DO K=1,Nr
235 DO j = 1,sNy
236 DO i = 1,sNx+1
237 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
238 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
239 ENDDO
240 ENDDO
241 ENDDO
242 ENDDO
243 ENDDO
244 CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
245 ENDIF
246
247 IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
248 DO bj = myByLo(myThid), myByHi(myThid)
249 DO bi = myBxLo(myThid), myBxHi(myThid)
250 DO K=1,Nr
251 DO j = 1,sNy+1
252 DO i = 1,sNx
253 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
254 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
255 ENDDO
256 ENDDO
257 ENDDO
258 ENDDO
259 ENDDO
260 CALL DIAGNOSTICS_FILL(tmpMk,'VVELSLT ',0,Nr,0,1,1,myThid)
261 ENDIF
262
263 IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN
264 DO bj = myByLo(myThid), myByHi(myThid)
265 DO bi = myBxLo(myThid), myBxHi(myThid)
266 DO K=1,Nr
267 km1 = MAX(k-1,1)
268 DO j = 1,sNy
269 DO i = 1,sNx
270 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
271 & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
272 ENDDO
273 ENDDO
274 ENDDO
275 ENDDO
276 ENDDO
277 CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
278 ENDIF
279
280 IF ( DIAGNOSTICS_IS_ON('UVELPHI ',myThid) ) THEN
281 DO bj = myByLo(myThid), myByHi(myThid)
282 DO bi = myBxLo(myThid), myBxHi(myThid)
283 DO K=1,Nr
284 DO j = 1,sNy
285 DO i = 1,sNx+1
286 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*hFacW(i,j,k,bi,bj)
287 & *0.5 _d 0*(totPhiHyd(i,j,K,bi,bj)+totPhiHyd(i-1,j,K,bi,bj))
288 ENDDO
289 ENDDO
290 ENDDO
291 ENDDO
292 ENDDO
293 CALL DIAGNOSTICS_FILL(tmpMk,'UVELPHI ',0,Nr,0,1,1,myThid)
294 ENDIF
295
296 IF ( DIAGNOSTICS_IS_ON('VVELPHI ',myThid) ) THEN
297 DO bj = myByLo(myThid), myByHi(myThid)
298 DO bi = myBxLo(myThid), myBxHi(myThid)
299 DO K=1,Nr
300 DO j = 1,sNy+1
301 DO i = 1,sNx
302 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*hFacS(i,j,k,bi,bj)
303 & *0.5 _d 0*(totPhiHyd(i,j,K,bi,bj)+totPhiHyd(i,j-1,K,bi,bj))
304 ENDDO
305 ENDDO
306 ENDDO
307 ENDDO
308 ENDDO
309 CALL DIAGNOSTICS_FILL(tmpMk,'VVELPHI ',0,Nr,0,1,1,myThid)
310 ENDIF
311
312 IF ( DIAGNOSTICS_IS_ON('RCENTER ',myThid) ) THEN
313 DO bj = myByLo(myThid), myByHi(myThid)
314 DO bi = myBxLo(myThid), myBxHi(myThid)
315 DO j = 1,sNy
316 DO i = 1,sNx
317 tmp1k(i,j,bi,bj) = R_low(i,j,bi,bj)
318 ENDDO
319 ENDDO
320 DO k = Nr,1,-1
321 DO j = 1,sNy
322 DO i = 1,sNx
323 tmpMk(i,j,k,bi,bj) = tmp1k(i,j,bi,bj)
324 & + (rF(k)-rC(k))*hFacC(i,j,k,bi,bj)
325 C above: more general (setInterFDr/setCenterDr) than line below
326 c & + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0
327 tmp1k(i,j,bi,bj) = tmp1k(i,j,bi,bj)
328 & + drF(k)*hFacC(i,j,k,bi,bj)
329 ENDDO
330 ENDDO
331 ENDDO
332 ENDDO
333 ENDDO
334 CALL DIAGNOSTICS_FILL(tmpMk,'RCENTER ',0,Nr,0,1,1,myThid)
335 ENDIF
336
337 C First fill sequence for state variable tendency diagnostics: subtract state variable
338 C NOTE: send a '0' for the bibjflag and allow counter to be incremented
339 C (next fill for these diagnostics will NOT allow counter to be incremented)
340
341 IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
342 DO bj = myByLo(myThid), myByHi(myThid)
343 DO bi = myBxLo(myThid), myBxHi(myThid)
344 DO K=1,Nr
345 DO j = 1,sNy
346 DO i = 1,sNx+1
347 tmpMk(i,j,K,bi,bj) = -uVel(i,j,K,bi,bj)
348 . *86400./dTtracerLev(1)
349 ENDDO
350 ENDDO
351 ENDDO
352 ENDDO
353 ENDDO
354 CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,0,1,1,myThid)
355 ENDIF
356
357 IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
358 DO bj = myByLo(myThid), myByHi(myThid)
359 DO bi = myBxLo(myThid), myBxHi(myThid)
360 DO K=1,Nr
361 DO j = 1,sNy+1
362 DO i = 1,sNx
363 tmpMk(i,j,K,bi,bj) = -vVel(i,j,K,bi,bj)
364 . *86400./dTtracerLev(1)
365 ENDDO
366 ENDDO
367 ENDDO
368 ENDDO
369 ENDDO
370 CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,0,1,1,myThid)
371 ENDIF
372
373 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
374 DO bj = myByLo(myThid), myByHi(myThid)
375 DO bi = myBxLo(myThid), myBxHi(myThid)
376 DO K=1,Nr
377 DO j = 1,sNy
378 DO i = 1,sNx
379 tmpMk(i,j,K,bi,bj) = -theta(i,j,K,bi,bj)
380 . *86400./dTtracerLev(1)
381 ENDDO
382 ENDDO
383 ENDDO
384 ENDDO
385 ENDDO
386 CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
387 ENDIF
388
389 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
390 DO bj = myByLo(myThid), myByHi(myThid)
391 DO bi = myBxLo(myThid), myBxHi(myThid)
392 DO K=1,Nr
393 DO j = 1,sNy
394 DO i = 1,sNx
395 tmpMk(i,j,K,bi,bj) = -salt(i,j,K,bi,bj)
396 . *86400./dTtracerLev(1)
397 ENDDO
398 ENDDO
399 ENDDO
400 ENDDO
401 ENDDO
402 CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
403 ENDIF
404
405 C-- fill momentum state-var diagnostics: end
406 ENDIF
407
408 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
409
410 IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
411 C-- fill tracer state-var diagnostics:
412
413 CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
414 CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
415
416 #ifdef ALLOW_FIZHI
417 IF((useFIZHI).and.(DIAGNOSTICS_IS_ON('RELHUM ',myThid)))THEN
418 kappa = getcon('KAPPA')
419 do bj = myByLo(myThid), myByHi(myThid)
420 do bi = myBxLo(myThid), myBxHi(myThid)
421 do j = 1,sNy
422 do i = 1,sNx
423 do K = 1,Nr
424 dummy1 = theta(i,j,k,bi,bj) * ((rc(k)/100.)/1000.)**kappa
425 dummy2 = rc(k) / 100.
426 call qsat(dummy1,dummy2,dummy3,dummy4,.false.)
427 tmpMk(i,j,K,bi,bj) = hfacC(i,j,K,bi,bj) *
428 . salt(i,j,k,bi,bj) * 100. / dummy3
429 enddo
430 enddo
431 enddo
432 enddo
433 enddo
434 CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
435 ENDIF
436 #endif /* ALLOW_FIZHI */
437
438 CALL DIAGNOSTICS_SCALE_FILL(theta,tmpFac,2,
439 & 'THETASQ ',0,Nr,0,1,1,myThid)
440 CALL DIAGNOSTICS_SCALE_FILL(salt,tmpFac,2,
441 & 'SALTSQ ',0,Nr,0,1,1,myThid)
442
443 c IF ( DIAGNOSTICS_IS_ON('SST ',myThid) ) THEN
444 c DO bj = myByLo(myThid), myByHi(myThid)
445 c DO bi = myBxLo(myThid), myBxHi(myThid)
446 c DO j = 1,sNy
447 c DO i = 1,sNx
448 c tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)
449 c ENDDO
450 c ENDDO
451 c ENDDO
452 c ENDDO
453 c CALL DIAGNOSTICS_FILL(tmp1k,'SST ',0,1,0,1,1,myThid)
454 c ENDIF
455
456 c IF ( DIAGNOSTICS_IS_ON('SSS ',myThid) ) THEN
457 c DO bj = myByLo(myThid), myByHi(myThid)
458 c DO bi = myBxLo(myThid), myBxHi(myThid)
459 c DO j = 1,sNy
460 c DO i = 1,sNx
461 c tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)
462 c ENDDO
463 c ENDDO
464 c ENDDO
465 c ENDDO
466 c CALL DIAGNOSTICS_FILL(tmp1k,'SSS ',0,1,0,1,1,myThid)
467 c ENDIF
468
469 IF ( fluidIsWater .AND.
470 & ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
471 & .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
472 DO bj = myByLo(myThid), myByHi(myThid)
473 DO bi = myBxLo(myThid), myBxHi(myThid)
474 DO K=1,Nr
475 DO j = 1,sNy
476 DO i = 1,sNx
477 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35. _d 0
478 ENDDO
479 ENDDO
480 ENDDO
481 ENDDO
482 ENDDO
483 CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
484 CALL DIAGNOSTICS_SCALE_FILL(tmpMk,tmpFac,2,
485 & 'SALTSQan',0,Nr,0,1,1,myThid)
486 ENDIF
487
488 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
489
490 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
491 DO bj = myByLo(myThid), myByHi(myThid)
492 DO bi = myBxLo(myThid), myBxHi(myThid)
493 DO K=1,Nr
494 DO j = 1,sNy
495 DO i = 1,sNx+1
496 tmpMk(i,j,K,bi,bj)
497 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
498 ENDDO
499 ENDDO
500 ENDDO
501 ENDDO
502 ENDDO
503 CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
504 ENDIF
505
506 IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
507 DO bj = myByLo(myThid), myByHi(myThid)
508 DO bi = myBxLo(myThid), myBxHi(myThid)
509 DO K=1,Nr
510 DO j = 1,sNy+1
511 DO i = 1,sNx
512 tmpMk(i,j,K,bi,bj)
513 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
514 ENDDO
515 ENDDO
516 ENDDO
517 ENDDO
518 ENDDO
519 CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
520 ENDIF
521
522 CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
523
524 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
525 DO bj = myByLo(myThid), myByHi(myThid)
526 DO bi = myBxLo(myThid), myBxHi(myThid)
527 DO K=1,Nr
528 DO j = 1,sNy
529 DO i = 1,sNx+1
530 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
531 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
532 & * hFacW(i,j,K,bi,bj)
533 ENDDO
534 ENDDO
535 ENDDO
536 ENDDO
537 ENDDO
538 CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
539 ENDIF
540
541 IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
542 DO bj = myByLo(myThid), myByHi(myThid)
543 DO bi = myBxLo(myThid), myBxHi(myThid)
544 DO K=1,Nr
545 DO j = 1,sNy+1
546 DO i = 1,sNx
547 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
548 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
549 & * hFacS(i,j,K,bi,bj)
550 ENDDO
551 ENDDO
552 ENDDO
553 ENDDO
554 ENDDO
555 CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
556 ENDIF
557
558 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
559 DO bj = myByLo(myThid), myByHi(myThid)
560 DO bi = myBxLo(myThid), myBxHi(myThid)
561 DO K=1,Nr
562 km1 = MAX(k-1,1)
563 DO j = 1,sNy
564 DO i = 1,sNx
565 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
566 & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
567 ENDDO
568 ENDDO
569 ENDDO
570 ENDDO
571 ENDDO
572 CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
573 ENDIF
574
575 IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
576 DO bj = myByLo(myThid), myByHi(myThid)
577 DO bi = myBxLo(myThid), myBxHi(myThid)
578 DO K=1,Nr
579 DO j = 1,sNy
580 DO i = 1,sNx+1
581 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
582 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
583 & * hFacW(i,j,K,bi,bj)
584 ENDDO
585 ENDDO
586 ENDDO
587 ENDDO
588 ENDDO
589 CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
590 ENDIF
591
592 IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
593 DO bj = myByLo(myThid), myByHi(myThid)
594 DO bi = myBxLo(myThid), myBxHi(myThid)
595 DO K=1,Nr
596 DO j = 1,sNy+1
597 DO i = 1,sNx
598 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
599 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
600 & * hFacS(i,j,K,bi,bj)
601 ENDDO
602 ENDDO
603 ENDDO
604 ENDDO
605 ENDDO
606 CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
607 ENDIF
608
609 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
610 DO bj = myByLo(myThid), myByHi(myThid)
611 DO bi = myBxLo(myThid), myBxHi(myThid)
612 DO K=1,Nr
613 km1 = MAX(k-1,1)
614 DO j = 1,sNy
615 DO i = 1,sNx
616 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
617 & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
618 ENDDO
619 ENDDO
620 ENDDO
621 ENDDO
622 ENDDO
623 CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
624 ENDIF
625
626 C-- fill tracer state-var diagnostics: end
627 ENDIF
628
629 IF ( selectVars.EQ.4 ) THEN
630 C Second fill sequence for state variable tendency diagnostics: add state variable
631 C NOTE: send a '-1' for the bibjflag and allow counter to be incremented
632 C this means that diag fill is called from inside the bi-bj loop
633
634 IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
635 DO bj = myByLo(myThid), myByHi(myThid)
636 DO bi = myBxLo(myThid), myBxHi(myThid)
637 DO K=1,Nr
638 DO j = 1,sNy
639 DO i = 1,sNx+1
640 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)
641 . *86400./dTtracerLev(1)
642 ENDDO
643 ENDDO
644 ENDDO
645 CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,-1,bi,bj,myThid)
646 ENDDO
647 ENDDO
648 ENDIF
649
650 IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
651 DO bj = myByLo(myThid), myByHi(myThid)
652 DO bi = myBxLo(myThid), myBxHi(myThid)
653 DO K=1,Nr
654 DO j = 1,sNy+1
655 DO i = 1,sNx
656 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)
657 . *86400./dTtracerLev(1)
658 ENDDO
659 ENDDO
660 ENDDO
661 CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,-1,bi,bj,myThid)
662 ENDDO
663 ENDDO
664 ENDIF
665
666 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
667 DO bj = myByLo(myThid), myByHi(myThid)
668 DO bi = myBxLo(myThid), myBxHi(myThid)
669 DO K=1,Nr
670 DO j = 1,sNy
671 DO i = 1,sNx
672 tmpMk(i,j,K,bi,bj) = theta(i,j,K,bi,bj)
673 . *86400./dTtracerLev(1)
674 ENDDO
675 ENDDO
676 ENDDO
677 CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
678 ENDDO
679 ENDDO
680 ENDIF
681
682 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
683 DO bj = myByLo(myThid), myByHi(myThid)
684 DO bi = myBxLo(myThid), myBxHi(myThid)
685 DO K=1,Nr
686 DO j = 1,sNy
687 DO i = 1,sNx
688 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)
689 . *86400./dTtracerLev(1)
690 ENDDO
691 ENDDO
692 ENDDO
693 CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
694 ENDDO
695 ENDDO
696 ENDIF
697
698 C-- fill state tendency diagnostics the second time: end
699 ENDIF
700
701 #endif /* ALLOW_DIAGNOSTICS */
702
703 RETURN
704 END

  ViewVC Help
Powered by ViewVC 1.1.22