/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_fill_state.F
ViewVC logotype

Annotation of /MITgcm/pkg/diagnostics/diagnostics_fill_state.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.41 - (hide 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 jmc 1.41 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.40 2011/07/19 21:41:27 jmc Exp $
2 edhill 1.6 C $Name: $
3    
4 edhill 1.10 #include "DIAG_OPTIONS.h"
5 jmc 1.7
6 jmc 1.15 CBOP
7     C !ROUTINE: DIAGNOSTICS_FILL_STATE
8     C !INTERFACE:
9 jmc 1.41 SUBROUTINE DIAGNOSTICS_FILL_STATE( selectVars, myIter, myThid )
10 jmc 1.15
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 molod 1.1 #include "SIZE.h"
22     #include "EEPARAMS.h"
23 molod 1.24 #include "PARAMS.h"
24 molod 1.1 #include "GRID.h"
25 jmc 1.37 #include "SURFACE.h"
26 molod 1.1 #include "DYNVARS.h"
27 jmc 1.37 #include "NH_VARS.h"
28 jmc 1.41 #ifdef ALLOW_GENERIC_ADVDIFF
29     # include "GAD.h"
30     #endif
31 molod 1.1
32 jmc 1.15 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 molod 1.29 C = 4 :: fill-in state variable tendency diagnostics the second time
39 jmc 1.41 C myIter :: current Iteration number
40 jmc 1.15 C myThid :: my Thread Id number
41 jmc 1.31 INTEGER selectVars
42 jmc 1.41 INTEGER myIter
43 jmc 1.31 INTEGER myThid
44 jmc 1.7
45     #ifdef ALLOW_DIAGNOSTICS
46 jmc 1.15 C !LOCAL VARIABLES:
47     C == Local variables ==
48 jmc 1.13 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 jmc 1.38 _RL tmpU (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
53     _RL tmpV (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
54 jmc 1.23 _RL tmpFac, uBarC, vBarC
55 jmc 1.25 #ifdef ALLOW_FIZHI
56 molod 1.24 _RL dummy1, dummy2, dummy3, dummy4, kappa, getcon
57 jmc 1.25 #endif
58 jmc 1.41 #ifdef ALLOW_ADAMSBASHFORTH_3
59     INTEGER m1
60     #endif
61     INTEGER i,j,k,bi,bj
62 jmc 1.13 INTEGER km1
63 jmc 1.31
64 jmc 1.21 tmpFac = 1. _d 0
65    
66 molod 1.29 IF ( selectVars.EQ.2 .OR. selectVars.EQ.3 ) THEN
67 jmc 1.15 C-- fill momentum state-var diagnostics:
68    
69 jmc 1.21 CALL DIAGNOSTICS_FILL(etaN, 'ETAN ',0, 1,0,1,1,myThid)
70 molod 1.22
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 jmc 1.21 CALL DIAGNOSTICS_SCALE_FILL(etaN,tmpFac,2,
85     & 'ETANSQ ',0, 1,0,1,1,myThid)
86 jmc 1.31
87 jmc 1.12 #ifdef EXACT_CONSERV
88 jmc 1.21 CALL DIAGNOSTICS_SCALE_FILL(dEtaHdt,tmpFac,2,
89     & 'DETADT2 ',0, 1,0,1,1,myThid)
90 jmc 1.12 #endif
91 jmc 1.37 #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 jmc 1.31
97 jmc 1.15 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 jmc 1.31
101 jmc 1.21 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 jmc 1.15 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
109    
110 jmc 1.38 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 jmc 1.15 DO bj = myByLo(myThid), myByHi(myThid)
114     DO bi = myBxLo(myThid), myBxHi(myThid)
115 jmc 1.41 DO k=1,Nr
116 jmc 1.15 DO j = 1,sNy
117     DO i = 1,sNx
118 jmc 1.23 uBarC = 0.5 _d 0
119 jmc 1.41 & *(uVel(i,j,k,bi,bj)+uVel(i+1,j,k,bi,bj))
120 jmc 1.23 vBarC = 0.5 _d 0
121 jmc 1.41 & *(vVel(i,j,k,bi,bj)+vVel(i,j+1,k,bi,bj))
122 jmc 1.38 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 jmc 1.41 tmpMk(i,j,k,bi,bj) = tmpU(i,j)*tmpV(i,j)
127 jmc 1.15 ENDDO
128     ENDDO
129 jmc 1.38 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 jmc 1.15 ENDDO
132     ENDDO
133     ENDDO
134     CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_C',0,Nr,0,1,1,myThid)
135     ENDIF
136 jmc 1.31
137 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN
138     DO bj = myByLo(myThid), myByHi(myThid)
139     DO bi = myBxLo(myThid), myBxHi(myThid)
140 jmc 1.41 DO k=1,Nr
141 jmc 1.15 DO j = 1,sNy+1
142     DO i = 1,sNx+1
143 jmc 1.41 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 jmc 1.15 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 jmc 1.31
154 jmc 1.16 IF ( DIAGNOSTICS_IS_ON('WU_VEL ',myThid) ) THEN
155     DO bj = myByLo(myThid), myByHi(myThid)
156     DO bi = myBxLo(myThid), myBxHi(myThid)
157 jmc 1.41 DO k=1,Nr
158 jmc 1.16 km1 = MAX(k-1,1)
159     DO j = 1,sNy
160     DO i = 1,sNx+1
161 jmc 1.41 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 jmc 1.16 & )*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 jmc 1.41 DO k=1,Nr
178 jmc 1.16 km1 = MAX(k-1,1)
179     DO j = 1,sNy+1
180     DO i = 1,sNx
181 jmc 1.41 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 jmc 1.16 & )*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 jmc 1.15 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 jmc 1.41 DO k=1,Nr
200 jmc 1.13 DO j = 1,sNy
201 jmc 1.15 DO i = 1,sNx+1
202 jmc 1.41 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 jmc 1.15 ENDDO
205 jmc 1.13 ENDDO
206 jmc 1.15 ENDDO
207 jmc 1.13 ENDDO
208 jmc 1.15 ENDDO
209     CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH ',0,Nr,0,1,1,myThid)
210     ENDIF
211 jmc 1.31
212 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('VVELTH ',myThid) ) THEN
213     DO bj = myByLo(myThid), myByHi(myThid)
214     DO bi = myBxLo(myThid), myBxHi(myThid)
215 jmc 1.41 DO k=1,Nr
216 jmc 1.15 DO j = 1,sNy+1
217     DO i = 1,sNx
218 jmc 1.41 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 jmc 1.15 ENDDO
221 jmc 1.13 ENDDO
222 jmc 1.15 ENDDO
223 jmc 1.13 ENDDO
224 jmc 1.15 ENDDO
225     CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH ',0,Nr,0,1,1,myThid)
226     ENDIF
227 jmc 1.31
228 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WVELTH ',myThid) ) THEN
229     DO bj = myByLo(myThid), myByHi(myThid)
230     DO bi = myBxLo(myThid), myBxHi(myThid)
231 jmc 1.41 DO k=1,Nr
232 jmc 1.15 km1 = MAX(k-1,1)
233 jmc 1.13 DO j = 1,sNy
234 jmc 1.15 DO i = 1,sNx
235 jmc 1.41 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 jmc 1.15 ENDDO
238 jmc 1.13 ENDDO
239 jmc 1.15 ENDDO
240 jmc 1.13 ENDDO
241 jmc 1.15 ENDDO
242     CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
243     ENDIF
244 jmc 1.31
245 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
246     DO bj = myByLo(myThid), myByHi(myThid)
247     DO bi = myBxLo(myThid), myBxHi(myThid)
248 jmc 1.41 DO k=1,Nr
249 jmc 1.13 DO j = 1,sNy
250 jmc 1.15 DO i = 1,sNx+1
251 jmc 1.41 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 jmc 1.15 ENDDO
254 jmc 1.13 ENDDO
255 jmc 1.15 ENDDO
256 jmc 1.13 ENDDO
257 jmc 1.15 ENDDO
258     CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
259     ENDIF
260 jmc 1.31
261 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
262     DO bj = myByLo(myThid), myByHi(myThid)
263     DO bi = myBxLo(myThid), myBxHi(myThid)
264 jmc 1.41 DO k=1,Nr
265 jmc 1.15 DO j = 1,sNy+1
266     DO i = 1,sNx
267 jmc 1.41 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 jmc 1.15 ENDDO
270 jmc 1.13 ENDDO
271 jmc 1.15 ENDDO
272 jmc 1.13 ENDDO
273 jmc 1.15 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 jmc 1.41 DO k=1,Nr
281 jmc 1.15 km1 = MAX(k-1,1)
282 jmc 1.13 DO j = 1,sNy
283 jmc 1.15 DO i = 1,sNx
284 jmc 1.41 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 jmc 1.15 ENDDO
287 jmc 1.13 ENDDO
288 jmc 1.15 ENDDO
289 jmc 1.13 ENDDO
290 jmc 1.15 ENDDO
291     CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
292     ENDIF
293 jmc 1.31
294 molod 1.28 IF ( DIAGNOSTICS_IS_ON('UVELPHI ',myThid) ) THEN
295     DO bj = myByLo(myThid), myByHi(myThid)
296     DO bi = myBxLo(myThid), myBxHi(myThid)
297 jmc 1.41 DO k=1,Nr
298 molod 1.28 DO j = 1,sNy
299     DO i = 1,sNx+1
300 jmc 1.41 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 molod 1.28 ENDDO
303     ENDDO
304     ENDDO
305     ENDDO
306     ENDDO
307     CALL DIAGNOSTICS_FILL(tmpMk,'UVELPHI ',0,Nr,0,1,1,myThid)
308     ENDIF
309 jmc 1.31
310 molod 1.28 IF ( DIAGNOSTICS_IS_ON('VVELPHI ',myThid) ) THEN
311     DO bj = myByLo(myThid), myByHi(myThid)
312     DO bi = myBxLo(myThid), myBxHi(myThid)
313 jmc 1.41 DO k=1,Nr
314 molod 1.28 DO j = 1,sNy+1
315     DO i = 1,sNx
316 jmc 1.41 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 molod 1.28 ENDDO
319     ENDDO
320     ENDDO
321     ENDDO
322     ENDDO
323     CALL DIAGNOSTICS_FILL(tmpMk,'VVELPHI ',0,Nr,0,1,1,myThid)
324     ENDIF
325 jmc 1.31
326 jmc 1.33 IF ( DIAGNOSTICS_IS_ON('RCENTER ',myThid) ) THEN
327 molod 1.20 DO bj = myByLo(myThid), myByHi(myThid)
328     DO bi = myBxLo(myThid), myBxHi(myThid)
329 jmc 1.26 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 jmc 1.40 & + (rF(k+1)-rC(k))*hFacC(i,j,k,bi,bj)*rkSign
339 jmc 1.34 C above: more general (setInterFDr/setCenterDr) than line below
340     c & + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0
341 jmc 1.26 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 molod 1.20 ENDDO
347     ENDDO
348 jmc 1.33 CALL DIAGNOSTICS_FILL(tmpMk,'RCENTER ',0,Nr,0,1,1,myThid)
349 molod 1.20 ENDIF
350    
351 molod 1.29 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 jmc 1.41 DO k=1,Nr
359 molod 1.29 DO j = 1,sNy
360 jmc 1.35 DO i = 1,sNx+1
361 jmc 1.41 tmpMk(i,j,k,bi,bj) = -uVel(i,j,k,bi,bj)
362 molod 1.30 . *86400./dTtracerLev(1)
363 molod 1.29 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 jmc 1.41 DO k=1,Nr
375 jmc 1.35 DO j = 1,sNy+1
376 molod 1.29 DO i = 1,sNx
377 jmc 1.41 tmpMk(i,j,k,bi,bj) = -vVel(i,j,k,bi,bj)
378 molod 1.30 . *86400./dTtracerLev(1)
379 molod 1.29 ENDDO
380     ENDDO
381     ENDDO
382     ENDDO
383     ENDDO
384     CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,0,1,1,myThid)
385     ENDIF
386 jmc 1.31
387 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
388     DO bj = myByLo(myThid), myByHi(myThid)
389     DO bi = myBxLo(myThid), myBxHi(myThid)
390 jmc 1.41 DO k=1,Nr
391 molod 1.29 DO j = 1,sNy
392     DO i = 1,sNx
393 jmc 1.41 tmpMk(i,j,k,bi,bj) = -theta(i,j,k,bi,bj)
394 molod 1.30 . *86400./dTtracerLev(1)
395 molod 1.29 ENDDO
396     ENDDO
397     ENDDO
398     ENDDO
399     ENDDO
400     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
401     ENDIF
402 jmc 1.31
403 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
404     DO bj = myByLo(myThid), myByHi(myThid)
405     DO bi = myBxLo(myThid), myBxHi(myThid)
406 jmc 1.41 DO k=1,Nr
407 molod 1.29 DO j = 1,sNy
408     DO i = 1,sNx
409 jmc 1.41 tmpMk(i,j,k,bi,bj) = -salt(i,j,k,bi,bj)
410 molod 1.30 . *86400./dTtracerLev(1)
411 molod 1.29 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 jmc 1.15 C-- fill momentum state-var diagnostics: end
420 jmc 1.13 ENDIF
421 jmc 1.15
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 jmc 1.21
430 molod 1.24 #ifdef ALLOW_FIZHI
431 jmc 1.41 IF ( useFIZHI .AND. DIAGNOSTICS_IS_ON('RELHUM ',myThid) ) THEN
432 molod 1.24 kappa = getcon('KAPPA')
433 jmc 1.41 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 molod 1.24 CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
449     ENDIF
450     #endif /* ALLOW_FIZHI */
451    
452 jmc 1.21 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 jmc 1.31
457 jmc 1.41 #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 jmc 1.25 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 jmc 1.31
493 jmc 1.25 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 jmc 1.15
506 jmc 1.31 IF ( fluidIsWater .AND.
507     & ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
508     & .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
509 dimitri 1.18 DO bj = myByLo(myThid), myByHi(myThid)
510     DO bi = myBxLo(myThid), myBxHi(myThid)
511 jmc 1.41 DO k=1,Nr
512 dimitri 1.18 DO j = 1,sNy
513     DO i = 1,sNx
514 jmc 1.41 tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)-35. _d 0
515 dimitri 1.18 ENDDO
516     ENDDO
517     ENDDO
518     ENDDO
519     ENDDO
520 jmc 1.31 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 dimitri 1.18 ENDIF
524 jmc 1.31
525 jmc 1.15 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
526 jmc 1.13
527 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
528     DO bj = myByLo(myThid), myByHi(myThid)
529     DO bi = myBxLo(myThid), myBxHi(myThid)
530 jmc 1.41 DO k=1,Nr
531 jmc 1.13 DO j = 1,sNy
532 jmc 1.35 DO i = 1,sNx+1
533 jmc 1.41 tmpMk(i,j,k,bi,bj)
534     & = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
535 jmc 1.13 ENDDO
536     ENDDO
537 jmc 1.15 ENDDO
538 jmc 1.13 ENDDO
539 jmc 1.15 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 jmc 1.41 DO k=1,Nr
547 jmc 1.35 DO j = 1,sNy+1
548 jmc 1.13 DO i = 1,sNx
549 jmc 1.41 tmpMk(i,j,k,bi,bj)
550     & = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
551 jmc 1.13 ENDDO
552     ENDDO
553 jmc 1.15 ENDDO
554 jmc 1.13 ENDDO
555 jmc 1.15 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 jmc 1.13
561 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
562     DO bj = myByLo(myThid), myByHi(myThid)
563     DO bi = myBxLo(myThid), myBxHi(myThid)
564 jmc 1.41 DO k=1,Nr
565 jmc 1.13 DO j = 1,sNy
566 jmc 1.15 DO i = 1,sNx+1
567 jmc 1.41 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 jmc 1.15 ENDDO
571 jmc 1.13 ENDDO
572 jmc 1.15 ENDDO
573 jmc 1.13 ENDDO
574 jmc 1.15 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 jmc 1.41 DO k=1,Nr
582 jmc 1.15 DO j = 1,sNy+1
583     DO i = 1,sNx
584 jmc 1.41 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 jmc 1.15 ENDDO
588     ENDDO
589     ENDDO
590     ENDDO
591     ENDDO
592     CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
593     ENDIF
594 jmc 1.31
595 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
596     DO bj = myByLo(myThid), myByHi(myThid)
597     DO bi = myBxLo(myThid), myBxHi(myThid)
598 jmc 1.41 DO k=1,Nr
599 jmc 1.15 km1 = MAX(k-1,1)
600     DO j = 1,sNy
601     DO i = 1,sNx
602 jmc 1.41 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 jmc 1.15 ENDDO
605 jmc 1.13 ENDDO
606 jmc 1.15 ENDDO
607 jmc 1.13 ENDDO
608 jmc 1.15 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 jmc 1.41 DO k=1,Nr
616 jmc 1.13 DO j = 1,sNy
617 jmc 1.15 DO i = 1,sNx+1
618 jmc 1.41 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 jmc 1.15 ENDDO
622 jmc 1.13 ENDDO
623 jmc 1.15 ENDDO
624 jmc 1.13 ENDDO
625 jmc 1.15 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 jmc 1.41 DO k=1,Nr
633 jmc 1.15 DO j = 1,sNy+1
634     DO i = 1,sNx
635 jmc 1.41 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 jmc 1.15 ENDDO
639     ENDDO
640     ENDDO
641     ENDDO
642     ENDDO
643     CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
644     ENDIF
645 jmc 1.31
646 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
647     DO bj = myByLo(myThid), myByHi(myThid)
648     DO bi = myBxLo(myThid), myBxHi(myThid)
649 jmc 1.41 DO k=1,Nr
650 jmc 1.15 km1 = MAX(k-1,1)
651     DO j = 1,sNy
652     DO i = 1,sNx
653 jmc 1.41 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 jmc 1.15 ENDDO
656 jmc 1.13 ENDDO
657 jmc 1.15 ENDDO
658 jmc 1.13 ENDDO
659 jmc 1.15 ENDDO
660     CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
661     ENDIF
662 jmc 1.31
663 jmc 1.15 C-- fill tracer state-var diagnostics: end
664 jmc 1.13 ENDIF
665 jmc 1.15
666 molod 1.29 IF ( selectVars.EQ.4 ) THEN
667     C Second fill sequence for state variable tendency diagnostics: add state variable
668 dimitri 1.39 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 molod 1.29
671     IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
672     DO bj = myByLo(myThid), myByHi(myThid)
673     DO bi = myBxLo(myThid), myBxHi(myThid)
674 jmc 1.41 DO k=1,Nr
675 molod 1.29 DO j = 1,sNy
676 jmc 1.35 DO i = 1,sNx+1
677 jmc 1.41 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)
678 molod 1.30 . *86400./dTtracerLev(1)
679 molod 1.29 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 jmc 1.41 DO k=1,Nr
691 jmc 1.35 DO j = 1,sNy+1
692 molod 1.29 DO i = 1,sNx
693 jmc 1.41 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)
694 molod 1.30 . *86400./dTtracerLev(1)
695 molod 1.29 ENDDO
696     ENDDO
697     ENDDO
698     CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,-1,bi,bj,myThid)
699     ENDDO
700     ENDDO
701     ENDIF
702 jmc 1.31
703 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
704     DO bj = myByLo(myThid), myByHi(myThid)
705     DO bi = myBxLo(myThid), myBxHi(myThid)
706 jmc 1.41 DO k=1,Nr
707 molod 1.29 DO j = 1,sNy
708     DO i = 1,sNx
709 jmc 1.41 tmpMk(i,j,k,bi,bj) = theta(i,j,k,bi,bj)
710 molod 1.30 . *86400./dTtracerLev(1)
711 molod 1.29 ENDDO
712     ENDDO
713     ENDDO
714     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
715     ENDDO
716     ENDDO
717     ENDIF
718 jmc 1.31
719 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
720     DO bj = myByLo(myThid), myByHi(myThid)
721     DO bi = myBxLo(myThid), myBxHi(myThid)
722 jmc 1.41 DO k=1,Nr
723 molod 1.29 DO j = 1,sNy
724     DO i = 1,sNx
725 jmc 1.41 tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)
726 molod 1.30 . *86400./dTtracerLev(1)
727 molod 1.29 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 jmc 1.7 #endif /* ALLOW_DIAGNOSTICS */
739 jmc 1.31
740     RETURN
741 jmc 1.13 END

  ViewVC Help
Powered by ViewVC 1.1.22