/[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.29 - (show 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 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.28 2005/11/16 16:55:21 molod 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 "PARAMS.h"
24 #include "GRID.h"
25 #include "DYNVARS.h"
26 #include "SURFACE.h"
27
28 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 C = 4 :: fill-in state variable tendency diagnostics the second time
35 C myThid :: my Thread Id number
36 INTEGER selectVars
37 INTEGER myThid
38
39 #ifdef ALLOW_DIAGNOSTICS
40 C !LOCAL VARIABLES:
41 C == Local variables ==
42 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 _RL tmpFac, uBarC, vBarC
47 #ifdef ALLOW_FIZHI
48 _RL dummy1, dummy2, dummy3, dummy4, kappa, getcon
49 #endif
50 INTEGER i,j,K,bi,bj
51 INTEGER km1
52
53 tmpFac = 1. _d 0
54
55 IF ( selectVars.EQ.2 .OR. selectVars.EQ.3 ) THEN
56 C-- fill momentum state-var diagnostics:
57
58 CALL DIAGNOSTICS_FILL(etaN, 'ETAN ',0, 1,0,1,1,myThid)
59
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 CALL DIAGNOSTICS_SCALE_FILL(etaN,tmpFac,2,
74 & 'ETANSQ ',0, 1,0,1,1,myThid)
75
76 #ifdef EXACT_CONSERV
77 CALL DIAGNOSTICS_SCALE_FILL(dEtaHdt,tmpFac,2,
78 & 'DETADT2 ',0, 1,0,1,1,myThid)
79 #endif
80
81 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 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 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 uBarC = 0.5 _d 0
101 & *(uVel(i,j,K,bi,bj)+uVel(i+1,j,K,bi,bj))
102 vBarC = 0.5 _d 0
103 & *(vVel(i,j,K,bi,bj)+vVel(i,j+1,K,bi,bj))
104 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 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 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 & *(uVel(i,j,km1,bi,bj)+uVel(i,j,K,bi,bj))
143 & *(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 & *(vVel(i,j,km1,bi,bj)+vVel(i,j,K,bi,bj))
163 & *(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 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 DO j = 1,sNy
181 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 ENDDO
186 ENDDO
187 ENDDO
188 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 ENDDO
202 ENDDO
203 ENDDO
204 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 DO j = 1,sNy
214 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 ENDDO
219 ENDDO
220 ENDDO
221 ENDDO
222 CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
223 ENDIF
224
225 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 DO j = 1,sNy
230 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 ENDDO
235 ENDDO
236 ENDDO
237 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 ENDDO
251 ENDDO
252 ENDDO
253 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 DO j = 1,sNy
263 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 ENDDO
268 ENDDO
269 ENDDO
270 ENDDO
271 CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
272 ENDIF
273
274 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 IF ( DIAGNOSTICS_IS_ON('PRESSURE',myThid) ) THEN
307 DO bj = myByLo(myThid), myByHi(myThid)
308 DO bi = myBxLo(myThid), myBxHi(myThid)
309 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 ENDDO
325 ENDDO
326 CALL DIAGNOSTICS_FILL(tmpMk,'PRESSURE',0,Nr,0,1,1,myThid)
327 ENDIF
328
329 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 C-- fill momentum state-var diagnostics: end
394 ENDIF
395
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
404 #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 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
431 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
457 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 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35. _d 0
464 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 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 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 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
489
490 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 DO j = 1,sNy
495 DO i = 1,sNx
496 tmpMk(i,j,K,bi,bj)
497 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
498 ENDDO
499 ENDDO
500 ENDDO
501 ENDDO
502 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 DO j = 1,sNy
511 DO i = 1,sNx
512 tmpMk(i,j,K,bi,bj)
513 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
514 ENDDO
515 ENDDO
516 ENDDO
517 ENDDO
518 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
524 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 DO j = 1,sNy
529 DO i = 1,sNx+1
530 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
531 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
532 & * hFacW(i,j,K,bi,bj)
533 ENDDO
534 ENDDO
535 ENDDO
536 ENDDO
537 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 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
549 & * hFacS(i,j,K,bi,bj)
550 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 ENDDO
569 ENDDO
570 ENDDO
571 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 DO j = 1,sNy
580 DO i = 1,sNx+1
581 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
582 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
583 & * hFacW(i,j,K,bi,bj)
584 ENDDO
585 ENDDO
586 ENDDO
587 ENDDO
588 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 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
600 & * hFacS(i,j,K,bi,bj)
601 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 ENDDO
620 ENDDO
621 ENDDO
622 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 ENDIF
628
629 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 #endif /* ALLOW_DIAGNOSTICS */
698
699 RETURN
700 END

  ViewVC Help
Powered by ViewVC 1.1.22