/[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.16 by jmc, Thu Feb 10 15:01:34 2005 UTC revision 1.41 by jmc, Wed Nov 30 20:59:40 2011 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 41  C     == Local variables == Line 49  C     == Local variables ==
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)
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        INTEGER i,j,K,bi,bj        _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
55    #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
63          
64        IF ( selectVars .GE. 2 ) THEN        tmpFac = 1. _d 0
65    
66          IF ( selectVars.EQ.2 .OR. selectVars.EQ.3 ) THEN
67  C--   fill momentum state-var diagnostics:  C--   fill momentum state-var diagnostics:
68    
69          CALL DIAGNOSTICS_FILL(etaN,'ETAN    ',0,1,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(etaN, 'ETAN    ',0, 1,0,1,1,myThid)
70          
71          IF ( DIAGNOSTICS_IS_ON('ETANSQ  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('RSURF   ',myThid) ) THEN
72           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
73            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
74             DO j = 1,sNy             DO j = 1,sNy
75              DO i = 1,sNx              DO i = 1,sNx
76                tmp1k(i,j,bi,bj) = etaN(i,j,bi,bj)*etaN(i,j,bi,bj)                tmp1k(i,j,bi,bj) = Ro_surf(i,j,bi,bj) + etaH(i,j,bi,bj)
77              ENDDO              ENDDO
78             ENDDO             ENDDO
79            ENDDO            ENDDO
80           ENDDO           ENDDO
81           CALL DIAGNOSTICS_FILL(tmp1k,'ETANSQ  ',0,1,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmp1k,'RSURF   ',0,1,0,1,1,myThid)
82          ENDIF          ENDIF
83          
84            CALL DIAGNOSTICS_SCALE_FILL(etaN,tmpFac,2,
85         &                              'ETANSQ  ',0, 1,0,1,1,myThid)
86    
87  #ifdef EXACT_CONSERV  #ifdef EXACT_CONSERV
88          IF ( DIAGNOSTICS_IS_ON('DETADT2 ',myThid) ) THEN          CALL DIAGNOSTICS_SCALE_FILL(dEtaHdt,tmpFac,2,
89           DO bj = myByLo(myThid), myByHi(myThid)       &                              'DETADT2 ',0, 1,0,1,1,myThid)
90            DO bi = myBxLo(myThid), myBxHi(myThid)  #endif
91             DO j = 1,sNy  #ifdef ALLOW_NONHYDROSTATIC
92              DO i = 1,sNx          IF ( use3Dsolver ) THEN
93                tmp1k(i,j,bi,bj) = dEtaHdt(i,j,bi,bj)*dEtaHdt(i,j,bi,bj)            CALL DIAGNOSTICS_FILL( phi_nh,'PHI_NH  ',0,Nr,0,1,1,myThid )
             ENDDO  
            ENDDO  
           ENDDO  
          ENDDO  
          CALL DIAGNOSTICS_FILL(tmp1k,'DETADT2 ',0,1,0,1,1,myThid)  
94          ENDIF          ENDIF
95  #endif  #endif
96          
97          CALL DIAGNOSTICS_FILL(uVel, 'UVEL    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(uVel, 'UVEL    ',0,Nr,0,1,1,myThid)
98          CALL DIAGNOSTICS_FILL(vVel, 'VVEL    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(vVel, 'VVEL    ',0,Nr,0,1,1,myThid)
99          CALL DIAGNOSTICS_FILL(wVel, 'WVEL    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(wVel, 'WVEL    ',0,Nr,0,1,1,myThid)
         
         IF ( DIAGNOSTICS_IS_ON('UVELSQ  ',myThid) ) THEN  
          DO bj = myByLo(myThid), myByHi(myThid)  
           DO bi = myBxLo(myThid), myBxHi(myThid)  
            DO K=1,Nr  
             DO j = 1,sNy  
              DO i = 1,sNx+1  
               tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*uVel(i,j,K,bi,bj)  
              ENDDO  
             ENDDO  
            ENDDO  
           ENDDO  
          ENDDO  
          CALL DIAGNOSTICS_FILL(tmpMk,'UVELSQ  ',0,Nr,0,1,1,myThid)  
         ENDIF  
100    
101          IF ( DIAGNOSTICS_IS_ON('VVELSQ  ',myThid) ) THEN          CALL DIAGNOSTICS_SCALE_FILL(uVel,tmpFac,2,
102           DO bj = myByLo(myThid), myByHi(myThid)       &                              'UVELSQ  ',0,Nr,0,1,1,myThid)
103            DO bi = myBxLo(myThid), myBxHi(myThid)          CALL DIAGNOSTICS_SCALE_FILL(vVel,tmpFac,2,
104             DO K=1,Nr       &                              'VVELSQ  ',0,Nr,0,1,1,myThid)
105              DO j = 1,sNy+1          CALL DIAGNOSTICS_SCALE_FILL(wVel,tmpFac,2,
106               DO i = 1,sNx       &                              'WVELSQ  ',0,Nr,0,1,1,myThid)
               tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*vVel(i,j,K,bi,bj)  
              ENDDO  
             ENDDO  
            ENDDO  
           ENDDO  
          ENDDO  
          CALL DIAGNOSTICS_FILL(tmpMk,'VVELSQ  ',0,Nr,0,1,1,myThid)  
         ENDIF  
107    
         IF ( DIAGNOSTICS_IS_ON('WVELSQ  ',myThid) ) THEN  
          DO bj = myByLo(myThid), myByHi(myThid)  
           DO bi = myBxLo(myThid), myBxHi(myThid)  
            DO K=1,Nr  
             DO j = 1,sNy  
              DO i = 1,sNx  
               tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*wVel(i,j,K,bi,bj)  
              ENDDO  
             ENDDO  
            ENDDO  
           ENDDO  
          ENDDO  
          CALL DIAGNOSTICS_FILL(tmpMk,'WVELSQ  ',0,Nr,0,1,1,myThid)  
         ENDIF  
         
108  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
109    
110          IF ( DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UE_VEL_C',myThid) .OR.
111         &       DIAGNOSTICS_IS_ON('VN_VEL_C',myThid) .OR.
112         &       DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN
113           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
114            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
115             DO K=1,Nr             DO k=1,Nr
116              DO j = 1,sNy              DO j = 1,sNy
117               DO i = 1,sNx               DO i = 1,sNx
118                tmpMk(i,j,K,bi,bj) = 0.25 _d 0                uBarC = 0.5 _d 0
119       &           *(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))
120       &           *(vVel(i,j,K,bi,bj)+vVel(i,j+1,K,bi,bj))                vBarC = 0.5 _d 0
121         &           *(vVel(i,j,k,bi,bj)+vVel(i,j+1,k,bi,bj))
122                  tmpU(i,j) = angleCosC(i,j,bi,bj)*uBarC
123         &                   -angleSinC(i,j,bi,bj)*vBarC
124                  tmpV(i,j) = angleSinC(i,j,bi,bj)*uBarC
125         &                   +angleCosC(i,j,bi,bj)*vBarC
126                  tmpMk(i,j,k,bi,bj) = tmpU(i,j)*tmpV(i,j)
127               ENDDO               ENDDO
128              ENDDO              ENDDO
129                CALL DIAGNOSTICS_FILL(tmpU,'UE_VEL_C',k,1,2,bi,bj,myThid)
130                CALL DIAGNOSTICS_FILL(tmpV,'VN_VEL_C',k,1,2,bi,bj,myThid)
131             ENDDO             ENDDO
132            ENDDO            ENDDO
133           ENDDO           ENDDO
134           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)
135          ENDIF          ENDIF
136          
137          IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN
138           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
139            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
140             DO K=1,Nr             DO k=1,Nr
141              DO j = 1,sNy+1              DO j = 1,sNy+1
142               DO i = 1,sNx+1               DO i = 1,sNx+1
143                tmpMk(i,j,K,bi,bj) = 0.25 _d 0                tmpMk(i,j,k,bi,bj) = 0.25 _d 0
144       &           *(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))
145       &           *(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))
146               ENDDO               ENDDO
147              ENDDO              ENDDO
148             ENDDO             ENDDO
# Line 161  C---+----1----+----2----+----3----+----4 Line 150  C---+----1----+----2----+----3----+----4
150           ENDDO           ENDDO
151           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)
152          ENDIF          ENDIF
153          
154          IF ( DIAGNOSTICS_IS_ON('WU_VEL  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WU_VEL  ',myThid) ) THEN
155           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
156            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
157             DO K=1,Nr             DO k=1,Nr
158              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
159              DO j = 1,sNy              DO j = 1,sNy
160               DO i = 1,sNx+1               DO i = 1,sNx+1
161                tmpMk(i,j,K,bi,bj) = 0.25 _d 0                tmpMk(i,j,k,bi,bj) = 0.25 _d 0
162       &           *(uVel(i,km1,K,bi,bj)+uVel(i,j,K,bi,bj))       &           *(uVel(i,j,km1,bi,bj)+uVel(i,j,k,bi,bj))
163       &           *(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)
164       &            +wVel( i ,j,K,bi,bj)*rA( i ,j,bi,bj)       &            +wVel( i ,j,k,bi,bj)*rA( i ,j,bi,bj)
165       &            )*recip_rAw(i,j,bi,bj)       &            )*recip_rAw(i,j,bi,bj)
166               ENDDO               ENDDO
167              ENDDO              ENDDO
# Line 185  C---+----1----+----2----+----3----+----4 Line 174  C---+----1----+----2----+----3----+----4
174          IF ( DIAGNOSTICS_IS_ON('WV_VEL  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WV_VEL  ',myThid) ) THEN
175           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
176            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
177             DO K=1,Nr             DO k=1,Nr
178              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
179              DO j = 1,sNy+1              DO j = 1,sNy+1
180               DO i = 1,sNx               DO i = 1,sNx
181                tmpMk(i,j,K,bi,bj) = 0.25 _d 0                tmpMk(i,j,k,bi,bj) = 0.25 _d 0
182       &           *(vVel(i,km1,K,bi,bj)+vVel(i,j,K,bi,bj))       &           *(vVel(i,j,km1,bi,bj)+vVel(i,j,k,bi,bj))
183       &           *(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)
184       &            +wVel(i, j ,K,bi,bj)*rA(i, j ,bi,bj)       &            +wVel(i, j ,k,bi,bj)*rA(i, j ,bi,bj)
185       &            )*recip_rAs(i,j,bi,bj)       &            )*recip_rAs(i,j,bi,bj)
186               ENDDO               ENDDO
187              ENDDO              ENDDO
# Line 207  C---+----1----+----2----+----3----+----4 Line 196  C---+----1----+----2----+----3----+----4
196          IF ( DIAGNOSTICS_IS_ON('UVELTH  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELTH  ',myThid) ) THEN
197           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
198            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
199             DO K=1,Nr             DO k=1,Nr
200              DO j = 1,sNy              DO j = 1,sNy
201               DO i = 1,sNx+1               DO i = 1,sNx+1
202                 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
203       &                  *(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))
204               ENDDO               ENDDO
205              ENDDO              ENDDO
206             ENDDO             ENDDO
# Line 219  C---+----1----+----2----+----3----+----4 Line 208  C---+----1----+----2----+----3----+----4
208           ENDDO           ENDDO
209           CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH  ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH  ',0,Nr,0,1,1,myThid)
210          ENDIF          ENDIF
211          
212          IF ( DIAGNOSTICS_IS_ON('VVELTH  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VVELTH  ',myThid) ) THEN
213           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
214            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
215             DO K=1,Nr             DO k=1,Nr
216              DO j = 1,sNy+1              DO j = 1,sNy+1
217               DO i = 1,sNx               DO i = 1,sNx
218                 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
219       &                  *(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))
220               ENDDO               ENDDO
221              ENDDO              ENDDO
222             ENDDO             ENDDO
# Line 235  C---+----1----+----2----+----3----+----4 Line 224  C---+----1----+----2----+----3----+----4
224           ENDDO           ENDDO
225           CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH  ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH  ',0,Nr,0,1,1,myThid)
226          ENDIF          ENDIF
227          
228          IF ( DIAGNOSTICS_IS_ON('WVELTH  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WVELTH  ',myThid) ) THEN
229           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
230            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
231             DO K=1,Nr             DO k=1,Nr
232              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
233              DO j = 1,sNy              DO j = 1,sNy
234               DO i = 1,sNx               DO i = 1,sNx
235                 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
236       &                  *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))       &                  *(theta(i,j,k,bi,bj)+theta(i,j,km1,bi,bj))
237               ENDDO               ENDDO
238              ENDDO              ENDDO
239             ENDDO             ENDDO
# Line 252  C---+----1----+----2----+----3----+----4 Line 241  C---+----1----+----2----+----3----+----4
241           ENDDO           ENDDO
242           CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH  ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH  ',0,Nr,0,1,1,myThid)
243          ENDIF          ENDIF
244          
245          IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
246           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
247            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
248             DO K=1,Nr             DO k=1,Nr
249              DO j = 1,sNy              DO j = 1,sNy
250               DO i = 1,sNx+1               DO i = 1,sNx+1
251                 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
252       &                  *(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))
253               ENDDO               ENDDO
254              ENDDO              ENDDO
255             ENDDO             ENDDO
# Line 268  C---+----1----+----2----+----3----+----4 Line 257  C---+----1----+----2----+----3----+----4
257           ENDDO           ENDDO
258           CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
259          ENDIF          ENDIF
260          
261          IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
262           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
263            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
264             DO K=1,Nr             DO k=1,Nr
265              DO j = 1,sNy+1              DO j = 1,sNy+1
266               DO i = 1,sNx               DO i = 1,sNx
267                 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
268       &                  *(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))
269               ENDDO               ENDDO
270              ENDDO              ENDDO
271             ENDDO             ENDDO
# Line 288  C---+----1----+----2----+----3----+----4 Line 277  C---+----1----+----2----+----3----+----4
277          IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN
278           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
279            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
280             DO K=1,Nr             DO k=1,Nr
281              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
282              DO j = 1,sNy              DO j = 1,sNy
283               DO i = 1,sNx               DO i = 1,sNx
284                 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
285       &                  *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))       &                  *(salt(i,j,k,bi,bj)+salt(i,j,km1,bi,bj))
286               ENDDO               ENDDO
287              ENDDO              ENDDO
288             ENDDO             ENDDO
# Line 301  C---+----1----+----2----+----3----+----4 Line 290  C---+----1----+----2----+----3----+----4
290           ENDDO           ENDDO
291           CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
292          ENDIF          ENDIF
         
 C--   fill momentum state-var diagnostics: end  
       ENDIF  
