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

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

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

revision 1.23 by jmc, Wed Jul 13 00:46:07 2005 UTC revision 1.43 by rpa, Tue Jun 9 16:31:45 2015 UTC
# Line 6  C $Name$ Line 6  C $Name$
6  CBOP  CBOP
7  C     !ROUTINE: DIAGNOSTICS_FILL_STATE  C     !ROUTINE: DIAGNOSTICS_FILL_STATE
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE DIAGNOSTICS_FILL_STATE( selectVars, myThid )        SUBROUTINE DIAGNOSTICS_FILL_STATE( selectVars, myIter, myThid )
10    
11  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
12  C     *==========================================================*  C     *==========================================================*
# Line 20  C     !USES: Line 20  C     !USES:
20  C     == Global variables ===  C     == Global variables ===
21  #include "SIZE.h"  #include "SIZE.h"
22  #include "EEPARAMS.h"  #include "EEPARAMS.h"
23    #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    #ifdef ALLOW_GENERIC_ADVDIFF
29    # include "GAD.h"
30    #endif
31    
32  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
33  C     == Routine arguments ==  C     == Routine arguments ==
# Line 30  C     selectVars :: select which group o Line 35  C     selectVars :: select which group o
35  C            = 1 :: fill-in diagnostics for tracer   variables only  C            = 1 :: fill-in diagnostics for tracer   variables only
36  C            = 2 :: fill-in diagnostics for momentum variables only  C            = 2 :: fill-in diagnostics for momentum variables only
37  C            = 3 :: fill-in diagnostics for momentum & tracer variables  C            = 3 :: fill-in diagnostics for momentum & tracer variables
38    C            = 4 :: fill-in state variable tendency diagnostics the second time
39    C     myIter     :: current Iteration number
40  C     myThid     :: my Thread Id number  C     myThid     :: my Thread Id number
41        INTEGER selectVars        INTEGER selectVars
42        INTEGER myThid        INTEGER myIter
43          INTEGER myThid
44    
45  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
46  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
# Line 40  C     == Local variables == Line 48  C     == Local variables ==
48        LOGICAL  DIAGNOSTICS_IS_ON        LOGICAL  DIAGNOSTICS_IS_ON
49        EXTERNAL DIAGNOSTICS_IS_ON        EXTERNAL DIAGNOSTICS_IS_ON
50        _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)
       _RL tmpMk1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1,nSx,nSy)  
