/[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.15 - (hide annotations) (download)
Fri Jan 28 01:05:02 2005 UTC (19 years, 3 months ago) by jmc
Branch: MAIN
Changes since 1.14: +352 -272 lines
fill in state-variable diagnostics in 2 groups (momentum, tracer) to
 accomodate for synchronous or stagger time step.

1 jmc 1.15 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.14 2004/12/15 00:20:37 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     #include "GRID.h"
24     #include "DYNVARS.h"
25 jmc 1.12 #include "SURFACE.h"
26 molod 1.1
27 jmc 1.15 C !INPUT/OUTPUT PARAMETERS:
28     C == Routine arguments ==
29     C selectVars :: select which group of dianostics variables to fill-in
30     C = 1 :: fill-in diagnostics for tracer variables only
31     C = 2 :: fill-in diagnostics for momentum variables only
32     C = 3 :: fill-in diagnostics for momentum & tracer variables
33     C myThid :: my Thread Id number
34     INTEGER selectVars
35 jmc 1.13 INTEGER myThid
36 jmc 1.7
37     #ifdef ALLOW_DIAGNOSTICS
38 jmc 1.15 C !LOCAL VARIABLES:
39     C == Local variables ==
40 jmc 1.13 LOGICAL DIAGNOSTICS_IS_ON
41     EXTERNAL DIAGNOSTICS_IS_ON
42     _RL tmpMk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
43     _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
44     INTEGER i,j,K,bi,bj
45     INTEGER km1
46    
47 jmc 1.15 IF ( selectVars .GE. 2 ) THEN
48     C-- fill momentum state-var diagnostics:
49    
50     CALL DIAGNOSTICS_FILL(etaN,'ETAN ',0,1,0,1,1,myThid)
51 jmc 1.13
52 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('ETANSQ ',myThid) ) THEN
53     DO bj = myByLo(myThid), myByHi(myThid)
54     DO bi = myBxLo(myThid), myBxHi(myThid)
55     DO j = 1,sNy
56 jmc 1.13 DO i = 1,sNx
57     tmp1k(i,j,bi,bj) = etaN(i,j,bi,bj)*etaN(i,j,bi,bj)
58     ENDDO
59 jmc 1.15 ENDDO
60 jmc 1.13 ENDDO
61 jmc 1.15 ENDDO
62     CALL DIAGNOSTICS_FILL(tmp1k,'ETANSQ ',0,1,0,1,1,myThid)
63     ENDIF
64 jmc 1.14
65 jmc 1.12 #ifdef EXACT_CONSERV
66 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('DETADT2 ',myThid) ) THEN
67     DO bj = myByLo(myThid), myByHi(myThid)
68     DO bi = myBxLo(myThid), myBxHi(myThid)
69     DO j = 1,sNy
70 jmc 1.13 DO i = 1,sNx
71     tmp1k(i,j,bi,bj) = dEtaHdt(i,j,bi,bj)*dEtaHdt(i,j,bi,bj)
72     ENDDO
73 jmc 1.15 ENDDO
74 jmc 1.13 ENDDO
75 jmc 1.15 ENDDO
76     CALL DIAGNOSTICS_FILL(tmp1k,'DETADT2 ',0,1,0,1,1,myThid)
77     ENDIF
78 jmc 1.12 #endif
79    
80 jmc 1.15 CALL DIAGNOSTICS_FILL(uVel, 'UVEL ',0,Nr,0,1,1,myThid)
81     CALL DIAGNOSTICS_FILL(vVel, 'VVEL ',0,Nr,0,1,1,myThid)
82     CALL DIAGNOSTICS_FILL(wVel, 'WVEL ',0,Nr,0,1,1,myThid)
83    
84     IF ( DIAGNOSTICS_IS_ON('UVELSQ ',myThid) ) THEN
85     DO bj = myByLo(myThid), myByHi(myThid)
86     DO bi = myBxLo(myThid), myBxHi(myThid)
87     DO K=1,Nr
88     DO j = 1,sNy
89     DO i = 1,sNx+1
90     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*uVel(i,j,K,bi,bj)
91     ENDDO
92     ENDDO
93     ENDDO
94     ENDDO
95     ENDDO
96     CALL DIAGNOSTICS_FILL(tmpMk,'UVELSQ ',0,Nr,0,1,1,myThid)
97     ENDIF
98    
99     IF ( DIAGNOSTICS_IS_ON('VVELSQ ',myThid) ) THEN
100     DO bj = myByLo(myThid), myByHi(myThid)
101     DO bi = myBxLo(myThid), myBxHi(myThid)
102     DO K=1,Nr
103     DO j = 1,sNy+1
104     DO i = 1,sNx
105     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*vVel(i,j,K,bi,bj)
106     ENDDO
107     ENDDO
108     ENDDO
109     ENDDO
110     ENDDO
111     CALL DIAGNOSTICS_FILL(tmpMk,'VVELSQ ',0,Nr,0,1,1,myThid)
112     ENDIF
113    
114     IF ( DIAGNOSTICS_IS_ON('WVELSQ ',myThid) ) THEN
115     DO bj = myByLo(myThid), myByHi(myThid)
116     DO bi = myBxLo(myThid), myBxHi(myThid)
117     DO K=1,Nr
118     DO j = 1,sNy
119     DO i = 1,sNx
120     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*wVel(i,j,K,bi,bj)
121     ENDDO
122     ENDDO
123     ENDDO
124     ENDDO
125     ENDDO
126     CALL DIAGNOSTICS_FILL(tmpMk,'WVELSQ ',0,Nr,0,1,1,myThid)
127     ENDIF
128    
129     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
130    
131     IF ( DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN
132     DO bj = myByLo(myThid), myByHi(myThid)
133     DO bi = myBxLo(myThid), myBxHi(myThid)
134     DO K=1,Nr
135     DO j = 1,sNy
136     DO i = 1,sNx
137     tmpMk(i,j,K,bi,bj) = 0.25 _d 0
138     & *(uVel(i,j,K,bi,bj)+uVel(i+1,j,K,bi,bj))
139     & *(vVel(i,j,K,bi,bj)+vVel(i,j+1,K,bi,bj))
140     ENDDO
141     ENDDO
142     ENDDO
143     ENDDO
144     ENDDO
145     CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_C',0,Nr,0,1,1,myThid)
146     ENDIF
147    
148     IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN
149     DO bj = myByLo(myThid), myByHi(myThid)
150     DO bi = myBxLo(myThid), myBxHi(myThid)
151     DO K=1,Nr
152     DO j = 1,sNy+1
153     DO i = 1,sNx+1
154     tmpMk(i,j,K,bi,bj) = 0.25 _d 0
155     & *(uVel(i,j-1,K,bi,bj)+uVel(i,j,K,bi,bj))
156     & *(vVel(i-1,j,K,bi,bj)+vVel(i,j,K,bi,bj))
157     ENDDO
158     ENDDO
159     ENDDO
160     ENDDO
161     ENDDO
162     CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_Z',0,Nr,0,1,1,myThid)
163     ENDIF
164    
165     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
166    
167     IF ( DIAGNOSTICS_IS_ON('UVELTH ',myThid) ) THEN
168     DO bj = myByLo(myThid), myByHi(myThid)
169     DO bi = myBxLo(myThid), myBxHi(myThid)
170     DO K=1,Nr
171 jmc 1.13 DO j = 1,sNy
172 jmc 1.15 DO i = 1,sNx+1
173     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
174     & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
175     ENDDO
176 jmc 1.13 ENDDO
177 jmc 1.15 ENDDO
178 jmc 1.13 ENDDO
179 jmc 1.15 ENDDO
180     CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH ',0,Nr,0,1,1,myThid)
181     ENDIF
182    
183     IF ( DIAGNOSTICS_IS_ON('VVELTH ',myThid) ) THEN
184     DO bj = myByLo(myThid), myByHi(myThid)
185     DO bi = myBxLo(myThid), myBxHi(myThid)
186     DO K=1,Nr
187     DO j = 1,sNy+1
188     DO i = 1,sNx
189     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
190     & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
191     ENDDO
192 jmc 1.13 ENDDO
193 jmc 1.15 ENDDO
194 jmc 1.13 ENDDO
195 jmc 1.15 ENDDO
196     CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH ',0,Nr,0,1,1,myThid)
197     ENDIF
198    
199     IF ( DIAGNOSTICS_IS_ON('WVELTH ',myThid) ) THEN
200     DO bj = myByLo(myThid), myByHi(myThid)
201     DO bi = myBxLo(myThid), myBxHi(myThid)
202     DO K=1,Nr
203     km1 = MAX(k-1,1)
204 jmc 1.13 DO j = 1,sNy
205 jmc 1.15 DO i = 1,sNx
206     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
207     & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
208     ENDDO
209 jmc 1.13 ENDDO
210 jmc 1.15 ENDDO
211 jmc 1.13 ENDDO
212 jmc 1.15 ENDDO
213     CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
214     ENDIF
215 jmc 1.13
216 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
217     DO bj = myByLo(myThid), myByHi(myThid)
218     DO bi = myBxLo(myThid), myBxHi(myThid)
219     DO K=1,Nr
220 jmc 1.13 DO j = 1,sNy
221 jmc 1.15 DO i = 1,sNx+1
222     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
223     & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
224     ENDDO
225 jmc 1.13 ENDDO
226 jmc 1.15 ENDDO
227 jmc 1.13 ENDDO
228 jmc 1.15 ENDDO
229     CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
230     ENDIF
231    
232     IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
233     DO bj = myByLo(myThid), myByHi(myThid)
234     DO bi = myBxLo(myThid), myBxHi(myThid)
235     DO K=1,Nr
236     DO j = 1,sNy+1
237     DO i = 1,sNx
238     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
239     & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
240     ENDDO
241 jmc 1.13 ENDDO
242 jmc 1.15 ENDDO
243 jmc 1.13 ENDDO
244 jmc 1.15 ENDDO
245     CALL DIAGNOSTICS_FILL(tmpMk,'VVELSLT ',0,Nr,0,1,1,myThid)
246     ENDIF
247    
248     IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN
249     DO bj = myByLo(myThid), myByHi(myThid)
250     DO bi = myBxLo(myThid), myBxHi(myThid)
251     DO K=1,Nr
252     km1 = MAX(k-1,1)
253 jmc 1.13 DO j = 1,sNy
254 jmc 1.15 DO i = 1,sNx
255     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
256     & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
257     ENDDO
258 jmc 1.13 ENDDO
259 jmc 1.15 ENDDO
260 jmc 1.13 ENDDO
261 jmc 1.15 ENDDO
262     CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
263     ENDIF
264 jmc 1.13
265 jmc 1.15 C-- fill momentum state-var diagnostics: end
266 jmc 1.13 ENDIF
267 jmc 1.15
268     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
269    
270     IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
271     C-- fill tracer state-var diagnostics:
272    
273     CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
274     CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
275    
276     IF ( DIAGNOSTICS_IS_ON('THETASQ ',myThid) ) THEN
277     DO bj = myByLo(myThid), myByHi(myThid)
278     DO bi = myBxLo(myThid), myBxHi(myThid)
279     DO K=1,Nr
280 jmc 1.13 DO j = 1,sNy
281 jmc 1.15 DO i = 1,sNx
282     tmpMk(i,j,K,bi,bj)
283     & = theta(i,j,K,bi,bj)*theta(i,j,K,bi,bj)
284     ENDDO
285 jmc 1.13 ENDDO
286 jmc 1.15 ENDDO
287 jmc 1.13 ENDDO
288 jmc 1.15 ENDDO
289     CALL DIAGNOSTICS_FILL(tmpMk,'THETASQ ',0,Nr,0,1,1,myThid)
290     ENDIF
291 jmc 1.13
292 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('SALTSQ ',myThid) ) THEN
293     DO bj = myByLo(myThid), myByHi(myThid)
294     DO bi = myBxLo(myThid), myBxHi(myThid)
295     DO K=1,Nr
296 jmc 1.13 DO j = 1,sNy
297 jmc 1.15 DO i = 1,sNx
298     tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)*salt(i,j,K,bi,bj)
299     ENDDO
300 jmc 1.13 ENDDO
301 jmc 1.15 ENDDO
302 jmc 1.13 ENDDO
303 jmc 1.15 ENDDO
304     CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQ ',0,Nr,0,1,1,myThid)
305     ENDIF
306 jmc 1.13
307 jmc 1.15 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
308 jmc 1.13
309 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
310     DO bj = myByLo(myThid), myByHi(myThid)
311     DO bi = myBxLo(myThid), myBxHi(myThid)
312     DO K=1,Nr
313 jmc 1.13 DO j = 1,sNy
314     DO i = 1,sNx
315     tmpMk(i,j,K,bi,bj)
316 edhill 1.11 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
317 jmc 1.13 ENDDO
318     ENDDO
319 jmc 1.15 ENDDO
320 jmc 1.13 ENDDO
321 jmc 1.15 ENDDO
322     CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
323     ENDIF
324    
325     IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
326     DO bj = myByLo(myThid), myByHi(myThid)
327     DO bi = myBxLo(myThid), myBxHi(myThid)
328     DO K=1,Nr
329 jmc 1.13 DO j = 1,sNy
330     DO i = 1,sNx
331     tmpMk(i,j,K,bi,bj)
332 edhill 1.11 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
333 jmc 1.13 ENDDO
334     ENDDO
335 jmc 1.15 ENDDO
336 jmc 1.13 ENDDO
337 jmc 1.15 ENDDO
338     CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
339     ENDIF
340    
341     CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
342 jmc 1.13
343 jmc 1.15 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
344     DO bj = myByLo(myThid), myByHi(myThid)
345     DO bi = myBxLo(myThid), myBxHi(myThid)
346     DO K=1,Nr
347 jmc 1.13 DO j = 1,sNy
348 jmc 1.15 DO i = 1,sNx+1
349     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
350 jmc 1.13 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
351     & * hFacW(i,j,K,bi,bj)
352 jmc 1.15 ENDDO
353 jmc 1.13 ENDDO
354 jmc 1.15 ENDDO
355 jmc 1.13 ENDDO
356 jmc 1.15 ENDDO
357     CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
358     ENDIF
359    
360     IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
361     DO bj = myByLo(myThid), myByHi(myThid)
362     DO bi = myBxLo(myThid), myBxHi(myThid)
363     DO K=1,Nr
364     DO j = 1,sNy+1
365     DO i = 1,sNx
366     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
367 jmc 1.13 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
368     & * hFacS(i,j,K,bi,bj)
369 jmc 1.15 ENDDO
370     ENDDO
371     ENDDO
372     ENDDO
373     ENDDO
374     CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
375     ENDIF
376    
377     IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
378     DO bj = myByLo(myThid), myByHi(myThid)
379     DO bi = myBxLo(myThid), myBxHi(myThid)
380     DO K=1,Nr
381     km1 = MAX(k-1,1)
382     DO j = 1,sNy
383     DO i = 1,sNx
384     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
385     & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
386     ENDDO
387 jmc 1.13 ENDDO
388 jmc 1.15 ENDDO
389 jmc 1.13 ENDDO
390 jmc 1.15 ENDDO
391     CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
392     ENDIF
393    
394     IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
395     DO bj = myByLo(myThid), myByHi(myThid)
396     DO bi = myBxLo(myThid), myBxHi(myThid)
397     DO K=1,Nr
398 jmc 1.13 DO j = 1,sNy
399 jmc 1.15 DO i = 1,sNx+1
400     tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
401 jmc 1.13 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
402     & * hFacW(i,j,K,bi,bj)
403 jmc 1.15 ENDDO
404 jmc 1.13 ENDDO
405 jmc 1.15 ENDDO
406 jmc 1.13 ENDDO
407 jmc 1.15 ENDDO
408     CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
409     ENDIF
410    
411     IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
412     DO bj = myByLo(myThid), myByHi(myThid)
413     DO bi = myBxLo(myThid), myBxHi(myThid)
414     DO K=1,Nr
415     DO j = 1,sNy+1
416     DO i = 1,sNx
417     tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
418 jmc 1.13 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
419     & * hFacS(i,j,K,bi,bj)
420 jmc 1.15 ENDDO
421     ENDDO
422     ENDDO
423     ENDDO
424     ENDDO
425     CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
426     ENDIF
427    
428     IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
429     DO bj = myByLo(myThid), myByHi(myThid)
430     DO bi = myBxLo(myThid), myBxHi(myThid)
431     DO K=1,Nr
432     km1 = MAX(k-1,1)
433     DO j = 1,sNy
434     DO i = 1,sNx
435     tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
436     & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
437     ENDDO
438 jmc 1.13 ENDDO
439 jmc 1.15 ENDDO
440 jmc 1.13 ENDDO
441 jmc 1.15 ENDDO
442     CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
443     ENDIF
444    
445     C-- fill tracer state-var diagnostics: end
446 jmc 1.13 ENDIF
447 jmc 1.15
448 jmc 1.7 #endif /* ALLOW_DIAGNOSTICS */
449 edhill 1.11
450 jmc 1.13 RETURN
451     END

  ViewVC Help
Powered by ViewVC 1.1.22