/[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.30 - (hide annotations) (download)
Thu Feb 16 23:03:16 2006 UTC (18 years, 3 months ago) by molod
Branch: MAIN
CVS Tags: checkpoint58e_post, checkpoint58h_post, checkpoint58j_post, checkpoint58f_post, checkpoint58d_post, checkpoint58c_post, checkpoint58i_post, checkpoint58g_post, checkpoint58b_post
Changes since 1.29: +10 -2 lines
Change units for total tendency diagnostics

1 molod 1.30 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.29 2006/01/17 16:06:12 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 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    
365     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    
381     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     tmpMk(i,j,K,bi,bj) = hfacC(i,j,K,bi,bj) *
420     . 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 dimitri 1.19
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    
448     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 dimitri 1.18 IF ( DIAGNOSTICS_IS_ON('SALTanom',myThid) ) THEN
462     DO bj = myByLo(myThid), myByHi(myThid)
463     DO bi = myBxLo(myThid), myBxHi(myThid)
464     DO K=1,Nr
465     DO j = 1,sNy
466     DO i = 1,sNx
467 jmc 1.25 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35. _d 0
468 dimitri 1.18 ENDDO
469     ENDDO
470     ENDDO
471     ENDDO
472     ENDDO
473     CALL DIAGNOSTICS_FILL(tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
474     ENDIF
475    
476     IF ( DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) THEN
477     DO bj = myByLo(myThid), myByHi(myThid)
478     DO bi = myBxLo(myThid), myBxHi(myThid)
479     DO K=1,Nr
480     DO j = 1,sNy
481     DO i = 1,sNx
482 jmc 1.25 tmpMk(i,j,K,bi,bj) = (salt(i,j,K,bi,bj)-35. _d 0)
483     & *(salt(i,j,K,bi,bj)-35. _d 0)
484 dimitri 1.18 ENDDO
485     ENDDO
486     ENDDO
487     ENDDO
488     ENDDO
489     CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQan',0,Nr,0,1,1,myThid)
490     ENDIF
491    
492 jmc 1.15 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
493 jmc 1.13
494 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
495     DO bj = myByLo(myThid), myByHi(myThid)
496     DO bi = myBxLo(myThid), myBxHi(myThid)
497     DO K=1,Nr
498 jmc 1.13 DO j = 1,sNy
499     DO i = 1,sNx
500     tmpMk(i,j,K,bi,bj)
501 edhill 1.11 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
502 jmc 1.13 ENDDO
503     ENDDO
504 jmc 1.15 ENDDO
505 jmc 1.13 ENDDO
506 jmc 1.15 ENDDO
507     CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
508     ENDIF
509    
510     IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
511     DO bj = myByLo(myThid), myByHi(myThid)
512     DO bi = myBxLo(myThid), myBxHi(myThid)
513     DO K=1,Nr
514 jmc 1.13 DO j = 1,sNy
515     DO i = 1,sNx
516     tmpMk(i,j,K,bi,bj)
517 edhill 1.11 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
518 jmc 1.13 ENDDO
519     ENDDO
520 jmc 1.15 ENDDO
521 jmc 1.13 ENDDO
522 jmc 1.15 ENDDO
523     CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
524     ENDIF
525    
526     CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
527 jmc 1.13
528 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
529     DO bj = myByLo(myThid), myByHi(myThid)
530     DO bi = myBxLo(myThid), myBxHi(myThid)
531     DO K=1,Nr
532 jmc 1.13 DO j = 1,sNy
533 jmc 1.15 DO i = 1,sNx+1
534     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
535 jmc 1.13 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
536     & * hFacW(i,j,K,bi,bj)
537 jmc 1.15 ENDDO
538 jmc 1.13 ENDDO
539 jmc 1.15 ENDDO
540 jmc 1.13 ENDDO
541 jmc 1.15 ENDDO
542     CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
543     ENDIF
544    
545     IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
546     DO bj = myByLo(myThid), myByHi(myThid)
547     DO bi = myBxLo(myThid), myBxHi(myThid)
548     DO K=1,Nr
549     DO j = 1,sNy+1
550     DO i = 1,sNx
551     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
552 jmc 1.13 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
553     & * hFacS(i,j,K,bi,bj)
554 jmc 1.15 ENDDO
555     ENDDO
556     ENDDO
557     ENDDO
558     ENDDO
559     CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
560     ENDIF
561    
562     IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
563     DO bj = myByLo(myThid), myByHi(myThid)
564     DO bi = myBxLo(myThid), myBxHi(myThid)
565     DO K=1,Nr
566     km1 = MAX(k-1,1)
567     DO j = 1,sNy
568     DO i = 1,sNx
569     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
570     & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
571     ENDDO
572 jmc 1.13 ENDDO
573 jmc 1.15 ENDDO
574 jmc 1.13 ENDDO
575 jmc 1.15 ENDDO
576     CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
577     ENDIF
578    
579     IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
580     DO bj = myByLo(myThid), myByHi(myThid)
581     DO bi = myBxLo(myThid), myBxHi(myThid)
582     DO K=1,Nr
583 jmc 1.13 DO j = 1,sNy
584 jmc 1.15 DO i = 1,sNx+1
585     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
586 jmc 1.13 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
587     & * hFacW(i,j,K,bi,bj)
588 jmc 1.15 ENDDO
589 jmc 1.13 ENDDO
590 jmc 1.15 ENDDO
591 jmc 1.13 ENDDO
592 jmc 1.15 ENDDO
593     CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
594     ENDIF
595    
596     IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
597     DO bj = myByLo(myThid), myByHi(myThid)
598     DO bi = myBxLo(myThid), myBxHi(myThid)
599     DO K=1,Nr
600     DO j = 1,sNy+1
601     DO i = 1,sNx
602     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
603 jmc 1.13 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
604     & * hFacS(i,j,K,bi,bj)
605 jmc 1.15 ENDDO
606     ENDDO
607     ENDDO
608     ENDDO
609     ENDDO
610     CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
611     ENDIF
612    
613     IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
614     DO bj = myByLo(myThid), myByHi(myThid)
615     DO bi = myBxLo(myThid), myBxHi(myThid)
616     DO K=1,Nr
617     km1 = MAX(k-1,1)
618     DO j = 1,sNy
619     DO i = 1,sNx
620     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
621     & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
622     ENDDO
623 jmc 1.13 ENDDO
624 jmc 1.15 ENDDO
625 jmc 1.13 ENDDO
626 jmc 1.15 ENDDO
627     CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
628     ENDIF
629    
630     C-- fill tracer state-var diagnostics: end
631 jmc 1.13 ENDIF
632 jmc 1.15
633 molod 1.29 IF ( selectVars.EQ.4 ) THEN
634     C Second fill sequence for state variable tendency diagnostics: add state variable
635     C NOTE: send a '-1' for the bibjflag and allow counter to be incremented
636     C this means that diag fill is called from inside the bi-bj loop
637    
638     IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
639     DO bj = myByLo(myThid), myByHi(myThid)
640     DO bi = myBxLo(myThid), myBxHi(myThid)
641     DO K=1,Nr
642     DO j = 1,sNy
643     DO i = 1,sNx
644     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)
645 molod 1.30 . *86400./dTtracerLev(1)
646 molod 1.29 ENDDO
647     ENDDO
648     ENDDO
649     CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,-1,bi,bj,myThid)
650     ENDDO
651     ENDDO
652     ENDIF
653    
654     IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
655     DO bj = myByLo(myThid), myByHi(myThid)
656     DO bi = myBxLo(myThid), myBxHi(myThid)
657     DO K=1,Nr
658     DO j = 1,sNy
659     DO i = 1,sNx
660     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)
661 molod 1.30 . *86400./dTtracerLev(1)
662 molod 1.29 ENDDO
663     ENDDO
664     ENDDO
665     CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,-1,bi,bj,myThid)
666     ENDDO
667     ENDDO
668     ENDIF
669    
670     IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
671     DO bj = myByLo(myThid), myByHi(myThid)
672     DO bi = myBxLo(myThid), myBxHi(myThid)
673     DO K=1,Nr
674     DO j = 1,sNy
675     DO i = 1,sNx
676     tmpMk(i,j,K,bi,bj) = theta(i,j,K,bi,bj)
677 molod 1.30 . *86400./dTtracerLev(1)
678 molod 1.29 ENDDO
679     ENDDO
680     ENDDO
681     CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
682     ENDDO
683     ENDDO
684     ENDIF
685    
686     IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
687     DO bj = myByLo(myThid), myByHi(myThid)
688     DO bi = myBxLo(myThid), myBxHi(myThid)
689     DO K=1,Nr
690     DO j = 1,sNy
691     DO i = 1,sNx
692     tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)
693 molod 1.30 . *86400./dTtracerLev(1)
694 molod 1.29 ENDDO
695     ENDDO
696     ENDDO
697     CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
698     ENDDO
699     ENDDO
700     ENDIF
701    
702     C-- fill state tendency diagnostics the second time: end
703     ENDIF
704    
705 jmc 1.7 #endif /* ALLOW_DIAGNOSTICS */
706 edhill 1.11
707 jmc 1.13 RETURN
708     END

  ViewVC Help
Powered by ViewVC 1.1.22