/[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.41 - (show annotations) (download)
Wed Nov 30 20:59:40 2011 UTC (12 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64q, checkpoint64p, checkpoint64r, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63g, checkpoint64
Changes since 1.40: +138 -107 lines
- add diags for T & S tendency which goes through Adams-Bashforth
- add myIter to S/R argument list

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

  ViewVC Help
Powered by ViewVC 1.1.22