/[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.42 - (show annotations) (download)
Tue Dec 10 22:24:29 2013 UTC (10 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64s, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint65, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65l, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e
Changes since 1.41: +31 -81 lines
fix which deltaT is used in Total-Tendency diagnostics

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

  ViewVC Help
Powered by ViewVC 1.1.22