/[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.37 - (hide annotations) (download)
Tue Apr 22 22:01:01 2008 UTC (16 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59q
Changes since 1.36: +8 -2 lines
add diagnostics for non-hydrostatic pressure

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

  ViewVC Help
Powered by ViewVC 1.1.22