/[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.14 by jmc, Wed Dec 15 00:20:37 2004 UTC revision 1.20 by molod, Fri Jun 17 01:03:56 2005 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "DIAG_OPTIONS.h"  #include "DIAG_OPTIONS.h"
5    
6         SUBROUTINE DIAGNOSTICS_FILL_STATE( myThid )  CBOP
7    C     !ROUTINE: DIAGNOSTICS_FILL_STATE
8         IMPLICIT NONE  C     !INTERFACE:
9          SUBROUTINE DIAGNOSTICS_FILL_STATE( selectVars, myThid )
10    
11    C     !DESCRIPTION: \bv
12    C     *==========================================================*
13    C     | SUBROUTINE DIAGNOSTICS_FILL_STATE
14    C     | o Fill-in main code, state-variables diagnostics
15    C     *==========================================================*
16    C     \ev
17    
18    C     !USES:
19          IMPLICIT NONE
20    C     == Global variables ===
21  #include "SIZE.h"  #include "SIZE.h"
22  #include "EEPARAMS.h"  #include "EEPARAMS.h"
23  #include "GRID.h"  #include "GRID.h"
24  #include "DYNVARS.h"  #include "DYNVARS.h"
25  #include "SURFACE.h"  #include "SURFACE.h"
26    
27    C     !INPUT/OUTPUT PARAMETERS:
28    C     == Routine arguments ==
29    C     selectVars :: select which group of dianostics variables to fill-in
30    C            = 1 :: fill-in diagnostics for tracer   variables only
31    C            = 2 :: fill-in diagnostics for momentum variables only
32    C            = 3 :: fill-in diagnostics for momentum & tracer variables
33    C     myThid     :: my Thread Id number
34          INTEGER selectVars
35        INTEGER myThid        INTEGER myThid
36    
37  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
38    C     !LOCAL VARIABLES:
39    C     == Local variables ==
40        LOGICAL  DIAGNOSTICS_IS_ON        LOGICAL  DIAGNOSTICS_IS_ON
41        EXTERNAL DIAGNOSTICS_IS_ON        EXTERNAL DIAGNOSTICS_IS_ON
42        _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)
43          _RL tmpMk1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr+1,nSx,nSy)
44        _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
45        INTEGER i,j,K,bi,bj        INTEGER i,j,K,bi,bj
46        INTEGER km1        INTEGER km1
47                
48        CALL DIAGNOSTICS_FILL(etaN,'ETAN    ',0,1,0,1,1,myThid)        IF ( selectVars .GE. 2 ) THEN
49    C--   fill momentum state-var diagnostics:
50    
51            CALL DIAGNOSTICS_FILL(etaN,'ETAN    ',0,1,0,1,1,myThid)
52                
53        IF ( DIAGNOSTICS_IS_ON('ETANSQ  ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('ETANSQ  ',myThid) ) THEN
54         DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
55          DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
56            DO j = 1,sNy             DO j = 1,sNy
57              DO i = 1,sNx              DO i = 1,sNx
58                tmp1k(i,j,bi,bj) = etaN(i,j,bi,bj)*etaN(i,j,bi,bj)                tmp1k(i,j,bi,bj) = etaN(i,j,bi,bj)*etaN(i,j,bi,bj)
59              ENDDO              ENDDO
60               ENDDO
61            ENDDO            ENDDO
62          ENDDO           ENDDO
63         ENDDO           CALL DIAGNOSTICS_FILL(tmp1k,'ETANSQ  ',0,1,0,1,1,myThid)
64         CALL DIAGNOSTICS_FILL(tmp1k,'ETANSQ  ',0,1,0,1,1,myThid)          ENDIF
       ENDIF  
         
       CALL DIAGNOSTICS_FILL(phiHydLow,'PHIBOT  ',0,1,0,1,1,myThid)  
   
       IF ( DIAGNOSTICS_IS_ON('PHIBOTSQ',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) = phiHydLow(i,j,bi,bj)  
      &                          *phiHydLow(i,j,bi,bj)  
             ENDDO  
           ENDDO  
         ENDDO  
        ENDDO  
        CALL DIAGNOSTICS_FILL(tmp1k,'PHIBOTSQ',0,1,0,1,1,myThid)  
       ENDIF  
65                
66  #ifdef EXACT_CONSERV  #ifdef EXACT_CONSERV
67        IF ( DIAGNOSTICS_IS_ON('DETADT2 ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('DETADT2 ',myThid) ) THEN
68         DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
69          DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
70            DO j = 1,sNy             DO j = 1,sNy
71              DO i = 1,sNx              DO i = 1,sNx
72                tmp1k(i,j,bi,bj) = dEtaHdt(i,j,bi,bj)*dEtaHdt(i,j,bi,bj)                tmp1k(i,j,bi,bj) = dEtaHdt(i,j,bi,bj)*dEtaHdt(i,j,bi,bj)
73              ENDDO              ENDDO
74               ENDDO
75            ENDDO            ENDDO
76          ENDDO           ENDDO
77         ENDDO           CALL DIAGNOSTICS_FILL(tmp1k,'DETADT2 ',0,1,0,1,1,myThid)
78         CALL DIAGNOSTICS_FILL(tmp1k,'DETADT2 ',0,1,0,1,1,myThid)          ENDIF
       ENDIF  
79  #endif  #endif
80                
81        CALL DIAGNOSTICS_FILL(totPhihyd,'PHIHYD  ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(uVel, 'UVEL    ',0,Nr,0,1,1,myThid)
82        CALL DIAGNOSTICS_FILL(uVel, 'UVEL    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(vVel, 'VVEL    ',0,Nr,0,1,1,myThid)
83        CALL DIAGNOSTICS_FILL(vVel, 'VVEL    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(wVel, 'WVEL    ',0,Nr,0,1,1,myThid)
84        CALL DIAGNOSTICS_FILL(wVel, 'WVEL    ',0,Nr,0,1,1,myThid)        
85        CALL DIAGNOSTICS_FILL(theta,'THETA   ',0,Nr,0,1,1,myThid)          IF ( DIAGNOSTICS_IS_ON('UVEL_k2 ',myThid) ) THEN
86        CALL DIAGNOSTICS_FILL(salt, 'SALT    ',0,Nr,0,1,1,myThid)           DO bj = myByLo(myThid), myByHi(myThid)
87                    DO bi = myBxLo(myThid), myBxHi(myThid)
88        IF ( DIAGNOSTICS_IS_ON('UVELSQ  ',myThid) ) THEN             DO j = 1,sNy
89         DO bj = myByLo(myThid), myByHi(myThid)              DO i = 1,sNx
90          DO bi = myBxLo(myThid), myBxHi(myThid)                tmp1k(i,j,bi,bj) = UVEL(i,j,2,bi,bj)
           DO K=1,Nr  
             DO j = 1,sNy  
               DO i = 1,sNx  
                 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*uVel(i,j,K,bi,bj)  
               ENDDO  
91              ENDDO              ENDDO
92               ENDDO
93            ENDDO            ENDDO
94          ENDDO           ENDDO
95         ENDDO           CALL DIAGNOSTICS_FILL(tmp1k,'UVEL_k2 ',0,1,0,1,1,myThid)
96         CALL DIAGNOSTICS_FILL(tmpMk,'UVELSQ  ',0,Nr,0,1,1,myThid)          ENDIF
97        ENDIF        
98            IF ( DIAGNOSTICS_IS_ON('VVEL_k2 ',myThid) ) THEN
99        IF ( DIAGNOSTICS_IS_ON('VVELSQ  ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
100         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
101          DO bi = myBxLo(myThid), myBxHi(myThid)             DO j = 1,sNy
102            DO K=1,Nr              DO i = 1,sNx
103              DO j = 1,sNy                tmp1k(i,j,bi,bj) = VVEL(i,j,2,bi,bj)
               DO i = 1,sNx  
                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*vVel(i,j,K,bi,bj)  
               ENDDO  
104              ENDDO              ENDDO
105               ENDDO
106            ENDDO            ENDDO
107          ENDDO           ENDDO
108         ENDDO           CALL DIAGNOSTICS_FILL(tmp1k,'VVEL_k2 ',0,1,0,1,1,myThid)
109         CALL DIAGNOSTICS_FILL(tmpMk,'VVELSQ  ',0,Nr,0,1,1,myThid)          ENDIF
110        ENDIF        
111            IF ( DIAGNOSTICS_IS_ON('UVELSQ  ',myThid) ) THEN
112        IF ( DIAGNOSTICS_IS_ON('WVELSQ  ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
113         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
114          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
115            DO K=1,Nr              DO j = 1,sNy
116                 DO i = 1,sNx+1
117                  tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*uVel(i,j,K,bi,bj)
118                 ENDDO
119                ENDDO
120               ENDDO
121              ENDDO
122             ENDDO
123             CALL DIAGNOSTICS_FILL(tmpMk,'UVELSQ  ',0,Nr,0,1,1,myThid)
124            ENDIF
125    
126            IF ( DIAGNOSTICS_IS_ON('VVELSQ  ',myThid) ) THEN
127             DO bj = myByLo(myThid), myByHi(myThid)
128              DO bi = myBxLo(myThid), myBxHi(myThid)
129               DO K=1,Nr
130                DO j = 1,sNy+1
131                 DO i = 1,sNx
132                  tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*vVel(i,j,K,bi,bj)
133                 ENDDO
134                ENDDO
135               ENDDO
136              ENDDO
137             ENDDO
138             CALL DIAGNOSTICS_FILL(tmpMk,'VVELSQ  ',0,Nr,0,1,1,myThid)
139            ENDIF
140    
141            IF ( DIAGNOSTICS_IS_ON('WVELSQ  ',myThid) ) THEN
142             DO bj = myByLo(myThid), myByHi(myThid)
143              DO bi = myBxLo(myThid), myBxHi(myThid)
144               DO K=1,Nr
145                DO j = 1,sNy
146                 DO i = 1,sNx
147                  tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*wVel(i,j,K,bi,bj)
148                 ENDDO
149                ENDDO
150               ENDDO
151              ENDDO
152             ENDDO
153             CALL DIAGNOSTICS_FILL(tmpMk,'WVELSQ  ',0,Nr,0,1,1,myThid)
154            ENDIF
155          
156    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
157    
158            IF ( DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN
159             DO bj = myByLo(myThid), myByHi(myThid)
160              DO bi = myBxLo(myThid), myBxHi(myThid)
161               DO K=1,Nr
162                DO j = 1,sNy
163                 DO i = 1,sNx
164                  tmpMk(i,j,K,bi,bj) = 0.25 _d 0
165         &           *(uVel(i,j,K,bi,bj)+uVel(i+1,j,K,bi,bj))
166         &           *(vVel(i,j,K,bi,bj)+vVel(i,j+1,K,bi,bj))
167                 ENDDO
168                ENDDO
169               ENDDO
170              ENDDO
171             ENDDO
172             CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_C',0,Nr,0,1,1,myThid)
173            ENDIF
174          
175            IF ( DIAGNOSTICS_IS_ON('UV_VEL_Z',myThid) ) THEN
176             DO bj = myByLo(myThid), myByHi(myThid)
177              DO bi = myBxLo(myThid), myBxHi(myThid)
178               DO K=1,Nr
179                DO j = 1,sNy+1
180                 DO i = 1,sNx+1
181                  tmpMk(i,j,K,bi,bj) = 0.25 _d 0
182         &           *(uVel(i,j-1,K,bi,bj)+uVel(i,j,K,bi,bj))
183         &           *(vVel(i-1,j,K,bi,bj)+vVel(i,j,K,bi,bj))
184                 ENDDO
185                ENDDO
186               ENDDO
187              ENDDO
188             ENDDO
189             CALL DIAGNOSTICS_FILL(tmpMk,'UV_VEL_Z',0,Nr,0,1,1,myThid)
190            ENDIF
191          
192            IF ( DIAGNOSTICS_IS_ON('WU_VEL  ',myThid) ) THEN
193             DO bj = myByLo(myThid), myByHi(myThid)
194              DO bi = myBxLo(myThid), myBxHi(myThid)
195               DO K=1,Nr
196                km1 = MAX(k-1,1)
197              DO j = 1,sNy              DO j = 1,sNy
198                DO i = 1,sNx               DO i = 1,sNx+1
199                  tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*wVel(i,j,K,bi,bj)                tmpMk(i,j,K,bi,bj) = 0.25 _d 0
200                ENDDO       &           *(uVel(i,j,km1,bi,bj)+uVel(i,j,K,bi,bj))
201         &           *(wVel(i-1,j,K,bi,bj)*rA(i-1,j,bi,bj)
202         &            +wVel( i ,j,K,bi,bj)*rA( i ,j,bi,bj)
203         &            )*recip_rAw(i,j,bi,bj)
204                 ENDDO
205                ENDDO
206               ENDDO
207              ENDDO
208             ENDDO
209             CALL DIAGNOSTICS_FILL(tmpMk,'WU_VEL  ',0,Nr,0,1,1,myThid)
210            ENDIF
211    
212            IF ( DIAGNOSTICS_IS_ON('WV_VEL  ',myThid) ) THEN
213             DO bj = myByLo(myThid), myByHi(myThid)
214              DO bi = myBxLo(myThid), myBxHi(myThid)
215               DO K=1,Nr
216                km1 = MAX(k-1,1)
217                DO j = 1,sNy+1
218                 DO i = 1,sNx
219                  tmpMk(i,j,K,bi,bj) = 0.25 _d 0
220         &           *(vVel(i,j,km1,bi,bj)+vVel(i,j,K,bi,bj))
221         &           *(wVel(i,j-1,K,bi,bj)*rA(i,j-1,bi,bj)
222         &            +wVel(i, j ,K,bi,bj)*rA(i, j ,bi,bj)
223         &            )*recip_rAs(i,j,bi,bj)
224                 ENDDO
225                ENDDO
226               ENDDO
227              ENDDO
228             ENDDO
229             CALL DIAGNOSTICS_FILL(tmpMk,'WV_VEL  ',0,Nr,0,1,1,myThid)
230            ENDIF
231    
232    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
233    
234            IF ( DIAGNOSTICS_IS_ON('UVELTH  ',myThid) ) THEN
235             DO bj = myByLo(myThid), myByHi(myThid)
236              DO bi = myBxLo(myThid), myBxHi(myThid)
237               DO K=1,Nr
238                DO j = 1,sNy
239                 DO i = 1,sNx+1
240                   tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
241         &                  *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
242                 ENDDO
243              ENDDO              ENDDO
244               ENDDO
245            ENDDO            ENDDO
246          ENDDO           ENDDO
247         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH  ',0,Nr,0,1,1,myThid)
248         CALL DIAGNOSTICS_FILL(tmpMk,'WVELSQ  ',0,Nr,0,1,1,myThid)          ENDIF
249        ENDIF        
250                  IF ( DIAGNOSTICS_IS_ON('VVELTH  ',myThid) ) THEN
251        IF ( DIAGNOSTICS_IS_ON('THETASQ ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
252         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
253          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
254            DO K=1,Nr              DO j = 1,sNy+1
255              DO j = 1,sNy               DO i = 1,sNx
256                DO i = 1,sNx                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
257                  tmpMk(i,j,K,bi,bj)       &                  *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
258       &               = theta(i,j,K,bi,bj)*theta(i,j,K,bi,bj)               ENDDO
               ENDDO  
259              ENDDO              ENDDO
260               ENDDO
261            ENDDO            ENDDO
262          ENDDO           ENDDO
263         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH  ',0,Nr,0,1,1,myThid)
264         CALL DIAGNOSTICS_FILL(tmpMk,'THETASQ ',0,Nr,0,1,1,myThid)          ENDIF
265        ENDIF        
266                  IF ( DIAGNOSTICS_IS_ON('WVELTH  ',myThid) ) THEN
267        IF ( DIAGNOSTICS_IS_ON('SALTSQ  ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
268         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
269          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
270            DO K=1,Nr              km1 = MAX(k-1,1)
271              DO j = 1,sNy              DO j = 1,sNy
272                DO i = 1,sNx               DO i = 1,sNx
273                  tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)*salt(i,j,K,bi,bj)                 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
274                ENDDO       &                  *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
275                 ENDDO
276              ENDDO              ENDDO
277               ENDDO
278            ENDDO            ENDDO
279          ENDDO           ENDDO
280         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH  ',0,Nr,0,1,1,myThid)
281         CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQ  ',0,Nr,0,1,1,myThid)          ENDIF
       ENDIF  
282                
283        IF ( DIAGNOSTICS_IS_ON('UVELVVEL',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
284         DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
285          DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
286            DO K=1,Nr             DO K=1,Nr
287              DO j = 1,sNy              DO j = 1,sNy
288                DO i = 1,sNx               DO i = 1,sNx+1
289                  tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*vVel(i,j,K,bi,bj)                 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
290                ENDDO       &                  *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
291                 ENDDO
292              ENDDO              ENDDO
293               ENDDO
294            ENDDO            ENDDO
295          ENDDO           ENDDO
296         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
297         CALL DIAGNOSTICS_FILL(tmpMk,'UVELVVEL',0,Nr,0,1,1,myThid)          ENDIF
298        ENDIF        
299                  IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
300        IF ( DIAGNOSTICS_IS_ON('UVELTH  ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
301         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
302          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
303            DO K=1,Nr              DO j = 1,sNy+1
304              DO j = 1,sNy               DO i = 1,sNx
305                DO i = 1,sNx                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
306                  tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0       &                  *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
307       &                  *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))               ENDDO
               ENDDO  
308              ENDDO              ENDDO
309               ENDDO
310            ENDDO            ENDDO
311          ENDDO           ENDDO
312         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'VVELSLT ',0,Nr,0,1,1,myThid)
313         CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH  ',0,Nr,0,1,1,myThid)          ENDIF
314        ENDIF  
315                  IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN
316        IF ( DIAGNOSTICS_IS_ON('VVELTH  ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
317         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
318          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
319            DO K=1,Nr              km1 = MAX(k-1,1)
320              DO j = 1,sNy              DO j = 1,sNy
321                DO i = 1,sNx               DO i = 1,sNx
322                  tmpMk(i,j,K,bi,bj) = vVel(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
323       &                  *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))       &                  *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
324                ENDDO               ENDDO
325              ENDDO              ENDDO
326               ENDDO
327            ENDDO            ENDDO
328          ENDDO           ENDDO
329         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
330         CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH  ',0,Nr,0,1,1,myThid)          ENDIF
331        ENDIF        
332                  IF ( DIAGNOSTICS_IS_ON('PRESSURE',myThid) ) THEN
333        IF ( DIAGNOSTICS_IS_ON('WVELTH  ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
334         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
335          DO bi = myBxLo(myThid), myBxHi(myThid)             do j = 1,sNy
336            DO K=1,Nr             do i = 1,sNx
337              km1 = MAX(k-1,1)              do K = 1,Nr
338                 tmpMk1(i,j,K,bi,bj) = 0.
339                enddo
340               enddo
341               enddo
342               do j = 1,sNy
343               do i = 1,sNx
344                if(ksurfC(i,j,bi,bj).ne.0.)
345         .          tmpMk1(i,j,ksurfC(i,j,bi,bj),bi,bj) =
346         .                            (Ro_surf(i,j,bi,bj) + etaH(i,j,bi,bj))
347               enddo
348               enddo
349               do j = 1,sNy
350               do i = 1,sNx
351                do K = ksurfC(i,j,bi,bj)+1,Nr+1
352                 tmpMk1(i,j,K,bi,bj) = tmpMk1(i,j,K-1,bi,bj) -
353         .                        drF(K-1)*hfacC(i,j,K-1,bi,bj)
354                enddo
355                do K = 1,Nr
356                 tmpMk(i,j,K,bi,bj) =
357         .           (tmpMk1(i,j,K,bi,bj) + tmpMk1(i,j,K+1,bi,bj)) /2.
358                enddo
359               enddo
360               enddo
361              ENDDO
362             ENDDO
363             CALL DIAGNOSTICS_FILL(tmpMk,'PRESSURE',0,Nr,0,1,1,myThid)
364            ENDIF
365    
366    C--   fill momentum state-var diagnostics: end
367          ENDIF
368    
369    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
370    
371          IF ( selectVars.EQ.1 .OR. selectVars.EQ.3 ) THEN
372    C--   fill tracer state-var diagnostics:
373    
374            CALL DIAGNOSTICS_FILL(theta,'THETA   ',0,Nr,0,1,1,myThid)
375            CALL DIAGNOSTICS_FILL(salt, 'SALT    ',0,Nr,0,1,1,myThid)
376          
377            IF ( DIAGNOSTICS_IS_ON('SST     ',myThid) ) THEN
378             DO bj = myByLo(myThid), myByHi(myThid)
379              DO bi = myBxLo(myThid), myBxHi(myThid)
380               DO j = 1,sNy
381                DO i = 1,sNx
382                  tmp1k(i,j,bi,bj) = THETA(i,j,1,bi,bj)
383                ENDDO
384               ENDDO
385              ENDDO
386             ENDDO
387             CALL DIAGNOSTICS_FILL(tmp1k,'SST     ',0,1,0,1,1,myThid)
388            ENDIF
389          
390            IF ( DIAGNOSTICS_IS_ON('SSS     ',myThid) ) THEN
391             DO bj = myByLo(myThid), myByHi(myThid)
392              DO bi = myBxLo(myThid), myBxHi(myThid)
393               DO j = 1,sNy
394                DO i = 1,sNx
395                  tmp1k(i,j,bi,bj) = SALT(i,j,1,bi,bj)
396                ENDDO
397               ENDDO
398              ENDDO
399             ENDDO
400             CALL DIAGNOSTICS_FILL(tmp1k,'SSS     ',0,1,0,1,1,myThid)
401            ENDIF
402    
403            IF ( DIAGNOSTICS_IS_ON('THETASQ ',myThid) ) THEN
404             DO bj = myByLo(myThid), myByHi(myThid)
405              DO bi = myBxLo(myThid), myBxHi(myThid)
406               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) = wVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,K,bi,bj)
410       &                  *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))       &               = theta(i,j,K,bi,bj)*theta(i,j,K,bi,bj)
411                ENDDO               ENDDO
412              ENDDO              ENDDO
413               ENDDO
414            ENDDO            ENDDO
415          ENDDO           ENDDO
416         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'THETASQ ',0,Nr,0,1,1,myThid)
417         CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH  ',0,Nr,0,1,1,myThid)          ENDIF
       ENDIF  
418                
419        IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('SALTSQ  ',myThid) ) THEN
420         DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
421          DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
422            DO K=1,Nr             DO K=1,Nr
423              DO j = 1,sNy              DO j = 1,sNy
424                DO i = 1,sNx               DO i = 1,sNx
425                  tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)*salt(i,j,K,bi,bj)
426       &                  *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))               ENDDO
               ENDDO  
427              ENDDO              ENDDO
428               ENDDO
429            ENDDO            ENDDO
430          ENDDO           ENDDO
431         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQ  ',0,Nr,0,1,1,myThid)
432         CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)          ENDIF
       ENDIF  
433                
434        IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('SALTanom',myThid) ) THEN
435         DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
436          DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
437            DO K=1,Nr             DO K=1,Nr
438              DO j = 1,sNy              DO j = 1,sNy
439                DO i = 1,sNx               DO i = 1,sNx
440                  tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35
441       &                  *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))               ENDDO
               ENDDO  
442              ENDDO              ENDDO
443               ENDDO
444            ENDDO            ENDDO
445          ENDDO           ENDDO
446         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'SALTanom',0,Nr,0,1,1,myThid)
447         CALL DIAGNOSTICS_FILL(tmpMk,'VVELSLT ',0,Nr,0,1,1,myThid)          ENDIF
448        ENDIF        
449            IF ( DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) THEN
450        IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
451         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
452          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
           DO K=1,Nr  
             km1 = MAX(k-1,1)  
453              DO j = 1,sNy              DO j = 1,sNy
454                DO i = 1,sNx               DO i = 1,sNx
455                  tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0                 tmpMk(i,j,K,bi,bj) =
456       &                  *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))       &               (salt(i,j,K,bi,bj)-35)*(salt(i,j,K,bi,bj)-35)
457                ENDDO               ENDDO
458              ENDDO              ENDDO
459               ENDDO
460            ENDDO            ENDDO
461          ENDDO           ENDDO
462         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQan',0,Nr,0,1,1,myThid)
463         CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)          ENDIF
       ENDIF  
464                
465        IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
466         DO bj = myByLo(myThid), myByHi(myThid)  
467          DO bi = myBxLo(myThid), myBxHi(myThid)          IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
468            DO K=1,Nr           DO bj = myByLo(myThid), myByHi(myThid)
469              DO bi = myBxLo(myThid), myBxHi(myThid)
470               DO K=1,Nr
471              DO j = 1,sNy              DO j = 1,sNy
472                DO i = 1,sNx                DO i = 1,sNx
473                  tmpMk(i,j,K,bi,bj)                  tmpMk(i,j,K,bi,bj)
474       &               = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)       &               = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
475                ENDDO                ENDDO
476              ENDDO              ENDDO
477               ENDDO
478            ENDDO            ENDDO
479          ENDDO           ENDDO
480         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
481         CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)          ENDIF
482        ENDIF  
483            IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
484        IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
485         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
486          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
           DO K=1,Nr  
487              DO j = 1,sNy              DO j = 1,sNy
488                DO i = 1,sNx                DO i = 1,sNx
489                  tmpMk(i,j,K,bi,bj)                  tmpMk(i,j,K,bi,bj)
490       &               = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)       &               = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
491                ENDDO                ENDDO
492              ENDDO              ENDDO
493               ENDDO
494            ENDDO            ENDDO
495          ENDDO           ENDDO
496         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
497         CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)          ENDIF
498        ENDIF  
499            CALL DIAGNOSTICS_FILL(wVel, 'WVELMASS',0,Nr,0,1,1,myThid)
500    
501        IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
502         DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
503          DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
504            DO K=1,Nr             DO K=1,Nr
505              DO j = 1,sNy              DO j = 1,sNy
506                DO i = 1,sNx               DO i = 1,sNx+1
507                  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
508       &                  *(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))
509       &                  * hFacW(i,j,K,bi,bj)       &                  * hFacW(i,j,K,bi,bj)
510                ENDDO               ENDDO
511              ENDDO              ENDDO
512               ENDDO
513            ENDDO            ENDDO
514          ENDDO           ENDDO
515         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
516         CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)          ENDIF
517        ENDIF  
518            IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
519        IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
520         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
521          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
522            DO K=1,Nr              DO j = 1,sNy+1
523              DO j = 1,sNy               DO i = 1,sNx
524                DO i = 1,sNx                 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  
525       &                  *(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))
526       &                  * hFacS(i,j,K,bi,bj)       &                  * hFacS(i,j,K,bi,bj)
527                ENDDO               ENDDO
528              ENDDO              ENDDO
529               ENDDO
530            ENDDO            ENDDO
531          ENDDO           ENDDO
532         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
533         CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)          ENDIF
534        ENDIF        
535                  IF ( DIAGNOSTICS_IS_ON('WTHMASS ',myThid) ) THEN
536        IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN           DO bj = myByLo(myThid), myByHi(myThid)
537         DO bj = myByLo(myThid), myByHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
538          DO bi = myBxLo(myThid), myBxHi(myThid)             DO K=1,Nr
539            DO K=1,Nr              km1 = MAX(k-1,1)
540              DO j = 1,sNy              DO j = 1,sNy
541                DO i = 1,sNx               DO i = 1,sNx
542                  tmpMk(i,j,K,bi,bj) = uVel(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
543       &                  *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))       &                  *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
544       &                  * hFacW(i,j,K,bi,bj)               ENDDO
               ENDDO  
