22 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
23 |
#include "PARAMS.h" |
#include "PARAMS.h" |
24 |
#include "GRID.h" |
#include "GRID.h" |
|
#include "DYNVARS.h" |
|
25 |
#include "SURFACE.h" |
#include "SURFACE.h" |
26 |
|
#include "DYNVARS.h" |
27 |
|
#include "NH_VARS.h" |
28 |
|
|
29 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
30 |
C == Routine arguments == |
C == Routine arguments == |
44 |
EXTERNAL DIAGNOSTICS_IS_ON |
EXTERNAL DIAGNOSTICS_IS_ON |
45 |
_RL tmpMk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
_RL tmpMk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
46 |
_RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
_RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
47 |
|
_RL tmpU (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
48 |
|
_RL tmpV (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
49 |
_RL tmpFac, uBarC, vBarC |
_RL tmpFac, uBarC, vBarC |
50 |
#ifdef ALLOW_FIZHI |
#ifdef ALLOW_FIZHI |
51 |
_RL dummy1, dummy2, dummy3, dummy4, kappa, getcon |
_RL dummy1, dummy2, dummy3, dummy4, kappa, getcon |
80 |
CALL DIAGNOSTICS_SCALE_FILL(dEtaHdt,tmpFac,2, |
CALL DIAGNOSTICS_SCALE_FILL(dEtaHdt,tmpFac,2, |
81 |
& 'DETADT2 ',0, 1,0,1,1,myThid) |
& 'DETADT2 ',0, 1,0,1,1,myThid) |
82 |
#endif |
#endif |
83 |
|
#ifdef ALLOW_NONHYDROSTATIC |
84 |
|
IF ( use3Dsolver ) THEN |
85 |
|
CALL DIAGNOSTICS_FILL( phi_nh,'PHI_NH ',0,Nr,0,1,1,myThid ) |
86 |
|
ENDIF |
87 |
|
#endif |
88 |
|
|
89 |
CALL DIAGNOSTICS_FILL(uVel, 'UVEL ',0,Nr,0,1,1,myThid) |
CALL DIAGNOSTICS_FILL(uVel, 'UVEL ',0,Nr,0,1,1,myThid) |
90 |
CALL DIAGNOSTICS_FILL(vVel, 'VVEL ',0,Nr,0,1,1,myThid) |
CALL DIAGNOSTICS_FILL(vVel, 'VVEL ',0,Nr,0,1,1,myThid) |
99 |
|
|
100 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
101 |
|
|
102 |
IF ( DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN |
IF ( DIAGNOSTICS_IS_ON('UE_VEL_C',myThid) .OR. |
103 |
|
& DIAGNOSTICS_IS_ON('VN_VEL_C',myThid) .OR. |
104 |
|
& DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN |
105 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |
106 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
107 |
DO K=1,Nr |
DO K=1,Nr |
111 |
& *(uVel(i,j,K,bi,bj)+uVel(i+1,j,K,bi,bj)) |
& *(uVel(i,j,K,bi,bj)+uVel(i+1,j,K,bi,bj)) |
112 |
vBarC = 0.5 _d 0 |
vBarC = 0.5 _d 0 |
113 |
& *(vVel(i,j,K,bi,bj)+vVel(i,j+1,K,bi,bj)) |
& *(vVel(i,j,K,bi,bj)+vVel(i,j+1,K,bi,bj)) |
114 |
tmpMk(i,j,K,bi,bj) = |
tmpU(i,j) = angleCosC(i,j,bi,bj)*uBarC |
115 |
& ( angleCosC(i,j,bi,bj)*uBarC |
& -angleSinC(i,j,bi,bj)*vBarC |
116 |
& -angleSinC(i,j,bi,bj)*vBarC ) |
tmpV(i,j) = angleSinC(i,j,bi,bj)*uBarC |
117 |
& *( angleSinC(i,j,bi,bj)*uBarC |
& +angleCosC(i,j,bi,bj)*vBarC |
118 |
& +angleCosC(i,j,bi,bj)*vBarC ) |
tmpMk(i,j,K,bi,bj) = tmpU(i,j)*tmpV(i,j) |
119 |
ENDDO |
ENDDO |
120 |
ENDDO |
ENDDO |
121 |
|
CALL DIAGNOSTICS_FILL(tmpU,'UE_VEL_C',k,1,2,bi,bj,myThid) |
122 |
|
CALL DIAGNOSTICS_FILL(tmpV,'VN_VEL_C',k,1,2,bi,bj,myThid) |
123 |
ENDDO |
ENDDO |
124 |
ENDDO |
ENDDO |
125 |
ENDDO |
ENDDO |
315 |
CALL DIAGNOSTICS_FILL(tmpMk,'VVELPHI ',0,Nr,0,1,1,myThid) |
CALL DIAGNOSTICS_FILL(tmpMk,'VVELPHI ',0,Nr,0,1,1,myThid) |
316 |
ENDIF |
ENDIF |
317 |
|
|
318 |
IF ( DIAGNOSTICS_IS_ON('PRESSURE',myThid) ) THEN |
IF ( DIAGNOSTICS_IS_ON('RCENTER ',myThid) ) THEN |
319 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |
320 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
321 |
DO j = 1,sNy |
DO j = 1,sNy |
327 |
DO j = 1,sNy |
DO j = 1,sNy |
328 |
DO i = 1,sNx |
DO i = 1,sNx |
329 |
tmpMk(i,j,k,bi,bj) = tmp1k(i,j,bi,bj) |
tmpMk(i,j,k,bi,bj) = tmp1k(i,j,bi,bj) |
330 |
& + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0 |
& + (rF(k)-rC(k))*hFacC(i,j,k,bi,bj) |
331 |
|
C above: more general (setInterFDr/setCenterDr) than line below |
332 |
|
c & + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0 |
333 |
tmp1k(i,j,bi,bj) = tmp1k(i,j,bi,bj) |
tmp1k(i,j,bi,bj) = tmp1k(i,j,bi,bj) |
334 |
& + drF(k)*hFacC(i,j,k,bi,bj) |
& + drF(k)*hFacC(i,j,k,bi,bj) |
335 |
ENDDO |
ENDDO |
337 |
ENDDO |
ENDDO |
338 |
ENDDO |
ENDDO |
339 |
ENDDO |
ENDDO |
340 |
CALL DIAGNOSTICS_FILL(tmpMk,'PRESSURE',0,Nr,0,1,1,myThid) |
CALL DIAGNOSTICS_FILL(tmpMk,'RCENTER ',0,Nr,0,1,1,myThid) |
341 |
ENDIF |
ENDIF |
342 |
|
|
343 |
C First fill sequence for state variable tendency diagnostics: subtract state variable |
C First fill sequence for state variable tendency diagnostics: subtract state variable |
349 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
350 |
DO K=1,Nr |
DO K=1,Nr |
351 |
DO j = 1,sNy |
DO j = 1,sNy |
352 |
DO i = 1,sNx |
DO i = 1,sNx+1 |
353 |
tmpMk(i,j,K,bi,bj) = -uVel(i,j,K,bi,bj)* |
tmpMk(i,j,K,bi,bj) = -uVel(i,j,K,bi,bj) |
354 |
. *86400./dTtracerLev(1) |
. *86400./dTtracerLev(1) |
355 |
ENDDO |
ENDDO |
356 |
ENDDO |
ENDDO |
364 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |
365 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
366 |
DO K=1,Nr |
DO K=1,Nr |
367 |
DO j = 1,sNy |
DO j = 1,sNy+1 |
368 |
DO i = 1,sNx |
DO i = 1,sNx |
369 |
tmpMk(i,j,K,bi,bj) = -vVel(i,j,K,bi,bj) |
tmpMk(i,j,K,bi,bj) = -vVel(i,j,K,bi,bj) |
370 |
. *86400./dTtracerLev(1) |
. *86400./dTtracerLev(1) |
498 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
499 |
DO K=1,Nr |
DO K=1,Nr |
500 |
DO j = 1,sNy |
DO j = 1,sNy |
501 |
DO i = 1,sNx |
DO i = 1,sNx+1 |
502 |
tmpMk(i,j,K,bi,bj) |
tmpMk(i,j,K,bi,bj) |
503 |
& = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj) |
& = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj) |
504 |
ENDDO |
ENDDO |
513 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |
514 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
515 |
DO K=1,Nr |
DO K=1,Nr |
516 |
DO j = 1,sNy |
DO j = 1,sNy+1 |
517 |
DO i = 1,sNx |
DO i = 1,sNx |
518 |
tmpMk(i,j,K,bi,bj) |
tmpMk(i,j,K,bi,bj) |
519 |
& = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj) |
& = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj) |
642 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
643 |
DO K=1,Nr |
DO K=1,Nr |
644 |
DO j = 1,sNy |
DO j = 1,sNy |
645 |
DO i = 1,sNx |
DO i = 1,sNx+1 |
646 |
tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj) |
tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj) |
647 |
. *86400./dTtracerLev(1) |
. *86400./dTtracerLev(1) |
648 |
ENDDO |
ENDDO |
657 |
DO bj = myByLo(myThid), myByHi(myThid) |
DO bj = myByLo(myThid), myByHi(myThid) |
658 |
DO bi = myBxLo(myThid), myBxHi(myThid) |
DO bi = myBxLo(myThid), myBxHi(myThid) |
659 |
DO K=1,Nr |
DO K=1,Nr |
660 |
DO j = 1,sNy |
DO j = 1,sNy+1 |
661 |
DO i = 1,sNx |
DO i = 1,sNx |
662 |
tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj) |
tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj) |
663 |
. *86400./dTtracerLev(1) |
. *86400./dTtracerLev(1) |