/[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.35 - (hide annotations) (download)
Mon Feb 5 03:14:26 2007 UTC (17 years, 3 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58w_post, checkpoint58x_post, checkpoint59d, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59, checkpoint58y_post, checkpoint58v_post
Changes since 1.34: +7 -7 lines
fix: C-grid vector type quantities: filled over 1:sNx+1 (U) & 1:sNy+1 (V).

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

  ViewVC Help
Powered by ViewVC 1.1.22