/[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.42 - (hide annotations) (download)
Tue Dec 10 22:24:29 2013 UTC (10 years, 5 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 jmc 1.42 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.41 2011/11/30 20:59:40 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     ENDIF
374 jmc 1.31
375 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
376     DO bj = myByLo(myThid), myByHi(myThid)
377     DO bi = myBxLo(myThid), myBxHi(myThid)
378 jmc 1.41 DO k=1,Nr
379 jmc 1.42 tmpFac = -86400. _d 0/dTtracerLev(k)
380 molod 1.29 DO j = 1,sNy
381     DO i = 1,sNx
382 jmc 1.42 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
383 molod 1.29 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 jmc 1.15 C-- fill momentum state-var diagnostics: end
392 jmc 1.13 ENDIF
393 jmc 1.15
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 jmc 1.21
402 molod 1.24 #ifdef ALLOW_FIZHI
403 jmc 1.41 IF ( useFIZHI .AND. DIAGNOSTICS_IS_ON('RELHUM ',myThid) ) THEN
404 molod 1.24 kappa = getcon('KAPPA')
405 jmc 1.41 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 molod 1.24 CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
421     ENDIF
422     #endif /* ALLOW_FIZHI */
423    
424 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( theta, oneRL, 2,
425 jmc 1.21 & 'THETASQ ',0,Nr,0,1,1,myThid)
426 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( salt, oneRL, 2,
427 jmc 1.21 & 'SALTSQ ',0,Nr,0,1,1,myThid)
428 jmc 1.31
429 jmc 1.41 #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 jmc 1.25 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 jmc 1.31
465 jmc 1.25 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 jmc 1.15
478 jmc 1.31 IF ( fluidIsWater .AND.
479     & ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
480     & .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
481 dimitri 1.18 DO bj = myByLo(myThid), myByHi(myThid)
482     DO bi = myBxLo(myThid), myBxHi(myThid)
483 jmc 1.41 DO k=1,Nr
484 dimitri 1.18 DO j = 1,sNy
485     DO i = 1,sNx
486 jmc 1.41 tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)-35. _d 0
487 dimitri 1.18 ENDDO
488     ENDDO
489     ENDDO
490     ENDDO
491     ENDDO
492 jmc 1.31 CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
493 jmc 1.42 CALL DIAGNOSTICS_SCALE_FILL( tmpMk, oneRL, 2,
494 jmc 1.31 & 'SALTSQan',0,Nr,0,1,1,myThid)
495 dimitri 1.18 ENDIF
496 jmc 1.31
497 jmc 1.15 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
498 jmc 1.13
499 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
500     DO bj = myByLo(myThid), myByHi(myThid)
501     DO bi = myBxLo(myThid), myBxHi(myThid)
502 jmc 1.41 DO k=1,Nr
503 jmc 1.13 DO j = 1,sNy
504 jmc 1.35 DO i = 1,sNx+1
505 jmc 1.41 tmpMk(i,j,k,bi,bj)
506     & = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
507 jmc 1.13 ENDDO
508     ENDDO
509 jmc 1.15 ENDDO
510 jmc 1.13 ENDDO
511 jmc 1.15 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 jmc 1.41 DO k=1,Nr
519 jmc 1.35 DO j = 1,sNy+1
520 jmc 1.13 DO i = 1,sNx
521 jmc 1.41 tmpMk(i,j,k,bi,bj)
522     & = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
523 jmc 1.13 ENDDO
524     ENDDO
525 jmc 1.15 ENDDO
526 jmc 1.13 ENDDO
527 jmc 1.15 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 jmc 1.13
533 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
534     DO bj = myByLo(myThid), myByHi(myThid)
535     DO bi = myBxLo(myThid), myBxHi(myThid)
536 jmc 1.41 DO k=1,Nr
537 jmc 1.13 DO j = 1,sNy
538 jmc 1.15 DO i = 1,sNx+1
539 jmc 1.41 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 jmc 1.15 ENDDO
543 jmc 1.13 ENDDO
544 jmc 1.15 ENDDO
545 jmc 1.13 ENDDO
546 jmc 1.15 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 jmc 1.41 DO k=1,Nr
554 jmc 1.15 DO j = 1,sNy+1
555     DO i = 1,sNx
556 jmc 1.41 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 jmc 1.15 ENDDO
560     ENDDO
561     ENDDO
562     ENDDO
563     ENDDO
564     CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
565     ENDIF
566 jmc 1.31
567 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
568     DO bj = myByLo(myThid), myByHi(myThid)
569     DO bi = myBxLo(myThid), myBxHi(myThid)
570 jmc 1.41 DO k=1,Nr
571 jmc 1.15 km1 = MAX(k-1,1)
572     DO j = 1,sNy
573     DO i = 1,sNx
574 jmc 1.41 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 jmc 1.15 ENDDO
577 jmc 1.13 ENDDO
578 jmc 1.15 ENDDO
579 jmc 1.13 ENDDO
580 jmc 1.15 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 jmc 1.41 DO k=1,Nr
588 jmc 1.13 DO j = 1,sNy
589 jmc 1.15 DO i = 1,sNx+1
590 jmc 1.41 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 jmc 1.15 ENDDO
594 jmc 1.13 ENDDO
595 jmc 1.15 ENDDO
596 jmc 1.13 ENDDO
597 jmc 1.15 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 jmc 1.41 DO k=1,Nr
605 jmc 1.15 DO j = 1,sNy+1
606     DO i = 1,sNx
607 jmc 1.41 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 jmc 1.15 ENDDO
611     ENDDO
612     ENDDO
613     ENDDO
614     ENDDO
615     CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
616     ENDIF
617 jmc 1.31
618 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
619     DO bj = myByLo(myThid), myByHi(myThid)
620     DO bi = myBxLo(myThid), myBxHi(myThid)
621 jmc 1.41 DO k=1,Nr
622 jmc 1.15 km1 = MAX(k-1,1)
623     DO j = 1,sNy
624     DO i = 1,sNx
625 jmc 1.41 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 jmc 1.15 ENDDO
628 jmc 1.13 ENDDO
629 jmc 1.15 ENDDO
630 jmc 1.13 ENDDO
631 jmc 1.15 ENDDO
632     CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
633     ENDIF
634 jmc 1.31
635 jmc 1.15 C-- fill tracer state-var diagnostics: end
636 jmc 1.13 ENDIF
637 jmc 1.15
638 molod 1.29 IF ( selectVars.EQ.4 ) THEN
639     C Second fill sequence for state variable tendency diagnostics: add state variable
640 dimitri 1.39 C NOTE: send a '-1' for the bibjflag and do not increment counter
641 jmc 1.42 C (previous fill for these diagnostics DID allow counter to be incremented)
642 molod 1.29
643 jmc 1.42 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 molod 1.29 ENDDO
651 jmc 1.42 ENDDO
652 jmc 1.31
653 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
654     DO bj = myByLo(myThid), myByHi(myThid)
655     DO bi = myBxLo(myThid), myBxHi(myThid)
656 jmc 1.41 DO k=1,Nr
657 jmc 1.42 tmpFac = 86400. _d 0/dTtracerLev(k)
658 molod 1.29 DO j = 1,sNy
659     DO i = 1,sNx
660 jmc 1.42 tmpMk(i,j,k,bi,bj) = tmpFac*theta(i,j,k,bi,bj)
661 molod 1.29 ENDDO
662     ENDDO
663     ENDDO
664     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
665     ENDDO
666     ENDDO
667     ENDIF
668 jmc 1.31
669 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
670     DO bj = myByLo(myThid), myByHi(myThid)
671     DO bi = myBxLo(myThid), myBxHi(myThid)
672 jmc 1.41 DO k=1,Nr
673 jmc 1.42 tmpFac = 86400. _d 0/dTtracerLev(k)
674 molod 1.29 DO j = 1,sNy
675     DO i = 1,sNx
676 jmc 1.42 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
677 molod 1.29 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 jmc 1.7 #endif /* ALLOW_DIAGNOSTICS */
689 jmc 1.31
690     RETURN
691 jmc 1.13 END

  ViewVC Help
Powered by ViewVC 1.1.22