/[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.17 - (show annotations) (download)
Thu Feb 10 16:30:39 2005 UTC (19 years, 3 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57d_post, checkpoint57g_post, checkpoint57e_post, checkpoint57g_pre, checkpoint57f_pre, eckpoint57e_pre, checkpoint57f_post
Changes since 1.16: +3 -3 lines
fix the WU_VEL,WV_VEL diagnostics

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.16 2005/02/10 15:01:34 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 IF ( DIAGNOSTICS_IS_ON('WU_VEL ',myThid) ) THEN
166 DO bj = myByLo(myThid), myByHi(myThid)
167 DO bi = myBxLo(myThid), myBxHi(myThid)
168 DO K=1,Nr
169 km1 = MAX(k-1,1)
170 DO j = 1,sNy
171 DO i = 1,sNx+1
172 tmpMk(i,j,K,bi,bj) = 0.25 _d 0
173 & *(uVel(i,j,km1,bi,bj)+uVel(i,j,K,bi,bj))
174 & *(wVel(i-1,j,K,bi,bj)*rA(i-1,j,bi,bj)
175 & +wVel( i ,j,K,bi,bj)*rA( i ,j,bi,bj)
176 & )*recip_rAw(i,j,bi,bj)
177 ENDDO
178 ENDDO
179 ENDDO
180 ENDDO
181 ENDDO
182 CALL DIAGNOSTICS_FILL(tmpMk,'WU_VEL ',0,Nr,0,1,1,myThid)
183 ENDIF
184
185 IF ( DIAGNOSTICS_IS_ON('WV_VEL ',myThid) ) THEN
186 DO bj = myByLo(myThid), myByHi(myThid)
187 DO bi = myBxLo(myThid), myBxHi(myThid)
188 DO K=1,Nr
189 km1 = MAX(k-1,1)
190 DO j = 1,sNy+1
191 DO i = 1,sNx
192 tmpMk(i,j,K,bi,bj) = 0.25 _d 0
193 & *(vVel(i,j,km1,bi,bj)+vVel(i,j,K,bi,bj))
194 & *(wVel(i,j-1,K,bi,bj)*rA(i,j-1,bi,bj)
195 & +wVel(i, j ,K,bi,bj)*rA(i, j ,bi,bj)
196 & )*recip_rAs(i,j,bi,bj)
197 ENDDO
198 ENDDO
199 ENDDO
200 ENDDO
201 ENDDO
202 CALL DIAGNOSTICS_FILL(tmpMk,'WV_VEL ',0,Nr,0,1,1,myThid)
203 ENDIF
204
205 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
206
207 IF ( DIAGNOSTICS_IS_ON('UVELTH ',myThid) ) THEN
208 DO bj = myByLo(myThid), myByHi(myThid)
209 DO bi = myBxLo(myThid), myBxHi(myThid)
210 DO K=1,Nr
211 DO j = 1,sNy
212 DO i = 1,sNx+1
213 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
214 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
215 ENDDO
216 ENDDO
217 ENDDO
218 ENDDO
219 ENDDO
220 CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH ',0,Nr,0,1,1,myThid)
221 ENDIF
222
223 IF ( DIAGNOSTICS_IS_ON('VVELTH ',myThid) ) THEN
224 DO bj = myByLo(myThid), myByHi(myThid)
225 DO bi = myBxLo(myThid), myBxHi(myThid)
226 DO K=1,Nr
227 DO j = 1,sNy+1
228 DO i = 1,sNx
229 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
230 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
231 ENDDO
232 ENDDO
233 ENDDO
234 ENDDO
235 ENDDO
236 CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH ',0,Nr,0,1,1,myThid)
237 ENDIF
238
239 IF ( DIAGNOSTICS_IS_ON('WVELTH ',myThid) ) THEN
240 DO bj = myByLo(myThid), myByHi(myThid)
241 DO bi = myBxLo(myThid), myBxHi(myThid)
242 DO K=1,Nr
243 km1 = MAX(k-1,1)
244 DO j = 1,sNy
245 DO i = 1,sNx
246 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
247 & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
248 ENDDO
249 ENDDO
250 ENDDO
251 ENDDO
252 ENDDO
253 CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
254 ENDIF
255
256 IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
257 DO bj = myByLo(myThid), myByHi(myThid)
258 DO bi = myBxLo(myThid), myBxHi(myThid)
259 DO K=1,Nr
260 DO j = 1,sNy
261 DO i = 1,sNx+1
262 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
263 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
264 ENDDO
265 ENDDO
266 ENDDO
267 ENDDO
268 ENDDO
269 CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
270 ENDIF
271
272 IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
273 DO bj = myByLo(myThid), myByHi(myThid)
274 DO bi = myBxLo(myThid), myBxHi(myThid)
275 DO K=1,Nr
276 DO j = 1,sNy+1
277 DO i = 1,sNx
278 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
279 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
280 ENDDO
281 ENDDO
282 ENDDO
283 ENDDO
284 ENDDO
285 CALL DIAGNOSTICS_FILL(tmpMk,'VVELSLT ',0,Nr,0,1,1,myThid)
286 ENDIF
287
288 IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN
289 DO bj = myByLo(myThid), myByHi(myThid)
290 DO bi = myBxLo(myThid), myBxHi(myThid)
291 DO K=1,Nr
292 km1 = MAX(k-1,1)
293 DO j = 1,sNy
294 DO i = 1,sNx
295 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
296 & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
297 ENDDO
298 ENDDO
299 ENDDO
300 ENDDO
301 ENDDO
302 CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
303 ENDIF
304
305 C-- fill momentum state-var diagnostics: end
306 ENDIF
307
308 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
309
310 IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
311 C-- fill tracer state-var diagnostics:
312
313 CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
314 CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
315
316 IF ( DIAGNOSTICS_IS_ON('THETASQ ',myThid) ) THEN
317 DO bj = myByLo(myThid), myByHi(myThid)
318 DO bi = myBxLo(myThid), myBxHi(myThid)
319 DO K=1,Nr
320 DO j = 1,sNy
321 DO i = 1,sNx
322 tmpMk(i,j,K,bi,bj)
323 & = theta(i,j,K,bi,bj)*theta(i,j,K,bi,bj)
324 ENDDO
325 ENDDO
326 ENDDO
327 ENDDO
328 ENDDO
329 CALL DIAGNOSTICS_FILL(tmpMk,'THETASQ ',0,Nr,0,1,1,myThid)
330 ENDIF
331
332 IF ( DIAGNOSTICS_IS_ON('SALTSQ ',myThid) ) THEN
333 DO bj = myByLo(myThid), myByHi(myThid)
334 DO bi = myBxLo(myThid), myBxHi(myThid)
335 DO K=1,Nr
336 DO j = 1,sNy
337 DO i = 1,sNx
338 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)*salt(i,j,K,bi,bj)
339 ENDDO
340 ENDDO
341 ENDDO
342 ENDDO
343 ENDDO
344 CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQ ',0,Nr,0,1,1,myThid)
345 ENDIF
346
347 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
348
349 IF ( DIAGNOSTICS_IS_ON('UVELMASS',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)
356 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
357 ENDDO
358 ENDDO
359 ENDDO
360 ENDDO
361 ENDDO
362 CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
363 ENDIF
364
365 IF ( DIAGNOSTICS_IS_ON('VVELMASS',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)
372 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
373 ENDDO
374 ENDDO
375 ENDDO
376 ENDDO
377 ENDDO
378 CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
379 ENDIF
380
381 CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
382
383 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
384 DO bj = myByLo(myThid), myByHi(myThid)
385 DO bi = myBxLo(myThid), myBxHi(myThid)
386 DO K=1,Nr
387 DO j = 1,sNy
388 DO i = 1,sNx+1
389 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
390 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
391 & * hFacW(i,j,K,bi,bj)
392 ENDDO
393 ENDDO
394 ENDDO
395 ENDDO
396 ENDDO
397 CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
398 ENDIF
399
400 IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
401 DO bj = myByLo(myThid), myByHi(myThid)
402 DO bi = myBxLo(myThid), myBxHi(myThid)
403 DO K=1,Nr
404 DO j = 1,sNy+1
405 DO i = 1,sNx
406 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
407 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
408 & * hFacS(i,j,K,bi,bj)
409 ENDDO
410 ENDDO
411 ENDDO
412 ENDDO
413 ENDDO
414 CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
415 ENDIF
416
417 IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
418 DO bj = myByLo(myThid), myByHi(myThid)
419 DO bi = myBxLo(myThid), myBxHi(myThid)
420 DO K=1,Nr
421 km1 = MAX(k-1,1)
422 DO j = 1,sNy
423 DO i = 1,sNx
424 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
425 & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
426 ENDDO
427 ENDDO
428 ENDDO
429 ENDDO
430 ENDDO
431 CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
432 ENDIF
433
434 IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
435 DO bj = myByLo(myThid), myByHi(myThid)
436 DO bi = myBxLo(myThid), myBxHi(myThid)
437 DO K=1,Nr
438 DO j = 1,sNy
439 DO i = 1,sNx+1
440 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
441 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
442 & * hFacW(i,j,K,bi,bj)
443 ENDDO
444 ENDDO
445 ENDDO
446 ENDDO
447 ENDDO
448 CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
449 ENDIF
450
451 IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
452 DO bj = myByLo(myThid), myByHi(myThid)
453 DO bi = myBxLo(myThid), myBxHi(myThid)
454 DO K=1,Nr
455 DO j = 1,sNy+1
456 DO i = 1,sNx
457 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
458 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
459 & * hFacS(i,j,K,bi,bj)
460 ENDDO
461 ENDDO
462 ENDDO
463 ENDDO
464 ENDDO
465 CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
466 ENDIF
467
468 IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
469 DO bj = myByLo(myThid), myByHi(myThid)
470 DO bi = myBxLo(myThid), myBxHi(myThid)
471 DO K=1,Nr
472 km1 = MAX(k-1,1)
473 DO j = 1,sNy
474 DO i = 1,sNx
475 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
476 & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
477 ENDDO
478 ENDDO
479 ENDDO
480 ENDDO
481 ENDDO
482 CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
483 ENDIF
484
485 C-- fill tracer state-var diagnostics: end
486 ENDIF
487
488 #endif /* ALLOW_DIAGNOSTICS */
489
490 RETURN
491 END

  ViewVC Help
Powered by ViewVC 1.1.22