/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_fill_state.F
ViewVC logotype

Contents of /MITgcm/pkg/diagnostics/diagnostics_fill_state.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.15 - (show 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 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.14 2004/12/15 00:20:37 jmc Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 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 #include "SIZE.h"
22 #include "EEPARAMS.h"
23 #include "GRID.h"
24 #include "DYNVARS.h"
25 #include "SURFACE.h"
26
27 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 INTEGER myThid
36
37 #ifdef ALLOW_DIAGNOSTICS
38 C !LOCAL VARIABLES:
39 C == Local variables ==
40 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 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
52 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 DO i = 1,sNx
57 tmp1k(i,j,bi,bj) = etaN(i,j,bi,bj)*etaN(i,j,bi,bj)
58 ENDDO
59 ENDDO
60 ENDDO
61 ENDDO
62 CALL DIAGNOSTICS_FILL(tmp1k,'ETANSQ ',0,1,0,1,1,myThid)
63 ENDIF
64
65 #ifdef EXACT_CONSERV
66 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 DO i = 1,sNx
71 tmp1k(i,j,bi,bj) = dEtaHdt(i,j,bi,bj)*dEtaHdt(i,j,bi,bj)
72 ENDDO
73 ENDDO
74 ENDDO
75 ENDDO
76 CALL DIAGNOSTICS_FILL(tmp1k,'DETADT2 ',0,1,0,1,1,myThid)
77 ENDIF
78 #endif
79
80 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 DO j = 1,sNy
172 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 ENDDO
177 ENDDO
178 ENDDO
179 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 ENDDO
193 ENDDO
194 ENDDO
195 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 DO j = 1,sNy
205 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 ENDDO
210 ENDDO
211 ENDDO
212 ENDDO
213 CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
214 ENDIF
215
216 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 DO j = 1,sNy
221 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 ENDDO
226 ENDDO
227 ENDDO
228 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 ENDDO
242 ENDDO
243 ENDDO
244 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 DO j = 1,sNy
254 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 ENDDO
259 ENDDO
260 ENDDO
261 ENDDO
262 CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
263 ENDIF
264
265 C-- fill momentum state-var diagnostics: end
266 ENDIF
267
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 DO j = 1,sNy
281 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 ENDDO
286 ENDDO
287 ENDDO
288 ENDDO
289 CALL DIAGNOSTICS_FILL(tmpMk,'THETASQ ',0,Nr,0,1,1,myThid)
290 ENDIF
291
292 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 DO j = 1,sNy
297 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 ENDDO
301 ENDDO
302 ENDDO
303 ENDDO
304 CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQ ',0,Nr,0,1,1,myThid)
305 ENDIF
306
307 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
308
309 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 DO j = 1,sNy
314 DO i = 1,sNx
315 tmpMk(i,j,K,bi,bj)
316 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
317 ENDDO
318 ENDDO
319 ENDDO
320 ENDDO
321 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 DO j = 1,sNy
330 DO i = 1,sNx
331 tmpMk(i,j,K,bi,bj)
332 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
333 ENDDO
334 ENDDO
335 ENDDO
336 ENDDO
337 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
343 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 DO j = 1,sNy
348 DO i = 1,sNx+1
349 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
350 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
351 & * hFacW(i,j,K,bi,bj)
352 ENDDO
353 ENDDO
354 ENDDO
355 ENDDO
356 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 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
368 & * hFacS(i,j,K,bi,bj)
369 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 ENDDO
388 ENDDO
389 ENDDO
390 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 DO j = 1,sNy
399 DO i = 1,sNx+1
400 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
401 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
402 & * hFacW(i,j,K,bi,bj)
403 ENDDO
404 ENDDO
405 ENDDO
406 ENDDO
407 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 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
419 & * hFacS(i,j,K,bi,bj)
420 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 ENDDO
439 ENDDO
440 ENDDO
441 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 ENDIF
447
448 #endif /* ALLOW_DIAGNOSTICS */
449
450 RETURN
451 END

  ViewVC Help
Powered by ViewVC 1.1.22