/[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.43 - (show annotations) (download)
Tue Jun 9 16:31:45 2015 UTC (8 years, 10 months ago) by rpa
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65n, checkpoint65o, checkpoint65m, HEAD
Changes since 1.42: +21 -1 lines
Added missing call to layers_fill for keeping track of tottend.

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.42 2013/12/10 22:24:29 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 #ifdef ALLOW_LAYERS
374 IF ( useLayers ) THEN
375 CALL LAYERS_FILL(tmpMk,1,'TOT',0,Nr,0,1,1,myThid)
376 ENDIF
377 #endif /* ALLOW_LAYERS */
378 ENDIF
379
380 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
381 DO bj = myByLo(myThid), myByHi(myThid)
382 DO bi = myBxLo(myThid), myBxHi(myThid)
383 DO k=1,Nr
384 tmpFac = -86400. _d 0/dTtracerLev(k)
385 DO j = 1,sNy
386 DO i = 1,sNx
387 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
388 ENDDO
389 ENDDO
390 ENDDO
391 ENDDO
392 ENDDO
393 CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
394 #ifdef ALLOW_LAYERS
395 IF ( useLayers ) THEN
396 CALL LAYERS_FILL(tmpMk,2,'TOT',0,Nr,0,1,1,myThid)
397 ENDIF
398 #endif /* ALLOW_LAYERS */
399 ENDIF
400
401 C-- fill momentum state-var diagnostics: end
402 ENDIF
403
404 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
405
406 IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
407 C-- fill tracer state-var diagnostics:
408
409 CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
410 CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
411
412 #ifdef ALLOW_FIZHI
413 IF ( useFIZHI .AND. DIAGNOSTICS_IS_ON('RELHUM ',myThid) ) THEN
414 kappa = getcon('KAPPA')
415 DO bj = myByLo(myThid), myByHi(myThid)
416 DO bi = myBxLo(myThid), myBxHi(myThid)
417 DO j = 1,sNy
418 DO i = 1,sNx
419 DO k = 1,Nr
420 dummy1 = theta(i,j,k,bi,bj) * ((rC(k)/100.)/1000.)**kappa
421 dummy2 = rC(k) / 100.
422 CALL QSAT(dummy1,dummy2,dummy3,dummy4,.false.)
423 tmpMk(i,j,k,bi,bj) = hFacC(i,j,k,bi,bj)
424 & *salt(i,j,k,bi,bj)*100. / dummy3
425 ENDDO
426 ENDDO
427 ENDDO
428 ENDDO
429 ENDDO
430 CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
431 ENDIF
432 #endif /* ALLOW_FIZHI */
433
434 CALL DIAGNOSTICS_SCALE_FILL( theta, oneRL, 2,
435 & 'THETASQ ',0,Nr,0,1,1,myThid)
436 CALL DIAGNOSTICS_SCALE_FILL( salt, oneRL, 2,
437 & 'SALTSQ ',0,Nr,0,1,1,myThid)
438
439 #ifdef ALLOW_GENERIC_ADVDIFF
440 # ifdef ALLOW_ADAMSBASHFORTH_3
441 IF ( selectVars.EQ.1 ) THEN
442 C- stagger time-step: fill diags after updating myIter
443 m1 = 1 + MOD(myIter,2)
444 ELSE
445 C- synchronous time-step: fill diags before updating myIter
446 m1 = 1 + MOD(myIter+1,2)
447 ENDIF
448 IF ( AdamsBashforthGt )
449 & CALL DIAGNOSTICS_FILL( gtNm(1-OLx,1-OLy,1,1,1,m1),
450 & 'gTinAB ',0,Nr,0,1,1,myThid )
451 IF ( AdamsBashforthGs )
452 & CALL DIAGNOSTICS_FILL( gsNm(1-OLx,1-OLy,1,1,1,m1),
453 & 'gSinAB ',0,Nr,0,1,1,myThid )
454 # else /* ALLOW_ADAMSBASHFORTH_3 */
455 IF ( AdamsBashforthGt )
456 & CALL DIAGNOSTICS_FILL( gtNm1,'gTinAB ',0,Nr,0,1,1,myThid )
457 IF ( AdamsBashforthGs )
458 & CALL DIAGNOSTICS_FILL( gsNm1,'gSinAB ',0,Nr,0,1,1,myThid )
459 # endif /* ALLOW_ADAMSBASHFORTH_3 */
460 #endif /* ALLOW_GENERIC_ADVDIFF */
461
462 c IF ( DIAGNOSTICS_IS_ON('SST ',myThid) ) THEN
463 c DO bj = myByLo(myThid), myByHi(myThid)
464 c DO bi = myBxLo(myThid), myBxHi(myThid)
465 c DO j = 1,sNy
466 c DO i = 1,sNx
467 c tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)
468 c ENDDO
469 c ENDDO
470 c ENDDO
471 c ENDDO
472 c CALL DIAGNOSTICS_FILL(tmp1k,'SST ',0,1,0,1,1,myThid)
473 c ENDIF
474
475 c IF ( DIAGNOSTICS_IS_ON('SSS ',myThid) ) THEN
476 c DO bj = myByLo(myThid), myByHi(myThid)
477 c DO bi = myBxLo(myThid), myBxHi(myThid)
478 c DO j = 1,sNy
479 c DO i = 1,sNx
480 c tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)
481 c ENDDO
482 c ENDDO
483 c ENDDO
484 c ENDDO
485 c CALL DIAGNOSTICS_FILL(tmp1k,'SSS ',0,1,0,1,1,myThid)
486 c ENDIF
487
488 IF ( fluidIsWater .AND.
489 & ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
490 & .OR.DIAGNOSTICS_IS_ON('SALTSQan',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
496 tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)-35. _d 0
497 ENDDO
498 ENDDO
499 ENDDO
500 ENDDO
501 ENDDO
502 CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
503 CALL DIAGNOSTICS_SCALE_FILL( tmpMk, oneRL, 2,
504 & 'SALTSQan',0,Nr,0,1,1,myThid)
505 ENDIF
506
507 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
508
509 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
510 DO bj = myByLo(myThid), myByHi(myThid)
511 DO bi = myBxLo(myThid), myBxHi(myThid)
512 DO k=1,Nr
513 DO j = 1,sNy
514 DO i = 1,sNx+1
515 tmpMk(i,j,k,bi,bj)
516 & = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
517 ENDDO
518 ENDDO
519 ENDDO
520 ENDDO
521 ENDDO
522 CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
523 ENDIF
524
525 IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
526 DO bj = myByLo(myThid), myByHi(myThid)
527 DO bi = myBxLo(myThid), myBxHi(myThid)
528 DO k=1,Nr
529 DO j = 1,sNy+1
530 DO i = 1,sNx
531 tmpMk(i,j,k,bi,bj)
532 & = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
533 ENDDO
534 ENDDO
535 ENDDO
536 ENDDO
537 ENDDO
538 CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
539 ENDIF
540
541 CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
542
543 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',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
548 DO i = 1,sNx+1
549 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
550 & *(theta(i,j,k,bi,bj)+theta(i-1,j,k,bi,bj))
551 & * hFacW(i,j,k,bi,bj)
552 ENDDO
553 ENDDO
554 ENDDO
555 ENDDO
556 ENDDO
557 CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
558 ENDIF
559
560 IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
561 DO bj = myByLo(myThid), myByHi(myThid)
562 DO bi = myBxLo(myThid), myBxHi(myThid)
563 DO k=1,Nr
564 DO j = 1,sNy+1
565 DO i = 1,sNx
566 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
567 & *(theta(i,j,k,bi,bj)+theta(i,j-1,k,bi,bj))
568 & * hFacS(i,j,k,bi,bj)
569 ENDDO
570 ENDDO
571 ENDDO
572 ENDDO
573 ENDDO
574 CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
575 ENDIF
576
577 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
578 DO bj = myByLo(myThid), myByHi(myThid)
579 DO bi = myBxLo(myThid), myBxHi(myThid)
580 DO k=1,Nr
581 km1 = MAX(k-1,1)
582 DO j = 1,sNy
583 DO i = 1,sNx
584 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
585 & *(theta(i,j,k,bi,bj)+theta(i,j,km1,bi,bj))
586 ENDDO
587 ENDDO
588 ENDDO
589 ENDDO
590 ENDDO
591 CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
592 ENDIF
593
594 IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
595 DO bj = myByLo(myThid), myByHi(myThid)
596 DO bi = myBxLo(myThid), myBxHi(myThid)
597 DO k=1,Nr
598 DO j = 1,sNy
599 DO i = 1,sNx+1
600 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
601 & *(salt(i,j,k,bi,bj)+salt(i-1,j,k,bi,bj))
602 & * hFacW(i,j,k,bi,bj)
603 ENDDO
604 ENDDO
605 ENDDO
606 ENDDO
607 ENDDO
608 CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
609 ENDIF
610
611 IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
612 DO bj = myByLo(myThid), myByHi(myThid)
613 DO bi = myBxLo(myThid), myBxHi(myThid)
614 DO k=1,Nr
615 DO j = 1,sNy+1
616 DO i = 1,sNx
617 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
618 & *(salt(i,j,k,bi,bj)+salt(i,j-1,k,bi,bj))
619 & * hFacS(i,j,k,bi,bj)
620 ENDDO
621 ENDDO
622 ENDDO
623 ENDDO
624 ENDDO
625 CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
626 ENDIF
627
628 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
629 DO bj = myByLo(myThid), myByHi(myThid)
630 DO bi = myBxLo(myThid), myBxHi(myThid)
631 DO k=1,Nr
632 km1 = MAX(k-1,1)
633 DO j = 1,sNy
634 DO i = 1,sNx
635 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
636 & *(salt(i,j,k,bi,bj)+salt(i,j,km1,bi,bj))
637 ENDDO
638 ENDDO
639 ENDDO
640 ENDDO
641 ENDDO
642 CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
643 ENDIF
644
645 C-- fill tracer state-var diagnostics: end
646 ENDIF
647
648 IF ( selectVars.EQ.4 ) THEN
649 C Second fill sequence for state variable tendency diagnostics: add state variable
650 C NOTE: send a '-1' for the bibjflag and do not increment counter
651 C (previous fill for these diagnostics DID allow counter to be incremented)
652
653 tmpFac = 86400. _d 0/deltaTMom
654 DO bj = myByLo(myThid), myByHi(myThid)
655 DO bi = myBxLo(myThid), myBxHi(myThid)
656 CALL DIAGNOSTICS_SCALE_FILL( uVel, tmpFac, 1,
657 & 'TOTUTEND',0,Nr,-1,bi,bj,myThid )
658 CALL DIAGNOSTICS_SCALE_FILL( vVel, tmpFac, 1,
659 & 'TOTVTEND',0,Nr,-1,bi,bj,myThid )
660 ENDDO
661 ENDDO
662
663 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
664 DO bj = myByLo(myThid), myByHi(myThid)
665 DO bi = myBxLo(myThid), myBxHi(myThid)
666 DO k=1,Nr
667 tmpFac = 86400. _d 0/dTtracerLev(k)
668 DO j = 1,sNy
669 DO i = 1,sNx
670 tmpMk(i,j,k,bi,bj) = tmpFac*theta(i,j,k,bi,bj)
671 ENDDO
672 ENDDO
673 ENDDO
674 CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
675 #ifdef ALLOW_LAYERS
676 IF ( useLayers ) THEN
677 CALL LAYERS_FILL(tmpMk,1,'TOT',0,Nr,-1,bi,bj,myThid)
678 ENDIF
679 #endif /* ALLOW_LAYERS */
680 ENDDO
681 ENDDO
682 ENDIF
683
684 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
685 DO bj = myByLo(myThid), myByHi(myThid)
686 DO bi = myBxLo(myThid), myBxHi(myThid)
687 DO k=1,Nr
688 tmpFac = 86400. _d 0/dTtracerLev(k)
689 DO j = 1,sNy
690 DO i = 1,sNx
691 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
692 ENDDO
693 ENDDO
694 ENDDO
695 CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
696 #ifdef ALLOW_LAYERS
697 IF ( useLayers ) THEN
698 CALL LAYERS_FILL(tmpMk,2,'TOT',0,Nr,-1,bi,bj,myThid)
699 ENDIF
700 #endif /* ALLOW_LAYERS */
701 ENDDO
702 ENDDO
703 ENDIF
704
705 C-- fill state tendency diagnostics the second time: end
706 ENDIF
707
708 #endif /* ALLOW_DIAGNOSTICS */
709
710 RETURN
711 END

  ViewVC Help
Powered by ViewVC 1.1.22