51        _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
52          _RL tmpU (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
53          _RL tmpV (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
54        _RL tmpFac, uBarC, vBarC        _RL tmpFac, uBarC, vBarC
55        INTEGER i,j,K,bi,bj  #ifdef ALLOW_FIZHI
56          _RL dummy1, dummy2, dummy3, dummy4, kappa, getcon
57    #endif
58    #ifdef ALLOW_ADAMSBASHFORTH_3
59          INTEGER m1
60    #endif
61          INTEGER i,j,k,bi,bj
62        INTEGER km1        INTEGER km1
         
       tmpFac = 1. _d 0  
63    
64        IF ( selectVars .GE. 2 ) THEN        IF ( selectVars.EQ.2 .OR. selectVars.EQ.3 ) THEN
65  C--   fill momentum state-var diagnostics:  C--   fill momentum state-var diagnostics:
66    
67          CALL DIAGNOSTICS_FILL(etaN, 'ETAN    ',0, 1,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(etaN, 'ETAN    ',0, 1,0,1,1,myThid)
# Line 66  C--   fill momentum state-var diagnostic Line 79  C--   fill momentum state-var diagnostic
79           CALL DIAGNOSTICS_FILL(tmp1k,'RSURF   ',0,1,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmp1k,'RSURF   ',0,1,0,1,1,myThid)
80          ENDIF          ENDIF
81    
82          CALL DIAGNOSTICS_SCALE_FILL(etaN,tmpFac,2,          CALL DIAGNOSTICS_SCALE_FILL( etaN, oneRL, 2,
83       &                              'ETANSQ  ',0, 1,0,1,1,myThid)       &                              'ETANSQ  ',0, 1,0,1,1,myThid)
84          
85  #ifdef EXACT_CONSERV  #ifdef EXACT_CONSERV
86          CALL DIAGNOSTICS_SCALE_FILL(dEtaHdt,tmpFac,2,          CALL DIAGNOSTICS_SCALE_FILL( dEtaHdt, oneRL, 2,
87       &                              'DETADT2 ',0, 1,0,1,1,myThid)       &                              'DETADT2 ',0, 1,0,1,1,myThid)
88  #endif  #endif
89          #ifdef ALLOW_NONHYDROSTATIC
90            IF ( use3Dsolver ) THEN
91              CALL DIAGNOSTICS_FILL( phi_nh,'PHI_NH  ',0,Nr,0,1,1,myThid )
92            ENDIF
93    #endif
94    
95          CALL DIAGNOSTICS_FILL(uVel, 'UVEL    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(uVel, 'UVEL    ',0,Nr,0,1,1,myThid)
96          CALL DIAGNOSTICS_FILL(vVel, 'VVEL    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(vVel, 'VVEL    ',0,Nr,0,1,1,myThid)
97          CALL DIAGNOSTICS_FILL(wVel, 'WVEL    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(wVel, 'WVEL    ',0,Nr,0,1,1,myThid)
98          
99          CALL DIAGNOSTICS_SCALE_FILL(uVel,tmpFac,2,          CALL DIAGNOSTICS_SCALE_FILL( uVel, oneRL, 2,
100       &                              'UVELSQ  ',0,Nr,0,1,1,myThid)       &                              'UVELSQ  ',0,Nr,0,1,1,myThid)
101          CALL DIAGNOSTICS_SCALE_FILL(vVel,tmpFac,2,          CALL DIAGNOSTICS_SCALE_FILL( vVel, oneRL, 2,
102       &                              'VVELSQ  ',0,Nr,0,1,1,myThid)       &                              'VVELSQ  ',0,Nr,0,1,1,myThid)
103          CALL DIAGNOSTICS_SCALE_FILL(wVel,tmpFac,2,          CALL DIAGNOSTICS_SCALE_FILL( wVel, oneRL, 2,
104       &                              'WVELSQ  ',0,Nr,0,1,1,myThid)       &                              'WVELSQ  ',0,Nr,0,1,1,myThid)
105    
         IF ( DIAGNOSTICS_IS_ON('UVEL_k2 ',myThid) ) THEN  
          DO bj = myByLo(myThid), myByHi(myThid)  
           DO bi = myBxLo(myThid), myBxHi(myThid)  
            DO j = 1,sNy  
             DO i = 1,sNx  
               tmp1k(i,j,bi,bj) = UVEL(i,j,2,bi,bj)  
             ENDDO  
            ENDDO  
           ENDDO  
          ENDDO  
          CALL DIAGNOSTICS_FILL(tmp1k,'UVEL_k2 ',0,1,0,1,1,myThid)  
         ENDIF  
         
         IF ( DIAGNOSTICS_IS_ON('VVEL_k2 ',myThid) ) THEN  
          DO bj = myByLo(myThid), myByHi(myThid)  
           DO bi = myBxLo(myThid), myBxHi(myThid)  
            DO j = 1,sNy  
             DO i = 1,sNx  
               tmp1k(i,j,bi,bj) = VVEL(i,j,2,bi,bj)  
             ENDDO  
            ENDDO  
           ENDDO  
          ENDDO  
          CALL DIAGNOSTICS_FILL(tmp1k,'VVEL_k2 ',0,1,0,1,1,myThid)  
         ENDIF  
         
106  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
107    
108          IF ( DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UE_VEL_C',myThid) .OR.
109         &       DIAGNOSTICS_IS_ON('VN_VEL_C',myThid) .OR.
110         &       DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN
111           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
112            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
113             DO K=1,Nr             DO k=1,Nr
114              DO j = 1,sNy              DO j = 1,sNy
115               DO i = 1,sNx               DO i = 1,sNx
116                uBarC = 0.5 _d 0                uBarC = 0.5 _d 0
117       &           *(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))
118                vBarC = 0.5 _d 0                vBarC = 0.5 _d 0
119       &           *(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))
120                tmpMk(i,j,K,bi,bj) =                tmpU(i,j) = angleCosC(i,j,bi,bj)*uBarC
121       &            ( angleCosC(i,j,bi,bj)*uBarC       &                   -angleSinC(i,j,bi,bj)*vBarC
122       &             -angleSinC(i,j,bi,bj)*vBarC )                tmpV(i,j) = angleSinC(i,j,bi,bj)*uBarC
123       &           *( angleSinC(i,j,bi,bj)*uBarC       &                   +angleCosC(i,j,bi,bj)*vBarC
124       &             +angleCosC(i,j,bi,bj)*vBarC )                tmpMk(i,j,k,bi,bj) = tmpU(i,j)*tmpV(i,j)
125               ENDDO               ENDDO
126              ENDDO              ENDDO
127                CALL DIAGNOSTICS_FILL(tmpU,'UE_VEL_C',k,1,2,bi,bj,myThid)
128                CALL DIAGNOSTICS_FILL(tmpV,'VN_VEL_C',k,1,2,bi,bj,myThid)
129             ENDDO             ENDDO
130            ENDDO            ENDDO
131           ENDDO           ENDDO
132           CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_C',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_C',0,Nr,0,1,1,myThid)
133          ENDIF          ENDIF
134          
135          IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN
136           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
137            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
138             DO K=1,Nr             DO k=1,Nr
139              DO j = 1,sNy+1              DO j = 1,sNy+1
140               DO i = 1,sNx+1               DO i = 1,sNx+1
141                tmpMk(i,j,K,bi,bj) = 0.25 _d 0                tmpMk(i,j,k,bi,bj) = 0.25 _d 0
142       &           *(uVel(i,j-1,K,bi,bj)+uVel(i,j,K,bi,bj))       &           *(uVel(i,j-1,k,bi,bj)+uVel(i,j,k,bi,bj))
143       &           *(vVel(i-1,j,K,bi,bj)+vVel(i,j,K,bi,bj))       &           *(vVel(i-1,j,k,bi,bj)+vVel(i,j,k,bi,bj))
144               ENDDO               ENDDO
145              ENDDO              ENDDO
146             ENDDO             ENDDO
# Line 152  C---+----1----+----2----+----3----+----4 Line 148  C---+----1----+----2----+----3----+----4
148           ENDDO           ENDDO
149           CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_Z',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_Z',0,Nr,0,1,1,myThid)
150          ENDIF          ENDIF
151          
152          IF ( DIAGNOSTICS_IS_ON('WU_VEL  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WU_VEL  ',myThid) ) THEN
153           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
154            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
155             DO K=1,Nr             DO k=1,Nr
156              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
157              DO j = 1,sNy              DO j = 1,sNy
158               DO i = 1,sNx+1               DO i = 1,sNx+1
159                tmpMk(i,j,K,bi,bj) = 0.25 _d 0                tmpMk(i,j,k,bi,bj) = 0.25 _d 0
160       &           *(uVel(i,j,km1,bi,bj)+uVel(i,j,K,bi,bj))       &           *(uVel(i,j,km1,bi,bj)+uVel(i,j,k,bi,bj))
161       &           *(wVel(i-1,j,K,bi,bj)*rA(i-1,j,bi,bj)       &           *(wVel(i-1,j,k,bi,bj)*rA(i-1,j,bi,bj)
162       &            +wVel( i ,j,K,bi,bj)*rA( i ,j,bi,bj)       &            +wVel( i ,j,k,bi,bj)*rA( i ,j,bi,bj)
163       &            )*recip_rAw(i,j,bi,bj)       &            )*recip_rAw(i,j,bi,bj)
164               ENDDO               ENDDO
165              ENDDO              ENDDO
# Line 176  C---+----1----+----2----+----3----+----4 Line 172  C---+----1----+----2----+----3----+----4
172          IF ( DIAGNOSTICS_IS_ON('WV_VEL  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WV_VEL  ',myThid) ) THEN
173           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
174            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
175             DO K=1,Nr             DO k=1,Nr
176              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
177              DO j = 1,sNy+1              DO j = 1,sNy+1
178               DO i = 1,sNx               DO i = 1,sNx
179                tmpMk(i,j,K,bi,bj) = 0.25 _d 0                tmpMk(i,j,k,bi,bj) = 0.25 _d 0
180       &           *(vVel(i,j,km1,bi,bj)+vVel(i,j,K,bi,bj))       &           *(vVel(i,j,km1,bi,bj)+vVel(i,j,k,bi,bj))
181       &           *(wVel(i,j-1,K,bi,bj)*rA(i,j-1,bi,bj)       &           *(wVel(i,j-1,k,bi,bj)*rA(i,j-1,bi,bj)
182       &            +wVel(i, j ,K,bi,bj)*rA(i, j ,bi,bj)       &            +wVel(i, j ,k,bi,bj)*rA(i, j ,bi,bj)
183       &            )*recip_rAs(i,j,bi,bj)       &            )*recip_rAs(i,j,bi,bj)
184               ENDDO               ENDDO
185              ENDDO              ENDDO
# Line 198  C---+----1----+----2----+----3----+----4 Line 194  C---+----1----+----2----+----3----+----4
194          IF ( DIAGNOSTICS_IS_ON('UVELTH  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELTH  ',myThid) ) THEN
195           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
196            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
197             DO K=1,Nr             DO k=1,Nr
198              DO j = 1,sNy              DO j = 1,sNy
199               DO i = 1,sNx+1               DO i = 1,sNx+1
200                 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
201       &                  *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))       &                  *(theta(i,j,k,bi,bj)+theta(i-1,j,k,bi,bj))
202               ENDDO               ENDDO
203              ENDDO              ENDDO
204             ENDDO             ENDDO
# Line 210  C---+----1----+----2----+----3----+----4 Line 206  C---+----1----+----2----+----3----+----4
206           ENDDO           ENDDO
207           CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH  ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH  ',0,Nr,0,1,1,myThid)
208          ENDIF          ENDIF
209          
210          IF ( DIAGNOSTICS_IS_ON('VVELTH  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VVELTH  ',myThid) ) THEN
211           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
212            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
213             DO K=1,Nr             DO k=1,Nr
214              DO j = 1,sNy+1              DO j = 1,sNy+1
215               DO i = 1,sNx               DO i = 1,sNx
216                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
217       &                  *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))       &                  *(theta(i,j,k,bi,bj)+theta(i,j-1,k,bi,bj))
218               ENDDO               ENDDO
219              ENDDO              ENDDO
220             ENDDO             ENDDO
# Line 226  C---+----1----+----2----+----3----+----4 Line 222  C---+----1----+----2----+----3----+----4
222           ENDDO           ENDDO
223           CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH  ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH  ',0,Nr,0,1,1,myThid)
224          ENDIF          ENDIF
225          
226          IF ( DIAGNOSTICS_IS_ON('WVELTH  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WVELTH  ',myThid) ) THEN
227           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
228            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
229             DO K=1,Nr             DO k=1,Nr
230              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
231              DO j = 1,sNy              DO j = 1,sNy
232               DO i = 1,sNx               DO i = 1,sNx
233                 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
234       &                  *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))       &                  *(theta(i,j,k,bi,bj)+theta(i,j,km1,bi,bj))
235               ENDDO               ENDDO
236              ENDDO              ENDDO
237             ENDDO             ENDDO
# Line 243  C---+----1----+----2----+----3----+----4 Line 239  C---+----1----+----2----+----3----+----4
239           ENDDO           ENDDO
240           CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH  ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH  ',0,Nr,0,1,1,myThid)
241          ENDIF          ENDIF
242          
243          IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
244           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
245            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
246             DO K=1,Nr             DO k=1,Nr
247              DO j = 1,sNy              DO j = 1,sNy
248               DO i = 1,sNx+1               DO i = 1,sNx+1
249                 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
250       &                  *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))       &                  *(salt(i,j,k,bi,bj)+salt(i-1,j,k,bi,bj))
251               ENDDO               ENDDO
252              ENDDO              ENDDO
253             ENDDO             ENDDO
# Line 259  C---+----1----+----2----+----3----+----4 Line 255  C---+----1----+----2----+----3----+----4
255           ENDDO           ENDDO
256           CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
257          ENDIF          ENDIF
258          
259          IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
260           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
261            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
262             DO K=1,Nr             DO k=1,Nr
263              DO j = 1,sNy+1              DO j = 1,sNy+1
264               DO i = 1,sNx               DO i = 1,sNx
265                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
266       &                  *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))       &                  *(salt(i,j,k,bi,bj)+salt(i,j-1,k,bi,bj))
267               ENDDO               ENDDO
268              ENDDO              ENDDO
269             ENDDO             ENDDO
# Line 279  C---+----1----+----2----+----3----+----4 Line 275  C---+----1----+----2----+----3----+----4
275          IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN
276           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
277            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
278             DO K=1,Nr             DO k=1,Nr
279              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
280              DO j = 1,sNy              DO j = 1,sNy
281               DO i = 1,sNx               DO i = 1,sNx
282                 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
283       &                  *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))       &                  *(salt(i,j,k,bi,bj)+salt(i,j,km1,bi,bj))
284               ENDDO               ENDDO
285              ENDDO              ENDDO
286             ENDDO             ENDDO
# Line 292  C---+----1----+----2----+----3----+----4 Line 288  C---+----1----+----2----+----3----+----4
288           ENDDO           ENDDO
289           CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
290          ENDIF          ENDIF
291          
292          IF ( DIAGNOSTICS_IS_ON('PRESSURE',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELPHI ',myThid) ) THEN
293           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
294            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
295             do j = 1,sNy             DO k=1,Nr
296             do i = 1,sNx              DO j = 1,sNy
297              do K = 1,Nr               DO i = 1,sNx+1
298               tmpMk1(i,j,K,bi,bj) = 0.                 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
299              enddo       &       *0.5 _d 0*(totPhiHyd(i,j,k,bi,bj)+totPhiHyd(i-1,j,k,bi,bj))
300             enddo               ENDDO
301             enddo              ENDDO
302             do j = 1,sNy             ENDDO
            do i = 1,sNx  
             if(ksurfC(i,j,bi,bj).ne.0.)  
      .          tmpMk1(i,j,ksurfC(i,j,bi,bj),bi,bj) =  
      .                            (Ro_surf(i,j,bi,bj) + etaH(i,j,bi,bj))  
            enddo  
            enddo  
            do j = 1,sNy  
            do i = 1,sNx  
             do K = ksurfC(i,j,bi,bj)+1,Nr+1  
              tmpMk1(i,j,K,bi,bj) = tmpMk1(i,j,K-1,bi,bj) -  
      .                        drF(K-1)*hfacC(i,j,K-1,bi,bj)  
             enddo  
             do K = 1,Nr  
              tmpMk(i,j,K,bi,bj) =  
      .           (tmpMk1(i,j,K,bi,bj) + tmpMk1(i,j,K+1,bi,bj)) /2.  
             enddo  
            enddo  
            enddo  
303            ENDDO            ENDDO
304           ENDDO           ENDDO
305           CALL DIAGNOSTICS_FILL(tmpMk,'PRESSURE',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'UVELPHI ',0,Nr,0,1,1,myThid)
306          ENDIF          ENDIF
307    
308  C--   fill momentum state-var diagnostics: end          IF ( DIAGNOSTICS_IS_ON('VVELPHI ',myThid) ) THEN
       ENDIF  
   
 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  
   
       IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN  
 C--   fill tracer state-var diagnostics:  
   
         CALL DIAGNOSTICS_FILL(theta,'THETA   ',0,Nr,0,1,1,myThid)  
         CALL DIAGNOSTICS_FILL(salt, 'SALT    ',0,Nr,0,1,1,myThid)  
   
         CALL DIAGNOSTICS_SCALE_FILL(theta,tmpFac,2,  
      &                              'THETASQ ',0,Nr,0,1,1,myThid)  
         CALL DIAGNOSTICS_SCALE_FILL(salt,tmpFac,2,  
      &                              'SALTSQ  ',0,Nr,0,1,1,myThid)  
         
         IF ( DIAGNOSTICS_IS_ON('SST     ',myThid) ) THEN  
309           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
310            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
311             DO j = 1,sNy             DO k=1,Nr
312              DO i = 1,sNx              DO j = 1,sNy+1
313                tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)               DO i = 1,sNx
314                   tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
315         &       *0.5 _d 0*(totPhiHyd(i,j,k,bi,bj)+totPhiHyd(i,j-1,k,bi,bj))
316                 ENDDO
317              ENDDO              ENDDO
318             ENDDO             ENDDO
319            ENDDO            ENDDO
320           ENDDO           ENDDO
321           CALL DIAGNOSTICS_FILL(tmp1k,'SST     ',0,1,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'VVELPHI ',0,Nr,0,1,1,myThid)
322          ENDIF          ENDIF
323          
324          IF ( DIAGNOSTICS_IS_ON('SSS     ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('RCENTER ',myThid) ) THEN
325           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
326            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
327             DO j = 1,sNy             DO j = 1,sNy
328              DO i = 1,sNx              DO i = 1,sNx
329                tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)                tmp1k(i,j,bi,bj) = R_low(i,j,bi,bj)
330                ENDDO
331               ENDDO
332               DO k = Nr,1,-1
333                DO j = 1,sNy
334                 DO i = 1,sNx
335                  tmpMk(i,j,k,bi,bj) = tmp1k(i,j,bi,bj)
336         &             + (rF(k+1)-rC(k))*hFacC(i,j,k,bi,bj)*rkSign
337    C         above: more general (setInterFDr/setCenterDr) than line below
338    c    &                      + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0
339                  tmp1k(i,j,bi,bj) =   tmp1k(i,j,bi,bj)
340         &                      + drF(k)*hFacC(i,j,k,bi,bj)
341                 ENDDO
342              ENDDO              ENDDO
343             ENDDO             ENDDO
344            ENDDO            ENDDO
345           ENDDO           ENDDO
346           CALL DIAGNOSTICS_FILL(tmp1k,'SSS     ',0,1,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'RCENTER ',0,Nr,0,1,1,myThid)
347          ENDIF          ENDIF
348    
349          IF ( DIAGNOSTICS_IS_ON('SALTanom',myThid) ) THEN  C First fill sequence for state variable tendency diagnostics: subtract state variable
350    C NOTE: send a '0' for the bibjflag and allow counter to be incremented
351    C     (next fill for these diagnostics will NOT allow counter to be incremented)
352    
353            tmpFac = -86400. _d 0/deltaTMom
354            CALL DIAGNOSTICS_SCALE_FILL( uVel, tmpFac, 1,
355         &                              'TOTUTEND',0,Nr,0,1,1,myThid )
356            CALL DIAGNOSTICS_SCALE_FILL( vVel, tmpFac, 1,
357         &                              'TOTVTEND',0,Nr,0,1,1,myThid )
358    
359            IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
360           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
361            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
362             DO K=1,Nr             DO k=1,Nr
363                tmpFac = -86400. _d 0/dTtracerLev(k)
364              DO j = 1,sNy              DO j = 1,sNy
365               DO i = 1,sNx               DO i = 1,sNx
366                 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35                 tmpMk(i,j,k,bi,bj) = tmpFac*theta(i,j,k,bi,bj)
367               ENDDO               ENDDO
368              ENDDO              ENDDO
369             ENDDO             ENDDO
370            ENDDO            ENDDO
371           ENDDO           ENDDO
372           CALL DIAGNOSTICS_FILL(tmpMk,'SALTanom',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
373    #ifdef ALLOW_LAYERS
374             IF ( useLayers ) THEN
375               CALL LAYERS_FILL(tmpMk,1,'TOT',0,Nr,0,1,1,myThid)
376             ENDIF
377    #endif /* ALLOW_LAYERS */        
378          ENDIF          ENDIF
379          
380          IF ( DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
381           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
382            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
383             DO K=1,Nr             DO k=1,Nr
384                tmpFac = -86400. _d 0/dTtracerLev(k)
385              DO j = 1,sNy              DO j = 1,sNy
386               DO i = 1,sNx               DO i = 1,sNx
387                 tmpMk(i,j,K,bi,bj) =                 tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
388       &               (salt(i,j,K,bi,bj)-35)*(salt(i,j,K,bi,bj)-35)               ENDDO
389                ENDDO
390               ENDDO
391              ENDDO
392             ENDDO
393             CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
394    #ifdef ALLOW_LAYERS
395             IF ( useLayers ) THEN
396               CALL LAYERS_FILL(tmpMk,2,'TOT',0,Nr,0,1,1,myThid)
397             ENDIF
398    #endif /* ALLOW_LAYERS */
399            ENDIF
400    
401    C--   fill momentum state-var diagnostics: end
402          ENDIF
403    
404    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
405    
406          IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
407    C--   fill tracer state-var diagnostics:
408    
409            CALL DIAGNOSTICS_FILL(theta,'THETA   ',0,Nr,0,1,1,myThid)
410            CALL DIAGNOSTICS_FILL(salt, 'SALT    ',0,Nr,0,1,1,myThid)
411    
412    #ifdef ALLOW_FIZHI
413          IF ( useFIZHI .AND. DIAGNOSTICS_IS_ON('RELHUM  ',myThid) ) THEN
414           kappa = getcon('KAPPA')
415           DO bj = myByLo(myThid), myByHi(myThid)
416            DO bi = myBxLo(myThid), myBxHi(myThid)
417             DO j = 1,sNy
418              DO i = 1,sNx
419               DO k = 1,Nr
420                dummy1 = theta(i,j,k,bi,bj) * ((rC(k)/100.)/1000.)**kappa
421                dummy2 = rC(k) / 100.
422                CALL QSAT(dummy1,dummy2,dummy3,dummy4,.false.)
423                tmpMk(i,j,k,bi,bj) = hFacC(i,j,k,bi,bj)
424         &                          *salt(i,j,k,bi,bj)*100. / dummy3
425               ENDDO
426              ENDDO
427             ENDDO
428            ENDDO
429           ENDDO
430           CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM  ',0,Nr,0,1,1,myThid)
431          ENDIF
432    #endif /* ALLOW_FIZHI */
433    
434            CALL DIAGNOSTICS_SCALE_FILL( theta, oneRL, 2,
435         &                              'THETASQ ',0,Nr,0,1,1,myThid)
436            CALL DIAGNOSTICS_SCALE_FILL( salt, oneRL, 2,
437         &                              'SALTSQ  ',0,Nr,0,1,1,myThid)
438    
439    #ifdef ALLOW_GENERIC_ADVDIFF
440    # ifdef ALLOW_ADAMSBASHFORTH_3
441          IF ( selectVars.EQ.1 ) THEN
442    C-    stagger time-step: fill diags after updating myIter
443            m1 = 1 + MOD(myIter,2)
444          ELSE
445    C-    synchronous time-step: fill diags before updating myIter
446            m1 = 1 + MOD(myIter+1,2)
447          ENDIF
448          IF ( AdamsBashforthGt )
449         & CALL DIAGNOSTICS_FILL( gtNm(1-OLx,1-OLy,1,1,1,m1),
450         &                        'gTinAB  ',0,Nr,0,1,1,myThid )
451          IF ( AdamsBashforthGs )
452         & CALL DIAGNOSTICS_FILL( gsNm(1-OLx,1-OLy,1,1,1,m1),
453         &                        'gSinAB  ',0,Nr,0,1,1,myThid )
454    # else /* ALLOW_ADAMSBASHFORTH_3 */
455          IF ( AdamsBashforthGt )
456         & CALL DIAGNOSTICS_FILL( gtNm1,'gTinAB  ',0,Nr,0,1,1,myThid )
457          IF ( AdamsBashforthGs )
458         & CALL DIAGNOSTICS_FILL( gsNm1,'gSinAB  ',0,Nr,0,1,1,myThid )
459    # endif /* ALLOW_ADAMSBASHFORTH_3 */
460    #endif /* ALLOW_GENERIC_ADVDIFF */
461    
462    c       IF ( DIAGNOSTICS_IS_ON('SST     ',myThid) ) THEN
463    c        DO bj = myByLo(myThid), myByHi(myThid)
464    c         DO bi = myBxLo(myThid), myBxHi(myThid)
465    c          DO j = 1,sNy
466    c           DO i = 1,sNx
467    c             tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)
468    c           ENDDO
469    c          ENDDO
470    c         ENDDO
471    c        ENDDO
472    c        CALL DIAGNOSTICS_FILL(tmp1k,'SST     ',0,1,0,1,1,myThid)
473    c       ENDIF
474    
475    c       IF ( DIAGNOSTICS_IS_ON('SSS     ',myThid) ) THEN
476    c        DO bj = myByLo(myThid), myByHi(myThid)
477    c         DO bi = myBxLo(myThid), myBxHi(myThid)
478    c          DO j = 1,sNy
479    c           DO i = 1,sNx
480    c             tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)
481    c           ENDDO
482    c          ENDDO
483    c         ENDDO
484    c        ENDDO
485    c        CALL DIAGNOSTICS_FILL(tmp1k,'SSS     ',0,1,0,1,1,myThid)
486    c       ENDIF
487    
488            IF ( fluidIsWater .AND.
489         &       ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
490         &     .OR.DIAGNOSTICS_IS_ON('SALTSQan',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) = salt(i,j,k,bi,bj)-35. _d 0
497               ENDDO               ENDDO
498              ENDDO              ENDDO
499             ENDDO             ENDDO
500            ENDDO            ENDDO
501           ENDDO           ENDDO
502           CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQan',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
503             CALL DIAGNOSTICS_SCALE_FILL( tmpMk, oneRL, 2,
504         &                                'SALTSQan',0,Nr,0,1,1,myThid)
505          ENDIF          ENDIF
506          
507  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
508    
509          IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
510           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
511            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
512             DO K=1,Nr             DO k=1,Nr
513              DO j = 1,sNy              DO j = 1,sNy
514                DO i = 1,sNx                DO i = 1,sNx+1
515                  tmpMk(i,j,K,bi,bj)                  tmpMk(i,j,k,bi,bj)
516       &               = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)       &               = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
517                ENDDO                ENDDO
518              ENDDO              ENDDO
519             ENDDO             ENDDO
# Line 421  C---+----1----+----2----+----3----+----4 Line 525  C---+----1----+----2----+----3----+----4
525          IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
526           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
527            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
528             DO K=1,Nr             DO k=1,Nr
529              DO j = 1,sNy              DO j = 1,sNy+1
530                DO i = 1,sNx                DO i = 1,sNx
531                  tmpMk(i,j,K,bi,bj)                  tmpMk(i,j,k,bi,bj)
532       &               = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)       &               = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
533                ENDDO                ENDDO
534              ENDDO              ENDDO
535             ENDDO             ENDDO
# Line 439  C---+----1----+----2----+----3----+----4 Line 543  C---+----1----+----2----+----3----+----4
543          IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
544           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
545            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
546             DO K=1,Nr             DO k=1,Nr
547              DO j = 1,sNy              DO j = 1,sNy
548               DO i = 1,sNx+1               DO i = 1,sNx+1
549                 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
550       &                  *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))       &                  *(theta(i,j,k,bi,bj)+theta(i-1,j,k,bi,bj))
551       &                  * hFacW(i,j,K,bi,bj)       &                  * hFacW(i,j,k,bi,bj)
552               ENDDO               ENDDO
553              ENDDO              ENDDO
554             ENDDO             ENDDO
# Line 456  C---+----1----+----2----+----3----+----4 Line 560  C---+----1----+----2----+----3----+----4
560          IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
561           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
562            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
563             DO K=1,Nr             DO k=1,Nr
564              DO j = 1,sNy+1              DO j = 1,sNy+1
565               DO i = 1,sNx               DO i = 1,sNx
566                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
567       &                  *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))       &                  *(theta(i,j,k,bi,bj)+theta(i,j-1,k,bi,bj))
568       &                  * hFacS(i,j,K,bi,bj)       &                  * hFacS(i,j,k,bi,bj)
569               ENDDO               ENDDO
570              ENDDO              ENDDO
571             ENDDO             ENDDO
# Line 469  C---+----1----+----2----+----3----+----4 Line 573  C---+----1----+----2----+----3----+----4
573           ENDDO           ENDDO
574           CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
575          ENDIF          ENDIF
576          
577          IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
578           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
579            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
580             DO K=1,Nr             DO k=1,Nr
581              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
582              DO j = 1,sNy              DO j = 1,sNy
583               DO i = 1,sNx               DO i = 1,sNx
584                 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
585       &                  *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))       &                  *(theta(i,j,k,bi,bj)+theta(i,j,km1,bi,bj))
586               ENDDO               ENDDO
587              ENDDO              ENDDO
588             ENDDO             ENDDO
# Line 490  C---+----1----+----2----+----3----+----4 Line 594  C---+----1----+----2----+----3----+----4
594          IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
595           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
596            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
597             DO K=1,Nr             DO k=1,Nr
598              DO j = 1,sNy              DO j = 1,sNy
599               DO i = 1,sNx+1               DO i = 1,sNx+1
600                 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*0.5 _d 0
601       &                  *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))       &                  *(salt(i,j,k,bi,bj)+salt(i-1,j,k,bi,bj))
602       &                  * hFacW(i,j,K,bi,bj)       &                  * hFacW(i,j,k,bi,bj)
603               ENDDO               ENDDO
604              ENDDO              ENDDO
605             ENDDO             ENDDO
# Line 507  C---+----1----+----2----+----3----+----4 Line 611  C---+----1----+----2----+----3----+----4
611          IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
612           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
613            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
614             DO K=1,Nr             DO k=1,Nr
615              DO j = 1,sNy+1              DO j = 1,sNy+1
616               DO i = 1,sNx               DO i = 1,sNx
617                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*0.5 _d 0
618       &                  *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))       &                  *(salt(i,j,k,bi,bj)+salt(i,j-1,k,bi,bj))
619       &                  * hFacS(i,j,K,bi,bj)       &                  * hFacS(i,j,k,bi,bj)
620               ENDDO               ENDDO
621              ENDDO              ENDDO
622             ENDDO             ENDDO
# Line 520  C---+----1----+----2----+----3----+----4 Line 624  C---+----1----+----2----+----3----+----4
624           ENDDO           ENDDO
625           CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
626          ENDIF          ENDIF
627          
628          IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
629           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
630            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
631             DO K=1,Nr             DO k=1,Nr
632              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
633              DO j = 1,sNy              DO j = 1,sNy
634               DO i = 1,sNx               DO i = 1,sNx
635                 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)*0.5 _d 0
636       &                  *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))       &                  *(salt(i,j,k,bi,bj)+salt(i,j,km1,bi,bj))
637               ENDDO               ENDDO
638              ENDDO              ENDDO
639             ENDDO             ENDDO
# Line 537  C---+----1----+----2----+----3----+----4 Line 641  C---+----1----+----2----+----3----+----4
641           ENDDO           ENDDO
642           CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
643          ENDIF          ENDIF
644          
645  C--   fill tracer state-var diagnostics: end  C--   fill tracer state-var diagnostics: end
646        ENDIF        ENDIF
647    
648          IF ( selectVars.EQ.4 ) THEN
649    C Second fill sequence for state variable tendency diagnostics: add state variable
650    C NOTE: send a '-1' for the bibjflag and do not increment counter
651    C     (previous fill for these diagnostics DID allow counter to be incremented)
652    
653            tmpFac = 86400. _d 0/deltaTMom
654            DO bj = myByLo(myThid), myByHi(myThid)
655             DO bi = myBxLo(myThid), myBxHi(myThid)
656              CALL DIAGNOSTICS_SCALE_FILL( uVel, tmpFac, 1,
657         &                           'TOTUTEND',0,Nr,-1,bi,bj,myThid )
658              CALL DIAGNOSTICS_SCALE_FILL( vVel, tmpFac, 1,
659         &                           'TOTVTEND',0,Nr,-1,bi,bj,myThid )
660             ENDDO
661            ENDDO
662    
663            IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
664             DO bj = myByLo(myThid), myByHi(myThid)
665              DO bi = myBxLo(myThid), myBxHi(myThid)
666               DO k=1,Nr
667                tmpFac = 86400. _d 0/dTtracerLev(k)
668                DO j = 1,sNy
669                 DO i = 1,sNx
670                   tmpMk(i,j,k,bi,bj) = tmpFac*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    #ifdef ALLOW_LAYERS
676               IF ( useLayers ) THEN
677                 CALL LAYERS_FILL(tmpMk,1,'TOT',0,Nr,-1,bi,bj,myThid)
678               ENDIF
679    #endif /* ALLOW_LAYERS */    
680              ENDDO
681             ENDDO
682            ENDIF
683    
684            IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
685             DO bj = myByLo(myThid), myByHi(myThid)
686              DO bi = myBxLo(myThid), myBxHi(myThid)
687               DO k=1,Nr
688                tmpFac = 86400. _d 0/dTtracerLev(k)
689                DO j = 1,sNy
690                 DO i = 1,sNx
691                   tmpMk(i,j,k,bi,bj) = tmpFac*salt(i,j,k,bi,bj)
692                 ENDDO
693                ENDDO
694               ENDDO
695               CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
696    #ifdef ALLOW_LAYERS
697               IF ( useLayers ) THEN
698                CALL LAYERS_FILL(tmpMk,2,'TOT',0,Nr,-1,bi,bj,myThid)
699               ENDIF
700    #endif /* ALLOW_LAYERS */    
701              ENDDO
702             ENDDO
703            ENDIF
704    
705    C--   fill state tendency diagnostics the second time: end
706          ENDIF
707    
708  #endif /* ALLOW_DIAGNOSTICS */  #endif /* ALLOW_DIAGNOSTICS */
709          
710        RETURN        RETURN
711        END        END

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.43

  ViewVC Help
Powered by ViewVC 1.1.22