/[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.29 - (hide annotations) (download)
Tue Jan 17 16:06:12 2006 UTC (18 years, 3 months ago) by molod
Branch: MAIN
CVS Tags: checkpoint58a_post
Changes since 1.28: +135 -2 lines
Add new total tendency diagnostics for state variables

1 molod 1.29 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.28 2005/11/16 16:55:21 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     INTEGER selectVars
37 jmc 1.13 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    
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.14
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    
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    
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    
117     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    
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    
192     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    
208     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.13
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    
241     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.13
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    
290     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    
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     tmpMk(i,j,K,bi,bj) = -uVel(i,j,K,bi,bj)
340     ENDDO
341     ENDDO
342     ENDDO
343     ENDDO
344     ENDDO
345     CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,0,1,1,myThid)
346     ENDIF
347    
348     IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
349     DO bj = myByLo(myThid), myByHi(myThid)
350     DO bi = myBxLo(myThid), myBxHi(myThid)
351     DO K=1,Nr
352     DO j = 1,sNy
353     DO i = 1,sNx
354     tmpMk(i,j,K,bi,bj) = -vVel(i,j,K,bi,bj)
355     ENDDO
356     ENDDO
357     ENDDO
358     ENDDO
359     ENDDO
360     CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,0,1,1,myThid)
361     ENDIF
362    
363     IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
364     DO bj = myByLo(myThid), myByHi(myThid)
365     DO bi = myBxLo(myThid), myBxHi(myThid)
366     DO K=1,Nr
367     DO j = 1,sNy
368     DO i = 1,sNx
369     tmpMk(i,j,K,bi,bj) = -theta(i,j,K,bi,bj)
370     ENDDO
371     ENDDO
372     ENDDO
373     ENDDO
374     ENDDO
375     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
376     ENDIF
377    
378     IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
379     DO bj = myByLo(myThid), myByHi(myThid)
380     DO bi = myBxLo(myThid), myBxHi(myThid)
381     DO K=1,Nr
382     DO j = 1,sNy
383     DO i = 1,sNx
384     tmpMk(i,j,K,bi,bj) = -salt(i,j,K,bi,bj)
385     ENDDO
386     ENDDO
387     ENDDO
388     ENDDO
389     ENDDO
390     CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
391     ENDIF
392    
393 jmc 1.15 C-- fill momentum state-var diagnostics: end
394 jmc 1.13 ENDIF
395 jmc 1.15
396     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
397    
398     IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
399     C-- fill tracer state-var diagnostics:
400    
401     CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
402     CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
403 jmc 1.21
404 molod 1.24 #ifdef ALLOW_FIZHI
405     IF((useFIZHI).and.(DIAGNOSTICS_IS_ON('RELHUM ',myThid)))THEN
406     kappa = getcon('KAPPA')
407     do bj = myByLo(myThid), myByHi(myThid)
408     do bi = myBxLo(myThid), myBxHi(myThid)
409     do j = 1,sNy
410     do i = 1,sNx
411     do K = 1,Nr
412     dummy1 = theta(i,j,k,bi,bj) * ((rc(k)/100.)/1000.)**kappa
413     dummy2 = rc(k) / 100.
414     call qsat(dummy1,dummy2,dummy3,dummy4,.false.)
415     tmpMk(i,j,K,bi,bj) = hfacC(i,j,K,bi,bj) *
416     . salt(i,j,k,bi,bj) * 100. / dummy3
417     enddo
418     enddo
419     enddo
420     enddo
421     enddo
422     CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM ',0,Nr,0,1,1,myThid)
423     ENDIF
424     #endif /* ALLOW_FIZHI */
425    
426 jmc 1.21 CALL DIAGNOSTICS_SCALE_FILL(theta,tmpFac,2,
427     & 'THETASQ ',0,Nr,0,1,1,myThid)
428     CALL DIAGNOSTICS_SCALE_FILL(salt,tmpFac,2,
429     & 'SALTSQ ',0,Nr,0,1,1,myThid)
430 dimitri 1.19
431 jmc 1.25 c IF ( DIAGNOSTICS_IS_ON('SST ',myThid) ) THEN
432     c DO bj = myByLo(myThid), myByHi(myThid)
433     c DO bi = myBxLo(myThid), myBxHi(myThid)
434     c DO j = 1,sNy
435     c DO i = 1,sNx
436     c tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)
437     c ENDDO
438     c ENDDO
439     c ENDDO
440     c ENDDO
441     c CALL DIAGNOSTICS_FILL(tmp1k,'SST ',0,1,0,1,1,myThid)
442     c ENDIF
443    
444     c IF ( DIAGNOSTICS_IS_ON('SSS ',myThid) ) THEN
445     c DO bj = myByLo(myThid), myByHi(myThid)
446     c DO bi = myBxLo(myThid), myBxHi(myThid)
447     c DO j = 1,sNy
448     c DO i = 1,sNx
449     c tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)
450     c ENDDO
451     c ENDDO
452     c ENDDO
453     c ENDDO
454     c CALL DIAGNOSTICS_FILL(tmp1k,'SSS ',0,1,0,1,1,myThid)
455     c ENDIF
456 jmc 1.15
457 dimitri 1.18 IF ( DIAGNOSTICS_IS_ON('SALTanom',myThid) ) THEN
458     DO bj = myByLo(myThid), myByHi(myThid)
459     DO bi = myBxLo(myThid), myBxHi(myThid)
460     DO K=1,Nr
461     DO j = 1,sNy
462     DO i = 1,sNx
463 jmc 1.25 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35. _d 0
464 dimitri 1.18 ENDDO
465     ENDDO
466     ENDDO
467     ENDDO
468     ENDDO
469     CALL DIAGNOSTICS_FILL(tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
470     ENDIF
471    
472     IF ( DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) THEN
473     DO bj = myByLo(myThid), myByHi(myThid)
474     DO bi = myBxLo(myThid), myBxHi(myThid)
475     DO K=1,Nr
476     DO j = 1,sNy
477     DO i = 1,sNx
478 jmc 1.25 tmpMk(i,j,K,bi,bj) = (salt(i,j,K,bi,bj)-35. _d 0)
479     & *(salt(i,j,K,bi,bj)-35. _d 0)
480 dimitri 1.18 ENDDO
481     ENDDO
482     ENDDO
483     ENDDO
484     ENDDO
485     CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQan',0,Nr,0,1,1,myThid)
486     ENDIF
487    
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     DO i = 1,sNx
496     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.13 DO j = 1,sNy
511     DO i = 1,sNx
512     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    
558     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    
609     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    
626     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     DO i = 1,sNx
640     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)
641     ENDDO
642     ENDDO
643     ENDDO
644     CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,-1,bi,bj,myThid)
645     ENDDO
646     ENDDO
647     ENDIF
648    
649     IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
650     DO bj = myByLo(myThid), myByHi(myThid)
651     DO bi = myBxLo(myThid), myBxHi(myThid)
652     DO K=1,Nr
653     DO j = 1,sNy
654     DO i = 1,sNx
655     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)
656     ENDDO
657     ENDDO
658     ENDDO
659     CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,-1,bi,bj,myThid)
660     ENDDO
661     ENDDO
662     ENDIF
663    
664     IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
665     DO bj = myByLo(myThid), myByHi(myThid)
666     DO bi = myBxLo(myThid), myBxHi(myThid)
667     DO K=1,Nr
668     DO j = 1,sNy
669     DO i = 1,sNx
670     tmpMk(i,j,K,bi,bj) = theta(i,j,K,bi,bj)
671     ENDDO
672     ENDDO
673     ENDDO
674     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
675     ENDDO
676     ENDDO
677     ENDIF
678    
679     IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
680     DO bj = myByLo(myThid), myByHi(myThid)
681     DO bi = myBxLo(myThid), myBxHi(myThid)
682     DO K=1,Nr
683     DO j = 1,sNy
684     DO i = 1,sNx
685     tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)
686     ENDDO
687     ENDDO
688     ENDDO
689     CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
690     ENDDO
691     ENDDO
692     ENDIF
693    
694     C-- fill state tendency diagnostics the second time: end
695     ENDIF
696    
697 jmc 1.7 #endif /* ALLOW_DIAGNOSTICS */
698 edhill 1.11
699 jmc 1.13 RETURN
700     END

  ViewVC Help
Powered by ViewVC 1.1.22