/[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.31 - (show annotations) (download)
Sun Jun 25 23:06:24 2006 UTC (17 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58l_post, checkpoint58n_post, checkpoint58o_post, checkpoint58k_post, checkpoint58m_post
Changes since 1.30: +37 -49 lines
main diagnostics list: define title of isomorphic variables
  (+remove units in title) according to the current config.

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

  ViewVC Help
Powered by ViewVC 1.1.22