545              ENDDO              ENDDO
546               ENDDO
547            ENDDO            ENDDO
548          ENDDO           ENDDO
549         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'WTHMASS ',0,Nr,0,1,1,myThid)
550         CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)          ENDIF
       ENDIF  
551    
552        IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
553         DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
554          DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
555            DO K=1,Nr             DO K=1,Nr
556              DO j = 1,sNy              DO j = 1,sNy
557                DO i = 1,sNx               DO i = 1,sNx+1
558                  tmpMk(i,j,K,bi,bj) = vVel(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
559         &                  *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
560         &                  * hFacW(i,j,K,bi,bj)
561                 ENDDO
562                ENDDO
563               ENDDO
564              ENDDO
565             ENDDO
566             CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
567            ENDIF
568    
569            IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
570             DO bj = myByLo(myThid), myByHi(myThid)
571              DO bi = myBxLo(myThid), myBxHi(myThid)
572               DO K=1,Nr
573                DO j = 1,sNy+1
574                 DO i = 1,sNx
575                   tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
576       &                  *(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))
577       &                  * hFacS(i,j,K,bi,bj)       &                  * hFacS(i,j,K,bi,bj)
578                ENDDO               ENDDO
579              ENDDO              ENDDO
580               ENDDO
581            ENDDO            ENDDO
582          ENDDO           ENDDO
583         ENDDO           CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
584         CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)          ENDIF
585        ENDIF        
586                  IF ( DIAGNOSTICS_IS_ON('WSLTMASS',myThid) ) THEN
587             DO bj = myByLo(myThid), myByHi(myThid)
588              DO bi = myBxLo(myThid), myBxHi(myThid)
589               DO K=1,Nr
590                km1 = MAX(k-1,1)
591                DO j = 1,sNy
592                 DO i = 1,sNx
593                   tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
594         &                  *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
595                 ENDDO
596                ENDDO
597               ENDDO
598              ENDDO
599             ENDDO
600             CALL DIAGNOSTICS_FILL(tmpMk,'WSLTMASS',0,Nr,0,1,1,myThid)
601            ENDIF
602                
603    C--   fill tracer state-var diagnostics: end
604          ENDIF
605    
606  #endif /* ALLOW_DIAGNOSTICS */  #endif /* ALLOW_DIAGNOSTICS */
607                
608        RETURN        RETURN

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.22