/[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.43 - (hide annotations) (download)
Tue Jun 9 16:31:45 2015 UTC (8 years, 11 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 rpa 1.43 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.42 2013/12/10 22:24:29 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 molod 1.29 IF ( selectVars.EQ.2 .OR. selectVars.EQ.3 ) THEN
65 jmc 1.15 C-- fill momentum state-var diagnostics:
66    
67 jmc 1.21 CALL DIAGNOSTICS_FILL(etaN, 'ETAN ',0, 1,0,1,1,myThid)
68 molod 1.22
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 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( etaN, oneRL, 2,
83 jmc 1.21 & 'ETANSQ ',0, 1,0,1,1,myThid)
84 jmc 1.31
85 jmc 1.12 #ifdef EXACT_CONSERV
86 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( dEtaHdt, oneRL, 2,
87 jmc 1.21 & 'DETADT2 ',0, 1,0,1,1,myThid)
88 jmc 1.12 #endif
89 jmc 1.37 #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 jmc 1.31
95 jmc 1.15 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 jmc 1.31
99 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( uVel, oneRL, 2,
100 jmc 1.21 & 'UVELSQ ',0,Nr,0,1,1,myThid)
101 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( vVel, oneRL, 2,
102 jmc 1.21 & 'VVELSQ ',0,Nr,0,1,1,myThid)
103 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( wVel, oneRL, 2,
104 jmc 1.21 & 'WVELSQ ',0,Nr,0,1,1,myThid)
105    
106 jmc 1.15 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
107    
108 jmc 1.38 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 jmc 1.15 DO bj = myByLo(myThid), myByHi(myThid)
112     DO bi = myBxLo(myThid), myBxHi(myThid)
113 jmc 1.41 DO k=1,Nr
114 jmc 1.15 DO j = 1,sNy
115     DO i = 1,sNx
116 jmc 1.23 uBarC = 0.5 _d 0
117 jmc 1.41 & *(uVel(i,j,k,bi,bj)+uVel(i+1,j,k,bi,bj))
118 jmc 1.23 vBarC = 0.5 _d 0
119 jmc 1.41 & *(vVel(i,j,k,bi,bj)+vVel(i,j+1,k,bi,bj))
120 jmc 1.38 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 jmc 1.41 tmpMk(i,j,k,bi,bj) = tmpU(i,j)*tmpV(i,j)
125 jmc 1.15 ENDDO
126     ENDDO
127 jmc 1.38 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 jmc 1.15 ENDDO
130     ENDDO
131     ENDDO
132     CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_C',0,Nr,0,1,1,myThid)
133     ENDIF
134 jmc 1.31
135 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN
136     DO bj = myByLo(myThid), myByHi(myThid)
137     DO bi = myBxLo(myThid), myBxHi(myThid)
138 jmc 1.41 DO k=1,Nr
139 jmc 1.15 DO j = 1,sNy+1
140     DO i = 1,sNx+1
141 jmc 1.41 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 jmc 1.15 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 jmc 1.31
152 jmc 1.16 IF ( DIAGNOSTICS_IS_ON('WU_VEL ',myThid) ) THEN
153     DO bj = myByLo(myThid), myByHi(myThid)
154     DO bi = myBxLo(myThid), myBxHi(myThid)
155 jmc 1.41 DO k=1,Nr
156 jmc 1.16 km1 = MAX(k-1,1)
157     DO j = 1,sNy
158     DO i = 1,sNx+1
159 jmc 1.41 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 jmc 1.16 & )*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 jmc 1.41 DO k=1,Nr
176 jmc 1.16 km1 = MAX(k-1,1)
177     DO j = 1,sNy+1
178     DO i = 1,sNx
179 jmc 1.41 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 jmc 1.16 & )*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 jmc 1.15 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 jmc 1.41 DO k=1,Nr
198 jmc 1.13 DO j = 1,sNy
199 jmc 1.15 DO i = 1,sNx+1
200 jmc 1.41 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 jmc 1.15 ENDDO
203 jmc 1.13 ENDDO
204 jmc 1.15 ENDDO
205 jmc 1.13 ENDDO
206 jmc 1.15 ENDDO
207     CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH ',0,Nr,0,1,1,myThid)
208     ENDIF
209 jmc 1.31
210 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('VVELTH ',myThid) ) THEN
211     DO bj = myByLo(myThid), myByHi(myThid)
212     DO bi = myBxLo(myThid), myBxHi(myThid)
213 jmc 1.41 DO k=1,Nr
214 jmc 1.15 DO j = 1,sNy+1
215     DO i = 1,sNx
216 jmc 1.41 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 jmc 1.15 ENDDO
219 jmc 1.13 ENDDO
220 jmc 1.15 ENDDO
221 jmc 1.13 ENDDO
222 jmc 1.15 ENDDO
223     CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH ',0,Nr,0,1,1,myThid)
224     ENDIF
225 jmc 1.31
226 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WVELTH ',myThid) ) THEN
227     DO bj = myByLo(myThid), myByHi(myThid)
228     DO bi = myBxLo(myThid), myBxHi(myThid)
229 jmc 1.41 DO k=1,Nr
230 jmc 1.15 km1 = MAX(k-1,1)
231 jmc 1.13 DO j = 1,sNy
232 jmc 1.15 DO i = 1,sNx
233 jmc 1.41 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 jmc 1.15 ENDDO
236 jmc 1.13 ENDDO
237 jmc 1.15 ENDDO
238 jmc 1.13 ENDDO
239 jmc 1.15 ENDDO
240     CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
241     ENDIF
242 jmc 1.31
243 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
244     DO bj = myByLo(myThid), myByHi(myThid)
245     DO bi = myBxLo(myThid), myBxHi(myThid)
246 jmc 1.41 DO k=1,Nr
247 jmc 1.13 DO j = 1,sNy
248 jmc 1.15 DO i = 1,sNx+1
249 jmc 1.41 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 jmc 1.15 ENDDO
252 jmc 1.13 ENDDO
253 jmc 1.15 ENDDO
254 jmc 1.13 ENDDO
255 jmc 1.15 ENDDO
256     CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
257     ENDIF
258 jmc 1.31
259 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
260     DO bj = myByLo(myThid), myByHi(myThid)
261     DO bi = myBxLo(myThid), myBxHi(myThid)
262 jmc 1.41 DO k=1,Nr
263 jmc 1.15 DO j = 1,sNy+1
264     DO i = 1,sNx
265 jmc 1.41 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 jmc 1.15 ENDDO
268 jmc 1.13 ENDDO
269 jmc 1.15 ENDDO
270 jmc 1.13 ENDDO
271 jmc 1.15 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 jmc 1.41 DO k=1,Nr
279 jmc 1.15 km1 = MAX(k-1,1)
280 jmc 1.13 DO j = 1,sNy
281 jmc 1.15 DO i = 1,sNx
282 jmc 1.41 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 jmc 1.15 ENDDO
285 jmc 1.13 ENDDO
286 jmc 1.15 ENDDO
287 jmc 1.13 ENDDO
288 jmc 1.15 ENDDO
289     CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
290     ENDIF
291 jmc 1.31
292 molod 1.28 IF ( DIAGNOSTICS_IS_ON('UVELPHI ',myThid) ) THEN
293     DO bj = myByLo(myThid), myByHi(myThid)
294     DO bi = myBxLo(myThid), myBxHi(myThid)
295 jmc 1.41 DO k=1,Nr
296 molod 1.28 DO j = 1,sNy
297     DO i = 1,sNx+1
298 jmc 1.41 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 molod 1.28 ENDDO
301     ENDDO
302     ENDDO
303     ENDDO
304     ENDDO
305     CALL DIAGNOSTICS_FILL(tmpMk,'UVELPHI ',0,Nr,0,1,1,myThid)
306     ENDIF
307 jmc 1.31
308 molod 1.28 IF ( DIAGNOSTICS_IS_ON('VVELPHI ',myThid) ) THEN
309     DO bj = myByLo(myThid), myByHi(myThid)
310     DO bi = myBxLo(myThid), myBxHi(myThid)
311 jmc 1.41 DO k=1,Nr
312 molod 1.28 DO j = 1,sNy+1
313     DO i = 1,sNx
314 jmc 1.41 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 molod 1.28 ENDDO
317     ENDDO
318     ENDDO
319     ENDDO
320     ENDDO
321     CALL DIAGNOSTICS_FILL(tmpMk,'VVELPHI ',0,Nr,0,1,1,myThid)
322     ENDIF
323 jmc 1.31
324 jmc 1.33 IF ( DIAGNOSTICS_IS_ON('RCENTER ',myThid) ) THEN
325 molod 1.20 DO bj = myByLo(myThid), myByHi(myThid)
326     DO bi = myBxLo(myThid), myBxHi(myThid)
327 jmc 1.26 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 jmc 1.40 & + (rF(k+1)-rC(k))*hFacC(i,j,k,bi,bj)*rkSign
337 jmc 1.34 C above: more general (setInterFDr/setCenterDr) than line below
338     c & + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0
339 jmc 1.26 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 molod 1.20 ENDDO
345     ENDDO
346 jmc 1.33 CALL DIAGNOSTICS_FILL(tmpMk,'RCENTER ',0,Nr,0,1,1,myThid)
347 molod 1.20 ENDIF
348    
349 molod 1.29 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 jmc 1.42 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 jmc 1.31
359 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
360     DO bj = myByLo(myThid), myByHi(myThid)
361     DO bi = myBxLo(myThid), myBxHi(myThid)
362 jmc 1.41 DO k=1,Nr
363 jmc 1.42 tmpFac = -86400. _d 0/dTtracerLev(k)
364 molod 1.29 DO j = 1,sNy
365     DO i = 1,sNx
366 jmc 1.42 tmpMk(i,j,k,bi,bj) = tmpFac*theta(i,j,k,bi,bj)
367 molod 1.29 ENDDO
368     ENDDO
369     ENDDO
370     ENDDO
371     ENDDO
372     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
373 rpa 1.43 #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 molod 1.29 ENDIF
379 jmc 1.31
380 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
381     DO bj = myByLo(myThid), myByHi(myThid)
382     DO bi = myBxLo(myThid), myBxHi(myThid)
383 jmc 1.41 DO k=1,Nr
384 jmc 1.42 tmpFac = -86400. _d 0/dTtracerLev(k)
385 molod 1.29 DO j = 1,sNy
386     DO i = 1,sNx
387 jmc 1.42 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
388 molod 1.29 ENDDO
389     ENDDO
390     ENDDO
391     ENDDO
392     ENDDO
393     CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
394 rpa 1.43 #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 molod 1.29 ENDIF
400    
401 jmc 1.15 C-- fill momentum state-var diagnostics: end
402 jmc 1.13 ENDIF
403 jmc 1.15
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 jmc 1.21
412 molod 1.24 #ifdef ALLOW_FIZHI
413 jmc 1.41 IF ( useFIZHI .AND. DIAGNOSTICS_IS_ON('RELHUM ',myThid) ) THEN
414 molod 1.24 kappa = getcon('KAPPA')
415 jmc 1.41 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 molod 1.24 CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
431     ENDIF
432     #endif /* ALLOW_FIZHI */
433    
434 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( theta, oneRL, 2,
435 jmc 1.21 & 'THETASQ ',0,Nr,0,1,1,myThid)
436 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( salt, oneRL, 2,
437 jmc 1.21 & 'SALTSQ ',0,Nr,0,1,1,myThid)
438 jmc 1.31
439 jmc 1.41 #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 jmc 1.25 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 jmc 1.31
475 jmc 1.25 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 jmc 1.15
488 jmc 1.31 IF ( fluidIsWater .AND.
489     & ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
490     & .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
491 dimitri 1.18 DO bj = myByLo(myThid), myByHi(myThid)
492     DO bi = myBxLo(myThid), myBxHi(myThid)
493 jmc 1.41 DO k=1,Nr
494 dimitri 1.18 DO j = 1,sNy
495     DO i = 1,sNx
496 jmc 1.41 tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)-35. _d 0
497 dimitri 1.18 ENDDO
498     ENDDO
499     ENDDO
500     ENDDO
501     ENDDO
502 jmc 1.31 CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
503 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( tmpMk, oneRL, 2,
504 jmc 1.31 & 'SALTSQan',0,Nr,0,1,1,myThid)
505 dimitri 1.18 ENDIF
506 jmc 1.31
507 jmc 1.15 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
508 jmc 1.13
509 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
510     DO bj = myByLo(myThid), myByHi(myThid)
511     DO bi = myBxLo(myThid), myBxHi(myThid)
512 jmc 1.41 DO k=1,Nr
513 jmc 1.13 DO j = 1,sNy
514 jmc 1.35 DO i = 1,sNx+1
515 jmc 1.41 tmpMk(i,j,k,bi,bj)
516     & = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
517 jmc 1.13 ENDDO
518     ENDDO
519 jmc 1.15 ENDDO
520 jmc 1.13 ENDDO
521 jmc 1.15 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 jmc 1.41 DO k=1,Nr
529 jmc 1.35 DO j = 1,sNy+1
530 jmc 1.13 DO i = 1,sNx
531 jmc 1.41 tmpMk(i,j,k,bi,bj)
532     & = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
533 jmc 1.13 ENDDO
534     ENDDO
535 jmc 1.15 ENDDO
536 jmc 1.13 ENDDO
537 jmc 1.15 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 jmc 1.13
543 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',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.13 DO j = 1,sNy
548 jmc 1.15 DO i = 1,sNx+1
549 jmc 1.41 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 jmc 1.15 ENDDO
553 jmc 1.13 ENDDO
554 jmc 1.15 ENDDO
555 jmc 1.13 ENDDO
556 jmc 1.15 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 jmc 1.41 DO k=1,Nr
564 jmc 1.15 DO j = 1,sNy+1
565     DO i = 1,sNx
566 jmc 1.41 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 jmc 1.15 ENDDO
570     ENDDO
571     ENDDO
572     ENDDO
573     ENDDO
574     CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
575     ENDIF
576 jmc 1.31
577 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
578     DO bj = myByLo(myThid), myByHi(myThid)
579     DO bi = myBxLo(myThid), myBxHi(myThid)
580 jmc 1.41 DO k=1,Nr
581 jmc 1.15 km1 = MAX(k-1,1)
582     DO j = 1,sNy
583     DO i = 1,sNx
584 jmc 1.41 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 jmc 1.15 ENDDO
587 jmc 1.13 ENDDO
588 jmc 1.15 ENDDO
589 jmc 1.13 ENDDO
590 jmc 1.15 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 jmc 1.41 DO k=1,Nr
598 jmc 1.13 DO j = 1,sNy
599 jmc 1.15 DO i = 1,sNx+1
600 jmc 1.41 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 jmc 1.15 ENDDO
604 jmc 1.13 ENDDO
605 jmc 1.15 ENDDO
606 jmc 1.13 ENDDO
607 jmc 1.15 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 jmc 1.41 DO k=1,Nr
615 jmc 1.15 DO j = 1,sNy+1
616     DO i = 1,sNx
617 jmc 1.41 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 jmc 1.15 ENDDO
621     ENDDO
622     ENDDO
623     ENDDO
624     ENDDO
625     CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
626     ENDIF
627 jmc 1.31
628 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
629     DO bj = myByLo(myThid), myByHi(myThid)
630     DO bi = myBxLo(myThid), myBxHi(myThid)
631 jmc 1.41 DO k=1,Nr
632 jmc 1.15 km1 = MAX(k-1,1)
633     DO j = 1,sNy
634     DO i = 1,sNx
635 jmc 1.41 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 jmc 1.15 ENDDO
638 jmc 1.13 ENDDO
639 jmc 1.15 ENDDO
640 jmc 1.13 ENDDO
641 jmc 1.15 ENDDO
642     CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
643     ENDIF
644 jmc 1.31
645 jmc 1.15 C-- fill tracer state-var diagnostics: end
646 jmc 1.13 ENDIF
647 jmc 1.15
648 molod 1.29 IF ( selectVars.EQ.4 ) THEN
649     C Second fill sequence for state variable tendency diagnostics: add state variable
650 dimitri 1.39 C NOTE: send a '-1' for the bibjflag and do not increment counter
651 jmc 1.42 C (previous fill for these diagnostics DID allow counter to be incremented)
652 molod 1.29
653 jmc 1.42 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 molod 1.29 ENDDO
661 jmc 1.42 ENDDO
662 jmc 1.31
663 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
664     DO bj = myByLo(myThid), myByHi(myThid)
665     DO bi = myBxLo(myThid), myBxHi(myThid)
666 jmc 1.41 DO k=1,Nr
667 jmc 1.42 tmpFac = 86400. _d 0/dTtracerLev(k)
668 molod 1.29 DO j = 1,sNy
669     DO i = 1,sNx
670 jmc 1.42 tmpMk(i,j,k,bi,bj) = tmpFac*theta(i,j,k,bi,bj)
671 molod 1.29 ENDDO
672     ENDDO
673     ENDDO
674     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
675 rpa 1.43 #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 molod 1.29 ENDDO
681     ENDDO
682     ENDIF
683 jmc 1.31
684 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
685     DO bj = myByLo(myThid), myByHi(myThid)
686     DO bi = myBxLo(myThid), myBxHi(myThid)
687 jmc 1.41 DO k=1,Nr
688 jmc 1.42 tmpFac = 86400. _d 0/dTtracerLev(k)
689 molod 1.29 DO j = 1,sNy
690     DO i = 1,sNx
691 jmc 1.42 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
692 molod 1.29 ENDDO
693     ENDDO
694     ENDDO
695     CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
696 rpa 1.43 #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 molod 1.29 ENDDO
702     ENDDO
703     ENDIF
704    
705     C-- fill state tendency diagnostics the second time: end
706     ENDIF
707    
708 jmc 1.7 #endif /* ALLOW_DIAGNOSTICS */
709 jmc 1.31
710     RETURN
711 jmc 1.13 END

  ViewVC Help
Powered by ViewVC 1.1.22