293    
294  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|          IF ( DIAGNOSTICS_IS_ON('UVELPHI ',myThid) ) THEN
295             DO bj = myByLo(myThid), myByHi(myThid)
296              DO bi = myBxLo(myThid), myBxHi(myThid)
297               DO k=1,Nr
298                DO j = 1,sNy
299                 DO i = 1,sNx+1
300                   tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
301         &       *0.5 _d 0*(totPhiHyd(i,j,k,bi,bj)+totPhiHyd(i-1,j,k,bi,bj))
302                 ENDDO
303                ENDDO
304               ENDDO
305              ENDDO
306             ENDDO
307             CALL DIAGNOSTICS_FILL(tmpMk,'UVELPHI ',0,Nr,0,1,1,myThid)
308            ENDIF
309    
310        IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN          IF ( DIAGNOSTICS_IS_ON('VVELPHI ',myThid) ) THEN
311  C--   fill tracer state-var diagnostics:           DO bj = myByLo(myThid), myByHi(myThid)
312              DO bi = myBxLo(myThid), myBxHi(myThid)
313               DO k=1,Nr
314                DO j = 1,sNy+1
315                 DO i = 1,sNx
316                   tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
317         &       *0.5 _d 0*(totPhiHyd(i,j,k,bi,bj)+totPhiHyd(i,j-1,k,bi,bj))
318                 ENDDO
319                ENDDO
320               ENDDO
321              ENDDO
322             ENDDO
323             CALL DIAGNOSTICS_FILL(tmpMk,'VVELPHI ',0,Nr,0,1,1,myThid)
324            ENDIF
325    
326          CALL DIAGNOSTICS_FILL(theta,'THETA   ',0,Nr,0,1,1,myThid)          IF ( DIAGNOSTICS_IS_ON('RCENTER ',myThid) ) THEN
327          CALL DIAGNOSTICS_FILL(salt, 'SALT    ',0,Nr,0,1,1,myThid)           DO bj = myByLo(myThid), myByHi(myThid)
328              DO bi = myBxLo(myThid), myBxHi(myThid)
329               DO j = 1,sNy
330                DO i = 1,sNx
331                  tmp1k(i,j,bi,bj) = R_low(i,j,bi,bj)
332                ENDDO
333               ENDDO
334               DO k = Nr,1,-1
335                DO j = 1,sNy
336                 DO i = 1,sNx
337                  tmpMk(i,j,k,bi,bj) = tmp1k(i,j,bi,bj)
338         &             + (rF(k+1)-rC(k))*hFacC(i,j,k,bi,bj)*rkSign
339    C         above: more general (setInterFDr/setCenterDr) than line below
340    c    &                      + drF(k)*hFacC(i,j,k,bi,bj)*0.5 _d 0
341                  tmp1k(i,j,bi,bj) =   tmp1k(i,j,bi,bj)
342         &                      + drF(k)*hFacC(i,j,k,bi,bj)
343                 ENDDO
344                ENDDO
345               ENDDO
346              ENDDO
347             ENDDO
348             CALL DIAGNOSTICS_FILL(tmpMk,'RCENTER ',0,Nr,0,1,1,myThid)
349            ENDIF
350    
351    C First fill sequence for state variable tendency diagnostics: subtract state variable
352    C NOTE: send a '0' for the bibjflag and allow counter to be incremented
353    C     (next fill for these diagnostics will NOT allow counter to be incremented)
354    
355            IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
356             DO bj = myByLo(myThid), myByHi(myThid)
357              DO bi = myBxLo(myThid), myBxHi(myThid)
358               DO k=1,Nr
359                DO j = 1,sNy
360                 DO i = 1,sNx+1
361                   tmpMk(i,j,k,bi,bj) = -uVel(i,j,k,bi,bj)
362         .                    *86400./dTtracerLev(1)
363                 ENDDO
364                ENDDO
365               ENDDO
366              ENDDO
367             ENDDO
368             CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,0,1,1,myThid)
369            ENDIF
370    
371          IF ( DIAGNOSTICS_IS_ON('THETASQ ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
372           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
373            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
374             DO K=1,Nr             DO k=1,Nr
375                DO j = 1,sNy+1
376                 DO i = 1,sNx
377                   tmpMk(i,j,k,bi,bj) = -vVel(i,j,k,bi,bj)
378         .                    *86400./dTtracerLev(1)
379                 ENDDO
380                ENDDO
381               ENDDO
382              ENDDO
383             ENDDO
384             CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,0,1,1,myThid)
385            ENDIF
386    
387            IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
388             DO bj = myByLo(myThid), myByHi(myThid)
389              DO bi = myBxLo(myThid), myBxHi(myThid)
390               DO k=1,Nr
391              DO j = 1,sNy              DO j = 1,sNy
392               DO i = 1,sNx               DO i = 1,sNx
393                 tmpMk(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = -theta(i,j,k,bi,bj)
394       &               = theta(i,j,K,bi,bj)*theta(i,j,K,bi,bj)       .                    *86400./dTtracerLev(1)
395               ENDDO               ENDDO
396              ENDDO              ENDDO
397             ENDDO             ENDDO
398            ENDDO            ENDDO
399           ENDDO           ENDDO
400           CALL DIAGNOSTICS_FILL(tmpMk,'THETASQ ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,0,1,1,myThid)
401          ENDIF          ENDIF
402          
403          IF ( DIAGNOSTICS_IS_ON('SALTSQ  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
404           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
405            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
406             DO K=1,Nr             DO k=1,Nr
407              DO j = 1,sNy              DO j = 1,sNy
408               DO i = 1,sNx               DO i = 1,sNx
409                 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)*salt(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = -salt(i,j,k,bi,bj)
410         .                    *86400./dTtracerLev(1)
411                 ENDDO
412                ENDDO
413               ENDDO
414              ENDDO
415             ENDDO
416             CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,0,1,1,myThid)
417            ENDIF
418    
419    C--   fill momentum state-var diagnostics: end
420          ENDIF
421    
422    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
423    
424          IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
425    C--   fill tracer state-var diagnostics:
426    
427            CALL DIAGNOSTICS_FILL(theta,'THETA   ',0,Nr,0,1,1,myThid)
428            CALL DIAGNOSTICS_FILL(salt, 'SALT    ',0,Nr,0,1,1,myThid)
429    
430    #ifdef ALLOW_FIZHI
431          IF ( useFIZHI .AND. DIAGNOSTICS_IS_ON('RELHUM  ',myThid) ) THEN
432           kappa = getcon('KAPPA')
433           DO bj = myByLo(myThid), myByHi(myThid)
434            DO bi = myBxLo(myThid), myBxHi(myThid)
435             DO j = 1,sNy
436              DO i = 1,sNx
437               DO k = 1,Nr
438                dummy1 = theta(i,j,k,bi,bj) * ((rC(k)/100.)/1000.)**kappa
439                dummy2 = rC(k) / 100.
440                CALL QSAT(dummy1,dummy2,dummy3,dummy4,.false.)
441                tmpMk(i,j,k,bi,bj) = hFacC(i,j,k,bi,bj)
442         &                          *salt(i,j,k,bi,bj)*100. / dummy3
443               ENDDO
444              ENDDO
445             ENDDO
446            ENDDO
447           ENDDO
448           CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM  ',0,Nr,0,1,1,myThid)
449          ENDIF
450    #endif /* ALLOW_FIZHI */
451    
452            CALL DIAGNOSTICS_SCALE_FILL(theta,tmpFac,2,
453         &                              'THETASQ ',0,Nr,0,1,1,myThid)
454            CALL DIAGNOSTICS_SCALE_FILL(salt,tmpFac,2,
455         &                              'SALTSQ  ',0,Nr,0,1,1,myThid)
456    
457    #ifdef ALLOW_GENERIC_ADVDIFF
458    # ifdef ALLOW_ADAMSBASHFORTH_3
459          IF ( selectVars.EQ.1 ) THEN
460    C-    stagger time-step: fill diags after updating myIter
461            m1 = 1 + MOD(myIter,2)
462          ELSE
463    C-    synchronous time-step: fill diags before updating myIter
464            m1 = 1 + MOD(myIter+1,2)
465          ENDIF
466          IF ( AdamsBashforthGt )
467         & CALL DIAGNOSTICS_FILL( gtNm(1-OLx,1-OLy,1,1,1,m1),
468         &                        'gTinAB  ',0,Nr,0,1,1,myThid )
469          IF ( AdamsBashforthGs )
470         & CALL DIAGNOSTICS_FILL( gsNm(1-OLx,1-OLy,1,1,1,m1),
471         &                        'gSinAB  ',0,Nr,0,1,1,myThid )
472    # else /* ALLOW_ADAMSBASHFORTH_3 */
473          IF ( AdamsBashforthGt )
474         & CALL DIAGNOSTICS_FILL( gtNm1,'gTinAB  ',0,Nr,0,1,1,myThid )
475          IF ( AdamsBashforthGs )
476         & CALL DIAGNOSTICS_FILL( gsNm1,'gSinAB  ',0,Nr,0,1,1,myThid )
477    # endif /* ALLOW_ADAMSBASHFORTH_3 */
478    #endif /* ALLOW_GENERIC_ADVDIFF */
479    
480    c       IF ( DIAGNOSTICS_IS_ON('SST     ',myThid) ) THEN
481    c        DO bj = myByLo(myThid), myByHi(myThid)
482    c         DO bi = myBxLo(myThid), myBxHi(myThid)
483    c          DO j = 1,sNy
484    c           DO i = 1,sNx
485    c             tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)
486    c           ENDDO
487    c          ENDDO
488    c         ENDDO
489    c        ENDDO
490    c        CALL DIAGNOSTICS_FILL(tmp1k,'SST     ',0,1,0,1,1,myThid)
491    c       ENDIF
492    
493    c       IF ( DIAGNOSTICS_IS_ON('SSS     ',myThid) ) THEN
494    c        DO bj = myByLo(myThid), myByHi(myThid)
495    c         DO bi = myBxLo(myThid), myBxHi(myThid)
496    c          DO j = 1,sNy
497    c           DO i = 1,sNx
498    c             tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)
499    c           ENDDO
500    c          ENDDO
501    c         ENDDO
502    c        ENDDO
503    c        CALL DIAGNOSTICS_FILL(tmp1k,'SSS     ',0,1,0,1,1,myThid)
504    c       ENDIF
505    
506            IF ( fluidIsWater .AND.
507         &       ( DIAGNOSTICS_IS_ON('SALTanom',myThid)
508         &     .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
509             DO bj = myByLo(myThid), myByHi(myThid)
510              DO bi = myBxLo(myThid), myBxHi(myThid)
511               DO k=1,Nr
512                DO j = 1,sNy
513                 DO i = 1,sNx
514                   tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)-35. _d 0
515               ENDDO               ENDDO
516              ENDDO              ENDDO
517             ENDDO             ENDDO
518            ENDDO            ENDDO
519           ENDDO           ENDDO
520           CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQ  ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL( tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
521             CALL DIAGNOSTICS_SCALE_FILL(tmpMk,tmpFac,2,
522         &                                'SALTSQan',0,Nr,0,1,1,myThid)
523          ENDIF          ENDIF
524          
525  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
526    
527          IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
528           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
529            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
530             DO K=1,Nr             DO k=1,Nr
531              DO j = 1,sNy              DO j = 1,sNy
532                DO i = 1,sNx                DO i = 1,sNx+1
533                  tmpMk(i,j,K,bi,bj)                  tmpMk(i,j,k,bi,bj)
534       &               = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)       &               = uVel(i,j,k,bi,bj)*hFacW(i,j,k,bi,bj)
535                ENDDO                ENDDO
536              ENDDO              ENDDO
537             ENDDO             ENDDO
# Line 365  C---+----1----+----2----+----3----+----4 Line 543  C---+----1----+----2----+----3----+----4
543          IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VVELMASS',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+1
548                DO i = 1,sNx                DO i = 1,sNx
549                  tmpMk(i,j,K,bi,bj)                  tmpMk(i,j,k,bi,bj)
550       &               = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)       &               = vVel(i,j,k,bi,bj)*hFacS(i,j,k,bi,bj)
551                ENDDO                ENDDO
552              ENDDO              ENDDO
553             ENDDO             ENDDO
# Line 383  C---+----1----+----2----+----3----+----4 Line 561  C---+----1----+----2----+----3----+----4
561          IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
562           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
563            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
564             DO K=1,Nr             DO k=1,Nr
565              DO j = 1,sNy              DO j = 1,sNy
566               DO i = 1,sNx+1               DO i = 1,sNx+1
567                 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
568       &                  *(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))
569       &                  * hFacW(i,j,K,bi,bj)       &                  * hFacW(i,j,k,bi,bj)
570               ENDDO               ENDDO
571              ENDDO              ENDDO
572             ENDDO             ENDDO
# Line 400  C---+----1----+----2----+----3----+----4 Line 578  C---+----1----+----2----+----3----+----4
578          IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
579           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
580            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
581             DO K=1,Nr             DO k=1,Nr
582              DO j = 1,sNy+1              DO j = 1,sNy+1
583               DO i = 1,sNx               DO i = 1,sNx
584                 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
585       &                  *(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))
586       &                  * hFacS(i,j,K,bi,bj)       &                  * hFacS(i,j,k,bi,bj)
587               ENDDO               ENDDO
588              ENDDO              ENDDO
589             ENDDO             ENDDO
# Line 413  C---+----1----+----2----+----3----+----4 Line 591  C---+----1----+----2----+----3----+----4
591           ENDDO           ENDDO
592           CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
593          ENDIF          ENDIF
594          
595          IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
596           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
597            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
598             DO K=1,Nr             DO k=1,Nr
599              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
600              DO j = 1,sNy              DO j = 1,sNy
601               DO i = 1,sNx               DO i = 1,sNx
602                 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
603       &                  *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))       &                  *(theta(i,j,k,bi,bj)+theta(i,j,km1,bi,bj))
604               ENDDO               ENDDO
605              ENDDO              ENDDO
606             ENDDO             ENDDO
# Line 434  C---+----1----+----2----+----3----+----4 Line 612  C---+----1----+----2----+----3----+----4
612          IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
613           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
614            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
615             DO K=1,Nr             DO k=1,Nr
616              DO j = 1,sNy              DO j = 1,sNy
617               DO i = 1,sNx+1               DO i = 1,sNx+1
618                 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
619       &                  *(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))
620       &                  * hFacW(i,j,K,bi,bj)       &                  * hFacW(i,j,k,bi,bj)
621               ENDDO               ENDDO
622              ENDDO              ENDDO
623             ENDDO             ENDDO
# Line 451  C---+----1----+----2----+----3----+----4 Line 629  C---+----1----+----2----+----3----+----4
629          IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
630           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
631            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
632             DO K=1,Nr             DO k=1,Nr
633              DO j = 1,sNy+1              DO j = 1,sNy+1
634               DO i = 1,sNx               DO i = 1,sNx
635                 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
636       &                  *(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))
637       &                  * hFacS(i,j,K,bi,bj)       &                  * hFacS(i,j,k,bi,bj)
638               ENDDO               ENDDO
639              ENDDO              ENDDO
640             ENDDO             ENDDO
# Line 464  C---+----1----+----2----+----3----+----4 Line 642  C---+----1----+----2----+----3----+----4
642           ENDDO           ENDDO
643           CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
644          ENDIF          ENDIF
645          
646          IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
647           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
648            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
649             DO K=1,Nr             DO k=1,Nr
650              km1 = MAX(k-1,1)              km1 = MAX(k-1,1)
651              DO j = 1,sNy              DO j = 1,sNy
652               DO i = 1,sNx               DO i = 1,sNx
653                 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
654       &                  *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))       &                  *(salt(i,j,k,bi,bj)+salt(i,j,km1,bi,bj))
655               ENDDO               ENDDO
656              ENDDO              ENDDO
657             ENDDO             ENDDO
# Line 481  C---+----1----+----2----+----3----+----4 Line 659  C---+----1----+----2----+----3----+----4
659           ENDDO           ENDDO
660           CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)           CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
661          ENDIF          ENDIF
662          
663  C--   fill tracer state-var diagnostics: end  C--   fill tracer state-var diagnostics: end
664        ENDIF        ENDIF
665    
666          IF ( selectVars.EQ.4 ) THEN
667    C Second fill sequence for state variable tendency diagnostics: add state variable
668    C NOTE: send a '-1' for the bibjflag and do not increment counter
669    C     (next fill for these diagnostics WILL allow counter to be incremented)
670    
671            IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
672             DO bj = myByLo(myThid), myByHi(myThid)
673              DO bi = myBxLo(myThid), myBxHi(myThid)
674               DO k=1,Nr
675                DO j = 1,sNy
676                 DO i = 1,sNx+1
677                   tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)
678         .                    *86400./dTtracerLev(1)
679                 ENDDO
680                ENDDO
681               ENDDO
682               CALL DIAGNOSTICS_FILL(tmpMk,'TOTUTEND',0,Nr,-1,bi,bj,myThid)
683              ENDDO
684             ENDDO
685            ENDIF
686    
687            IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
688             DO bj = myByLo(myThid), myByHi(myThid)
689              DO bi = myBxLo(myThid), myBxHi(myThid)
690               DO k=1,Nr
691                DO j = 1,sNy+1
692                 DO i = 1,sNx
693                   tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)
694         .                    *86400./dTtracerLev(1)
695                 ENDDO
696                ENDDO
697               ENDDO
698               CALL DIAGNOSTICS_FILL(tmpMk,'TOTVTEND',0,Nr,-1,bi,bj,myThid)
699              ENDDO
700             ENDDO
701            ENDIF
702    
703            IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
704             DO bj = myByLo(myThid), myByHi(myThid)
705              DO bi = myBxLo(myThid), myBxHi(myThid)
706               DO k=1,Nr
707                DO j = 1,sNy
708                 DO i = 1,sNx
709                   tmpMk(i,j,k,bi,bj) = theta(i,j,k,bi,bj)
710         .                    *86400./dTtracerLev(1)
711                 ENDDO
712                ENDDO
713               ENDDO
714               CALL DIAGNOSTICS_FILL(tmpMk,'TOTTTEND',0,Nr,-1,bi,bj,myThid)
715              ENDDO
716             ENDDO
717            ENDIF
718    
719            IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
720             DO bj = myByLo(myThid), myByHi(myThid)
721              DO bi = myBxLo(myThid), myBxHi(myThid)
722               DO k=1,Nr
723                DO j = 1,sNy
724                 DO i = 1,sNx
725                   tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)
726         .                    *86400./dTtracerLev(1)
727                 ENDDO
728                ENDDO
729               ENDDO
730               CALL DIAGNOSTICS_FILL(tmpMk,'TOTSTEND',0,Nr,-1,bi,bj,myThid)
731              ENDDO
732             ENDDO
733            ENDIF
734    
735    C--   fill state tendency diagnostics the second time: end
736          ENDIF
737    
738  #endif /* ALLOW_DIAGNOSTICS */  #endif /* ALLOW_DIAGNOSTICS */
739          
740        RETURN        RETURN
741        END        END

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.41

  ViewVC Help
Powered by ViewVC 1.1.22