/[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.34 - (show annotations) (download)
Sun Dec 24 20:07:02 2006 UTC (17 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58u_post, checkpoint58t_post
Changes since 1.33: +4 -2 lines
a more general form for diagnostic "RCENTER"

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.33 2006/11/19 22:03:13 jmc 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)*hFacW(i,j,k,bi,bj)
281 & *0.5 _d 0*(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)*hFacS(i,j,k,bi,bj)
297 & *0.5 _d 0*(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('RCENTER ',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 & + (rF(k)-rC(k))*hFacC(i,j,k,bi,bj)
319 C above: more general (setInterFDr/setCenterDr) than line below
320 c & + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0
321 tmp1k(i,j,bi,bj) = tmp1k(i,j,bi,bj)
322 & + drF(k)*hFacC(i,j,k,bi,bj)
323 ENDDO
324 ENDDO
325 ENDDO
326 ENDDO
327 ENDDO
328 CALL DIAGNOSTICS_FILL(tmpMk,'RCENTER ',0,Nr,0,1,1,myThid)
329 ENDIF
330
331 C First fill sequence for state variable tendency diagnostics: subtract state variable
332 C NOTE: send a '0' for the bibjflag and allow counter to be incremented
333 C (next fill for these diagnostics will NOT allow counter to be incremented)
334
335 IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
336 DO bj = myByLo(myThid), myByHi(myThid)
337 DO bi = myBxLo(myThid), myBxHi(myThid)
338 DO K=1,Nr
339 DO j = 1,sNy
340 DO i = 1,sNx
341 tmpMk(i,j,K,bi,bj) = -uVel(i,j,K,bi,bj)*
342 . *86400./dTtracerLev(1)
343 ENDDO
344 ENDDO
345 ENDDO
346 ENDDO
347 ENDDO
348 CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,0,1,1,myThid)
349 ENDIF
350
351 IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
352 DO bj = myByLo(myThid), myByHi(myThid)
353 DO bi = myBxLo(myThid), myBxHi(myThid)
354 DO K=1,Nr
355 DO j = 1,sNy
356 DO i = 1,sNx
357 tmpMk(i,j,K,bi,bj) = -vVel(i,j,K,bi,bj)
358 . *86400./dTtracerLev(1)
359 ENDDO
360 ENDDO
361 ENDDO
362 ENDDO
363 ENDDO
364 CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,0,1,1,myThid)
365 ENDIF
366
367 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
368 DO bj = myByLo(myThid), myByHi(myThid)
369 DO bi = myBxLo(myThid), myBxHi(myThid)
370 DO K=1,Nr
371 DO j = 1,sNy
372 DO i = 1,sNx
373 tmpMk(i,j,K,bi,bj) = -theta(i,j,K,bi,bj)
374 . *86400./dTtracerLev(1)
375 ENDDO
376 ENDDO
377 ENDDO
378 ENDDO
379 ENDDO
380 CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
381 ENDIF
382
383 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
384 DO bj = myByLo(myThid), myByHi(myThid)
385 DO bi = myBxLo(myThid), myBxHi(myThid)
386 DO K=1,Nr
387 DO j = 1,sNy
388 DO i = 1,sNx
389 tmpMk(i,j,K,bi,bj) = -salt(i,j,K,bi,bj)
390 . *86400./dTtracerLev(1)
391 ENDDO
392 ENDDO
393 ENDDO
394 ENDDO
395 ENDDO
396 CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
397 ENDIF
398
399 C-- fill momentum state-var diagnostics: end
400 ENDIF
401
402 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
403
404 IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
405 C-- fill tracer state-var diagnostics:
406
407 CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
408 CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
409
410 #ifdef ALLOW_FIZHI
411 IF((useFIZHI).and.(DIAGNOSTICS_IS_ON('RELHUM ',myThid)))THEN
412 kappa = getcon('KAPPA')
413 do bj = myByLo(myThid), myByHi(myThid)
414 do bi = myBxLo(myThid), myBxHi(myThid)
415 do j = 1,sNy
416 do i = 1,sNx
417 do K = 1,Nr
418 dummy1 = theta(i,j,k,bi,bj) * ((rc(k)/100.)/1000.)**kappa
419 dummy2 = rc(k) / 100.
420 call qsat(dummy1,dummy2,dummy3,dummy4,.false.)
421 tmpMk(i,j,K,bi,bj) = hfacC(i,j,K,bi,bj) *
422 . salt(i,j,k,bi,bj) * 100. / dummy3
423 enddo
424 enddo
425 enddo
426 enddo
427 enddo
428 CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
429 ENDIF
430 #endif /* ALLOW_FIZHI */
431
432 CALL DIAGNOSTICS_SCALE_FILL(theta,tmpFac,2,
433 & 'THETASQ ',0,Nr,0,1,1,myThid)
434 CALL DIAGNOSTICS_SCALE_FILL(salt,tmpFac,2,
435 & 'SALTSQ ',0,Nr,0,1,1,myThid)
436
437 c IF ( DIAGNOSTICS_IS_ON('SST ',myThid) ) THEN
438 c DO bj = myByLo(myThid), myByHi(myThid)
439 c DO bi = myBxLo(myThid), myBxHi(myThid)
440 c DO j = 1,sNy
441 c DO i = 1,sNx
442 c tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)
443 c ENDDO
444 c ENDDO
445 c ENDDO
446 c ENDDO
447 c CALL DIAGNOSTICS_FILL(tmp1k,'SST ',0,1,0,1,1,myThid)
448 c ENDIF
449
450 c IF ( DIAGNOSTICS_IS_ON('SSS ',myThid) ) THEN
451 c DO bj = myByLo(myThid), myByHi(myThid)
452 c DO bi = myBxLo(myThid), myBxHi(myThid)
453 c DO j = 1,sNy
454 c DO i = 1,sNx
455 c tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)
456 c ENDDO
457 c ENDDO
458 c ENDDO
459 c ENDDO
460 c CALL DIAGNOSTICS_FILL(tmp1k,'SSS ',0,1,0,1,1,myThid)
461 c ENDIF
462
463 IF ( fluidIsWater .AND.
464 & ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
465 & .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
466 DO bj = myByLo(myThid), myByHi(myThid)
467 DO bi = myBxLo(myThid), myBxHi(myThid)
468 DO K=1,Nr
469 DO j = 1,sNy
470 DO i = 1,sNx
471 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35. _d 0
472 ENDDO
473 ENDDO
474 ENDDO
475 ENDDO
476 ENDDO
477 CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
478 CALL DIAGNOSTICS_SCALE_FILL(tmpMk,tmpFac,2,
479 & 'SALTSQan',0,Nr,0,1,1,myThid)
480 ENDIF
481
482 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
483
484 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
485 DO bj = myByLo(myThid), myByHi(myThid)
486 DO bi = myBxLo(myThid), myBxHi(myThid)
487 DO K=1,Nr
488 DO j = 1,sNy
489 DO i = 1,sNx
490 tmpMk(i,j,K,bi,bj)
491 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
492 ENDDO
493 ENDDO
494 ENDDO
495 ENDDO
496 ENDDO
497 CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
498 ENDIF
499
500 IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
501 DO bj = myByLo(myThid), myByHi(myThid)
502 DO bi = myBxLo(myThid), myBxHi(myThid)
503 DO K=1,Nr
504 DO j = 1,sNy
505 DO i = 1,sNx
506 tmpMk(i,j,K,bi,bj)
507 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
508 ENDDO
509 ENDDO
510 ENDDO
511 ENDDO
512 ENDDO
513 CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
514 ENDIF
515
516 CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
517
518 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
519 DO bj = myByLo(myThid), myByHi(myThid)
520 DO bi = myBxLo(myThid), myBxHi(myThid)
521 DO K=1,Nr
522 DO j = 1,sNy
523 DO i = 1,sNx+1
524 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
525 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
526 & * hFacW(i,j,K,bi,bj)
527 ENDDO
528 ENDDO
529 ENDDO
530 ENDDO
531 ENDDO
532 CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
533 ENDIF
534
535 IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
536 DO bj = myByLo(myThid), myByHi(myThid)
537 DO bi = myBxLo(myThid), myBxHi(myThid)
538 DO K=1,Nr
539 DO j = 1,sNy+1
540 DO i = 1,sNx
541 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
542 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
543 & * hFacS(i,j,K,bi,bj)
544 ENDDO
545 ENDDO
546 ENDDO
547 ENDDO
548 ENDDO
549 CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
550 ENDIF
551
552 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
553 DO bj = myByLo(myThid), myByHi(myThid)
554 DO bi = myBxLo(myThid), myBxHi(myThid)
555 DO K=1,Nr
556 km1 = MAX(k-1,1)
557 DO j = 1,sNy
558 DO i = 1,sNx
559 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
560 & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
561 ENDDO
562 ENDDO
563 ENDDO
564 ENDDO
565 ENDDO
566 CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
567 ENDIF
568
569 IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
570 DO bj = myByLo(myThid), myByHi(myThid)
571 DO bi = myBxLo(myThid), myBxHi(myThid)
572 DO K=1,Nr
573 DO j = 1,sNy
574 DO i = 1,sNx+1
575 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
576 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
577 & * hFacW(i,j,K,bi,bj)
578 ENDDO
579 ENDDO
580 ENDDO
581 ENDDO
582 ENDDO
583 CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
584 ENDIF
585
586 IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
587 DO bj = myByLo(myThid), myByHi(myThid)
588 DO bi = myBxLo(myThid), myBxHi(myThid)
589 DO K=1,Nr
590 DO j = 1,sNy+1
591 DO i = 1,sNx
592 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
593 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
594 & * hFacS(i,j,K,bi,bj)
595 ENDDO
596 ENDDO
597 ENDDO
598 ENDDO
599 ENDDO
600 CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
601 ENDIF
602
603 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
604 DO bj = myByLo(myThid), myByHi(myThid)
605 DO bi = myBxLo(myThid), myBxHi(myThid)
606 DO K=1,Nr
607 km1 = MAX(k-1,1)
608 DO j = 1,sNy
609 DO i = 1,sNx
610 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
611 & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
612 ENDDO
613 ENDDO
614 ENDDO
615 ENDDO
616 ENDDO
617 CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
618 ENDIF
619
620 C-- fill tracer state-var diagnostics: end
621 ENDIF
622
623 IF ( selectVars.EQ.4 ) THEN
624 C Second fill sequence for state variable tendency diagnostics: add state variable
625 C NOTE: send a '-1' for the bibjflag and allow counter to be incremented
626 C this means that diag fill is called from inside the bi-bj loop
627
628 IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
629 DO bj = myByLo(myThid), myByHi(myThid)
630 DO bi = myBxLo(myThid), myBxHi(myThid)
631 DO K=1,Nr
632 DO j = 1,sNy
633 DO i = 1,sNx
634 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)
635 . *86400./dTtracerLev(1)
636 ENDDO
637 ENDDO
638 ENDDO
639 CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,-1,bi,bj,myThid)
640 ENDDO
641 ENDDO
642 ENDIF
643
644 IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
645 DO bj = myByLo(myThid), myByHi(myThid)
646 DO bi = myBxLo(myThid), myBxHi(myThid)
647 DO K=1,Nr
648 DO j = 1,sNy
649 DO i = 1,sNx
650 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)
651 . *86400./dTtracerLev(1)
652 ENDDO
653 ENDDO
654 ENDDO
655 CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,-1,bi,bj,myThid)
656 ENDDO
657 ENDDO
658 ENDIF
659
660 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
661 DO bj = myByLo(myThid), myByHi(myThid)
662 DO bi = myBxLo(myThid), myBxHi(myThid)
663 DO K=1,Nr
664 DO j = 1,sNy
665 DO i = 1,sNx
666 tmpMk(i,j,K,bi,bj) = theta(i,j,K,bi,bj)
667 . *86400./dTtracerLev(1)
668 ENDDO
669 ENDDO
670 ENDDO
671 CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
672 ENDDO
673 ENDDO
674 ENDIF
675
676 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
677 DO bj = myByLo(myThid), myByHi(myThid)
678 DO bi = myBxLo(myThid), myBxHi(myThid)
679 DO K=1,Nr
680 DO j = 1,sNy
681 DO i = 1,sNx
682 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)
683 . *86400./dTtracerLev(1)
684 ENDDO
685 ENDDO
686 ENDDO
687 CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
688 ENDDO
689 ENDDO
690 ENDIF
691
692 C-- fill state tendency diagnostics the second time: end
693 ENDIF
694
695 #endif /* ALLOW_DIAGNOSTICS */
696
697 RETURN
698 END

  ViewVC Help
Powered by ViewVC 1.1.22