/[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.31 - (hide annotations) (download)
Sun Jun 25 23:06:24 2006 UTC (17 years, 10 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58l_post, checkpoint58n_post, checkpoint58o_post, checkpoint58k_post, checkpoint58m_post
Changes since 1.30: +37 -49 lines
main diagnostics list: define title of isomorphic variables
  (+remove units in title) according to the current config.

1 jmc 1.31 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.30 2006/02/16 23:03:16 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     #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     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
281     & *(totPhiHyd(i,j,K,bi,bj)+totPhiHyd(i-1,j,K,bi,bj))
282     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     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
297     & *(totPhiHyd(i,j,K,bi,bj)+totPhiHyd(i,j-1,K,bi,bj))
298     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 molod 1.20 IF ( DIAGNOSTICS_IS_ON('PRESSURE',myThid) ) THEN
307     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     & + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0
319     tmp1k(i,j,bi,bj) = tmp1k(i,j,bi,bj)
320     & + drF(k)*hFacC(i,j,k,bi,bj)
321     ENDDO
322     ENDDO
323     ENDDO
324 molod 1.20 ENDDO
325     ENDDO
326     CALL DIAGNOSTICS_FILL(tmpMk,'PRESSURE',0,Nr,0,1,1,myThid)
327     ENDIF
328    
329 molod 1.29 C First fill sequence for state variable tendency diagnostics: subtract state variable
330     C NOTE: send a '0' for the bibjflag and allow counter to be incremented
331     C (next fill for these diagnostics will NOT allow counter to be incremented)
332    
333     IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
334     DO bj = myByLo(myThid), myByHi(myThid)
335     DO bi = myBxLo(myThid), myBxHi(myThid)
336     DO K=1,Nr
337     DO j = 1,sNy
338     DO i = 1,sNx
339 molod 1.30 tmpMk(i,j,K,bi,bj) = -uVel(i,j,K,bi,bj)*
340     . *86400./dTtracerLev(1)
341 molod 1.29 ENDDO
342     ENDDO
343     ENDDO
344     ENDDO
345     ENDDO
346     CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,0,1,1,myThid)
347     ENDIF
348    
349     IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
350     DO bj = myByLo(myThid), myByHi(myThid)
351     DO bi = myBxLo(myThid), myBxHi(myThid)
352     DO K=1,Nr
353     DO j = 1,sNy
354     DO i = 1,sNx
355     tmpMk(i,j,K,bi,bj) = -vVel(i,j,K,bi,bj)
356 molod 1.30 . *86400./dTtracerLev(1)
357 molod 1.29 ENDDO
358     ENDDO
359     ENDDO
360     ENDDO
361     ENDDO
362     CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,0,1,1,myThid)
363     ENDIF
364 jmc 1.31
365 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
366     DO bj = myByLo(myThid), myByHi(myThid)
367     DO bi = myBxLo(myThid), myBxHi(myThid)
368     DO K=1,Nr
369     DO j = 1,sNy
370     DO i = 1,sNx
371     tmpMk(i,j,K,bi,bj) = -theta(i,j,K,bi,bj)
372 molod 1.30 . *86400./dTtracerLev(1)
373 molod 1.29 ENDDO
374     ENDDO
375     ENDDO
376     ENDDO
377     ENDDO
378     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
379     ENDIF
380 jmc 1.31
381 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
382     DO bj = myByLo(myThid), myByHi(myThid)
383     DO bi = myBxLo(myThid), myBxHi(myThid)
384     DO K=1,Nr
385     DO j = 1,sNy
386     DO i = 1,sNx
387     tmpMk(i,j,K,bi,bj) = -salt(i,j,K,bi,bj)
388 molod 1.30 . *86400./dTtracerLev(1)
389 molod 1.29 ENDDO
390     ENDDO
391     ENDDO
392     ENDDO
393     ENDDO
394     CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
395     ENDIF
396    
397 jmc 1.15 C-- fill momentum state-var diagnostics: end
398 jmc 1.13 ENDIF
399 jmc 1.15
400     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
401    
402     IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
403     C-- fill tracer state-var diagnostics:
404    
405     CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
406     CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
407 jmc 1.21
408 molod 1.24 #ifdef ALLOW_FIZHI
409     IF((useFIZHI).and.(DIAGNOSTICS_IS_ON('RELHUM ',myThid)))THEN
410     kappa = getcon('KAPPA')
411     do bj = myByLo(myThid), myByHi(myThid)
412     do bi = myBxLo(myThid), myBxHi(myThid)
413     do j = 1,sNy
414     do i = 1,sNx
415     do K = 1,Nr
416     dummy1 = theta(i,j,k,bi,bj) * ((rc(k)/100.)/1000.)**kappa
417     dummy2 = rc(k) / 100.
418     call qsat(dummy1,dummy2,dummy3,dummy4,.false.)
419 jmc 1.31 tmpMk(i,j,K,bi,bj) = hfacC(i,j,K,bi,bj) *
420 molod 1.24 . salt(i,j,k,bi,bj) * 100. / dummy3
421     enddo
422     enddo
423     enddo
424     enddo
425     enddo
426     CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
427     ENDIF
428     #endif /* ALLOW_FIZHI */
429    
430 jmc 1.21 CALL DIAGNOSTICS_SCALE_FILL(theta,tmpFac,2,
431     & 'THETASQ ',0,Nr,0,1,1,myThid)
432     CALL DIAGNOSTICS_SCALE_FILL(salt,tmpFac,2,
433     & 'SALTSQ ',0,Nr,0,1,1,myThid)
434 jmc 1.31
435 jmc 1.25 c IF ( DIAGNOSTICS_IS_ON('SST ',myThid) ) THEN
436     c DO bj = myByLo(myThid), myByHi(myThid)
437     c DO bi = myBxLo(myThid), myBxHi(myThid)
438     c DO j = 1,sNy
439     c DO i = 1,sNx
440     c tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)
441     c ENDDO
442     c ENDDO
443     c ENDDO
444     c ENDDO
445     c CALL DIAGNOSTICS_FILL(tmp1k,'SST ',0,1,0,1,1,myThid)
446     c ENDIF
447 jmc 1.31
448 jmc 1.25 c IF ( DIAGNOSTICS_IS_ON('SSS ',myThid) ) THEN
449     c DO bj = myByLo(myThid), myByHi(myThid)
450     c DO bi = myBxLo(myThid), myBxHi(myThid)
451     c DO j = 1,sNy
452     c DO i = 1,sNx
453     c tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)
454     c ENDDO
455     c ENDDO
456     c ENDDO
457     c ENDDO
458     c CALL DIAGNOSTICS_FILL(tmp1k,'SSS ',0,1,0,1,1,myThid)
459     c ENDIF
460 jmc 1.15
461 jmc 1.31 IF ( fluidIsWater .AND.
462     & ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
463     & .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
464 dimitri 1.18 DO bj = myByLo(myThid), myByHi(myThid)
465     DO bi = myBxLo(myThid), myBxHi(myThid)
466     DO K=1,Nr
467     DO j = 1,sNy
468     DO i = 1,sNx
469 jmc 1.25 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35. _d 0
470 dimitri 1.18 ENDDO
471     ENDDO
472     ENDDO
473     ENDDO
474     ENDDO
475 jmc 1.31 CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
476     CALL DIAGNOSTICS_SCALE_FILL(tmpMk,tmpFac,2,
477     & 'SALTSQan',0,Nr,0,1,1,myThid)
478 dimitri 1.18 ENDIF
479 jmc 1.31
480 jmc 1.15 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
481 jmc 1.13
482 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
483     DO bj = myByLo(myThid), myByHi(myThid)
484     DO bi = myBxLo(myThid), myBxHi(myThid)
485     DO K=1,Nr
486 jmc 1.13 DO j = 1,sNy
487     DO i = 1,sNx
488 jmc 1.31 tmpMk(i,j,K,bi,bj)
489 edhill 1.11 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
490 jmc 1.13 ENDDO
491     ENDDO
492 jmc 1.15 ENDDO
493 jmc 1.13 ENDDO
494 jmc 1.15 ENDDO
495     CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
496     ENDIF
497    
498     IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
499     DO bj = myByLo(myThid), myByHi(myThid)
500     DO bi = myBxLo(myThid), myBxHi(myThid)
501     DO K=1,Nr
502 jmc 1.13 DO j = 1,sNy
503     DO i = 1,sNx
504 jmc 1.31 tmpMk(i,j,K,bi,bj)
505 edhill 1.11 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
506 jmc 1.13 ENDDO
507     ENDDO
508 jmc 1.15 ENDDO
509 jmc 1.13 ENDDO
510 jmc 1.15 ENDDO
511     CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
512     ENDIF
513    
514     CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
515 jmc 1.13
516 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
517     DO bj = myByLo(myThid), myByHi(myThid)
518     DO bi = myBxLo(myThid), myBxHi(myThid)
519     DO K=1,Nr
520 jmc 1.13 DO j = 1,sNy
521 jmc 1.15 DO i = 1,sNx+1
522     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
523 jmc 1.13 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
524     & * hFacW(i,j,K,bi,bj)
525 jmc 1.15 ENDDO
526 jmc 1.13 ENDDO
527 jmc 1.15 ENDDO
528 jmc 1.13 ENDDO
529 jmc 1.15 ENDDO
530     CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
531     ENDIF
532    
533     IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
534     DO bj = myByLo(myThid), myByHi(myThid)
535     DO bi = myBxLo(myThid), myBxHi(myThid)
536     DO K=1,Nr
537     DO j = 1,sNy+1
538     DO i = 1,sNx
539     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
540 jmc 1.13 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
541     & * hFacS(i,j,K,bi,bj)
542 jmc 1.15 ENDDO
543     ENDDO
544     ENDDO
545     ENDDO
546     ENDDO
547     CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
548     ENDIF
549 jmc 1.31
550 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
551     DO bj = myByLo(myThid), myByHi(myThid)
552     DO bi = myBxLo(myThid), myBxHi(myThid)
553     DO K=1,Nr
554     km1 = MAX(k-1,1)
555     DO j = 1,sNy
556     DO i = 1,sNx
557     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
558     & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
559     ENDDO
560 jmc 1.13 ENDDO
561 jmc 1.15 ENDDO
562 jmc 1.13 ENDDO
563 jmc 1.15 ENDDO
564     CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
565     ENDIF
566    
567     IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
568     DO bj = myByLo(myThid), myByHi(myThid)
569     DO bi = myBxLo(myThid), myBxHi(myThid)
570     DO K=1,Nr
571 jmc 1.13 DO j = 1,sNy
572 jmc 1.15 DO i = 1,sNx+1
573     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
574 jmc 1.13 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
575     & * hFacW(i,j,K,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,'USLTMASS',0,Nr,0,1,1,myThid)
582     ENDIF
583    
584     IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
585     DO bj = myByLo(myThid), myByHi(myThid)
586     DO bi = myBxLo(myThid), myBxHi(myThid)
587     DO K=1,Nr
588     DO j = 1,sNy+1
589     DO i = 1,sNx
590     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
591 jmc 1.13 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
592     & * hFacS(i,j,K,bi,bj)
593 jmc 1.15 ENDDO
594     ENDDO
595     ENDDO
596     ENDDO
597     ENDDO
598     CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
599     ENDIF
600 jmc 1.31
601 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
602     DO bj = myByLo(myThid), myByHi(myThid)
603     DO bi = myBxLo(myThid), myBxHi(myThid)
604     DO K=1,Nr
605     km1 = MAX(k-1,1)
606     DO j = 1,sNy
607     DO i = 1,sNx
608     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
609     & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
610     ENDDO
611 jmc 1.13 ENDDO
612 jmc 1.15 ENDDO
613 jmc 1.13 ENDDO
614 jmc 1.15 ENDDO
615     CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
616     ENDIF
617 jmc 1.31
618 jmc 1.15 C-- fill tracer state-var diagnostics: end
619 jmc 1.13 ENDIF
620 jmc 1.15
621 molod 1.29 IF ( selectVars.EQ.4 ) THEN
622     C Second fill sequence for state variable tendency diagnostics: add state variable
623     C NOTE: send a '-1' for the bibjflag and allow counter to be incremented
624     C this means that diag fill is called from inside the bi-bj loop
625    
626     IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
627     DO bj = myByLo(myThid), myByHi(myThid)
628     DO bi = myBxLo(myThid), myBxHi(myThid)
629     DO K=1,Nr
630     DO j = 1,sNy
631     DO i = 1,sNx
632     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)
633 molod 1.30 . *86400./dTtracerLev(1)
634 molod 1.29 ENDDO
635     ENDDO
636     ENDDO
637     CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,-1,bi,bj,myThid)
638     ENDDO
639     ENDDO
640     ENDIF
641    
642     IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
643     DO bj = myByLo(myThid), myByHi(myThid)
644     DO bi = myBxLo(myThid), myBxHi(myThid)
645     DO K=1,Nr
646     DO j = 1,sNy
647     DO i = 1,sNx
648     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)
649 molod 1.30 . *86400./dTtracerLev(1)
650 molod 1.29 ENDDO
651     ENDDO
652     ENDDO
653     CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,-1,bi,bj,myThid)
654     ENDDO
655     ENDDO
656     ENDIF
657 jmc 1.31
658 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
659     DO bj = myByLo(myThid), myByHi(myThid)
660     DO bi = myBxLo(myThid), myBxHi(myThid)
661     DO K=1,Nr
662     DO j = 1,sNy
663     DO i = 1,sNx
664     tmpMk(i,j,K,bi,bj) = theta(i,j,K,bi,bj)
665 molod 1.30 . *86400./dTtracerLev(1)
666 molod 1.29 ENDDO
667     ENDDO
668     ENDDO
669     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
670     ENDDO
671     ENDDO
672     ENDIF
673 jmc 1.31
674 molod 1.29 IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
675     DO bj = myByLo(myThid), myByHi(myThid)
676     DO bi = myBxLo(myThid), myBxHi(myThid)
677     DO K=1,Nr
678     DO j = 1,sNy
679     DO i = 1,sNx
680     tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)
681 molod 1.30 . *86400./dTtracerLev(1)
682 molod 1.29 ENDDO
683     ENDDO
684     ENDDO
685     CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
686     ENDDO
687     ENDDO
688     ENDIF
689    
690     C-- fill state tendency diagnostics the second time: end
691     ENDIF
692    
693 jmc 1.7 #endif /* ALLOW_DIAGNOSTICS */
694 jmc 1.31
695     RETURN
696 jmc 1.13 END

  ViewVC Help
Powered by ViewVC 1.1.22