/[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.40 by jmc, Tue Jul 19 21:41:27 2011 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 25  C     == Global variables === Line 25  C     == Global variables ===
25  #include "SURFACE.h"  #include "SURFACE.h"
26  #include "DYNVARS.h"  #include "DYNVARS.h"
27  #include "NH_VARS.h"  #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 33  C            = 1 :: fill-in diagnostics Line 36  C            = 1 :: fill-in diagnostics
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  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 myIter
43        INTEGER myThid        INTEGER myThid
44    
45  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
# Line 50  C     == Local variables == Line 55  C     == Local variables ==
55  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
56        _RL dummy1, dummy2, dummy3, dummy4, kappa, getcon        _RL dummy1, dummy2, dummy3, dummy4, kappa, getcon
57  #endif  #endif
58        INTEGER i,j,K,bi,bj  #ifdef ALLOW_ADAMSBASHFORTH_3
59          INTEGER m1
60    #endif
61          INTEGER i,j,k,bi,bj
62        INTEGER km1        INTEGER km1
63    
64        tmpFac = 1. _d 0        tmpFac = 1. _d 0
# Line 104  C---+----1----+----2----+----3----+----4 Line 112  C---+----1----+----2----+----3----+----4
112       &       DIAGNOSTICS_IS_ON('UV_VEL_C',myThid) ) THEN       &       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                uBarC = 0.5 _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                vBarC = 0.5 _d 0                vBarC = 0.5 _d 0
121       &           *(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))
122                tmpU(i,j) = angleCosC(i,j,bi,bj)*uBarC                tmpU(i,j) = angleCosC(i,j,bi,bj)*uBarC
123       &                   -angleSinC(i,j,bi,bj)*vBarC       &                   -angleSinC(i,j,bi,bj)*vBarC
124                tmpV(i,j) = angleSinC(i,j,bi,bj)*uBarC                tmpV(i,j) = angleSinC(i,j,bi,bj)*uBarC
125       &                   +angleCosC(i,j,bi,bj)*vBarC       &                   +angleCosC(i,j,bi,bj)*vBarC
126                tmpMk(i,j,K,bi,bj) = tmpU(i,j)*tmpV(i,j)                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)              CALL DIAGNOSTICS_FILL(tmpU,'UE_VEL_C',k,1,2,bi,bj,myThid)
# Line 129  C---+----1----+----2----+----3----+----4 Line 137  C---+----1----+----2----+----3----+----4
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 146  C---+----1----+----2----+----3----+----4 Line 154  C---+----1----+----2----+----3----+----4
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,j,km1,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 166  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,j,km1,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 188  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 204  C---+----1----+----2----+----3----+----4 Line 212  C---+----1----+----2----+----3----+----4
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 220  C---+----1----+----2----+----3----+----4 Line 228  C---+----1----+----2----+----3----+----4
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 237  C---+----1----+----2----+----3----+----4 Line 245  C---+----1----+----2----+----3----+----4
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 253  C---+----1----+----2----+----3----+----4 Line 261  C---+----1----+----2----+----3----+----4
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 269  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 286  C---+----1----+----2----+----3----+----4 Line 294  C---+----1----+----2----+----3----+----4
294          IF ( DIAGNOSTICS_IS_ON('UVELPHI ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('UVELPHI ',myThid) ) THEN
295           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
296            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
297             DO K=1,Nr             DO k=1,Nr
298              DO j = 1,sNy              DO j = 1,sNy
299               DO i = 1,sNx+1               DO i = 1,sNx+1
300                 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*hFacW(i,j,k,bi,bj)                 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))       &       *0.5 _d 0*(totPhiHyd(i,j,k,bi,bj)+totPhiHyd(i-1,j,k,bi,bj))
302               ENDDO               ENDDO
303              ENDDO              ENDDO
304             ENDDO             ENDDO
# Line 302  C---+----1----+----2----+----3----+----4 Line 310  C---+----1----+----2----+----3----+----4
310          IF ( DIAGNOSTICS_IS_ON('VVELPHI ',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('VVELPHI ',myThid) ) THEN
311           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
312            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
313             DO K=1,Nr             DO k=1,Nr
314              DO j = 1,sNy+1              DO j = 1,sNy+1
315               DO i = 1,sNx               DO i = 1,sNx
316                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*hFacS(i,j,k,bi,bj)                 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))       &       *0.5 _d 0*(totPhiHyd(i,j,k,bi,bj)+totPhiHyd(i,j-1,k,bi,bj))
318               ENDDO               ENDDO
319              ENDDO              ENDDO
320             ENDDO             ENDDO
# Line 347  C     (next fill for these diagnostics w Line 355  C     (next fill for these diagnostics w
355          IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
356           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
357            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
358             DO K=1,Nr             DO k=1,Nr
359              DO j = 1,sNy              DO j = 1,sNy
360               DO i = 1,sNx+1               DO i = 1,sNx+1
361                 tmpMk(i,j,K,bi,bj) = -uVel(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = -uVel(i,j,k,bi,bj)
362       .                    *86400./dTtracerLev(1)       .                    *86400./dTtracerLev(1)
363               ENDDO               ENDDO
364              ENDDO              ENDDO
# Line 363  C     (next fill for these diagnostics w Line 371  C     (next fill for these diagnostics w
371          IF ( DIAGNOSTICS_IS_ON('TOTVTEND',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              DO j = 1,sNy+1
376               DO i = 1,sNx               DO i = 1,sNx
377                 tmpMk(i,j,K,bi,bj) = -vVel(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = -vVel(i,j,k,bi,bj)
378       .                    *86400./dTtracerLev(1)       .                    *86400./dTtracerLev(1)
379               ENDDO               ENDDO
380              ENDDO              ENDDO
# Line 379  C     (next fill for these diagnostics w Line 387  C     (next fill for these diagnostics w
387          IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
388           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
389            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
390             DO K=1,Nr             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) = -theta(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = -theta(i,j,k,bi,bj)
394       .                    *86400./dTtracerLev(1)       .                    *86400./dTtracerLev(1)
395               ENDDO               ENDDO
396              ENDDO              ENDDO
# Line 395  C     (next fill for these diagnostics w Line 403  C     (next fill for these diagnostics w
403          IF ( DIAGNOSTICS_IS_ON('TOTSTEND',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)                 tmpMk(i,j,k,bi,bj) = -salt(i,j,k,bi,bj)
410       .                    *86400./dTtracerLev(1)       .                    *86400./dTtracerLev(1)
411               ENDDO               ENDDO
412              ENDDO              ENDDO
# Line 420  C--   fill tracer state-var diagnostics: Line 428  C--   fill tracer state-var diagnostics:
428          CALL DIAGNOSTICS_FILL(salt, 'SALT    ',0,Nr,0,1,1,myThid)          CALL DIAGNOSTICS_FILL(salt, 'SALT    ',0,Nr,0,1,1,myThid)
429    
430  #ifdef ALLOW_FIZHI  #ifdef ALLOW_FIZHI
431        IF((useFIZHI).and.(DIAGNOSTICS_IS_ON('RELHUM  ',myThid)))THEN        IF ( useFIZHI .AND. DIAGNOSTICS_IS_ON('RELHUM  ',myThid) ) THEN
432         kappa = getcon('KAPPA')         kappa = getcon('KAPPA')
433         do bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
434         do bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
435          do j = 1,sNy           DO j = 1,sNy
436           do i = 1,sNx            DO i = 1,sNx
437            do K = 1,Nr             DO k = 1,Nr
438             dummy1 = theta(i,j,k,bi,bj) * ((rc(k)/100.)/1000.)**kappa              dummy1 = theta(i,j,k,bi,bj) * ((rC(k)/100.)/1000.)**kappa
439             dummy2 = rc(k) / 100.              dummy2 = rC(k) / 100.
440             call qsat(dummy1,dummy2,dummy3,dummy4,.false.)              CALL QSAT(dummy1,dummy2,dummy3,dummy4,.false.)
441             tmpMk(i,j,K,bi,bj) = hfacC(i,j,K,bi,bj) *              tmpMk(i,j,k,bi,bj) = hFacC(i,j,k,bi,bj)
442       .                    salt(i,j,k,bi,bj) * 100. / dummy3       &                          *salt(i,j,k,bi,bj)*100. / dummy3
443            enddo             ENDDO
444           enddo            ENDDO
445          enddo           ENDDO
446         enddo          ENDDO
447         enddo         ENDDO
448         CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM  ',0,Nr,0,1,1,myThid)         CALL DIAGNOSTICS_FILL(tmpMk, 'RELHUM  ',0,Nr,0,1,1,myThid)
449        ENDIF        ENDIF
450  #endif /* ALLOW_FIZHI */  #endif /* ALLOW_FIZHI */
# Line 446  C--   fill tracer state-var diagnostics: Line 454  C--   fill tracer state-var diagnostics:
454          CALL DIAGNOSTICS_SCALE_FILL(salt,tmpFac,2,          CALL DIAGNOSTICS_SCALE_FILL(salt,tmpFac,2,
455       &                              'SALTSQ  ',0,Nr,0,1,1,myThid)       &                              '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  c       IF ( DIAGNOSTICS_IS_ON('SST     ',myThid) ) THEN
481  c        DO bj = myByLo(myThid), myByHi(myThid)  c        DO bj = myByLo(myThid), myByHi(myThid)
482  c         DO bi = myBxLo(myThid), myBxHi(myThid)  c         DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 477  c       ENDIF Line 508  c       ENDIF
508       &     .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN       &     .OR.DIAGNOSTICS_IS_ON('SALTSQan',myThid) ) ) THEN
509           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
510            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
511             DO K=1,Nr             DO k=1,Nr
512              DO j = 1,sNy              DO j = 1,sNy
513               DO i = 1,sNx               DO i = 1,sNx
514                 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)-35. _d 0                 tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)-35. _d 0
515               ENDDO               ENDDO
516              ENDDO              ENDDO
517             ENDDO             ENDDO
# Line 496  C---+----1----+----2----+----3----+----4 Line 527  C---+----1----+----2----+----3----+----4
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+1                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 512  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+1              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 530  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 547  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 564  C---+----1----+----2----+----3----+----4 Line 595  C---+----1----+----2----+----3----+----4
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 581  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 598  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 615  C---+----1----+----2----+----3----+----4 Line 646  C---+----1----+----2----+----3----+----4
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 640  C     (next fill for these diagnostics W Line 671  C     (next fill for these diagnostics W
671          IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTUTEND',myThid) ) THEN
672           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
673            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
674             DO K=1,Nr             DO k=1,Nr
675              DO j = 1,sNy              DO j = 1,sNy
676               DO i = 1,sNx+1               DO i = 1,sNx+1
677                 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)
678       .                    *86400./dTtracerLev(1)       .                    *86400./dTtracerLev(1)
679               ENDDO               ENDDO
680              ENDDO              ENDDO
# Line 656  C     (next fill for these diagnostics W Line 687  C     (next fill for these diagnostics W
687          IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTVTEND',myThid) ) THEN
688           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
689            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
690             DO K=1,Nr             DO k=1,Nr
691              DO j = 1,sNy+1              DO j = 1,sNy+1
692               DO i = 1,sNx               DO i = 1,sNx
693                 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)
694       .                    *86400./dTtracerLev(1)       .                    *86400./dTtracerLev(1)
695               ENDDO               ENDDO
696              ENDDO              ENDDO
# Line 672  C     (next fill for these diagnostics W Line 703  C     (next fill for these diagnostics W
703          IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTTTEND',myThid) ) THEN
704           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
705            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
706             DO K=1,Nr             DO k=1,Nr
707              DO j = 1,sNy              DO j = 1,sNy
708               DO i = 1,sNx               DO i = 1,sNx
709                 tmpMk(i,j,K,bi,bj) = theta(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = theta(i,j,k,bi,bj)
710       .                    *86400./dTtracerLev(1)       .                    *86400./dTtracerLev(1)
711               ENDDO               ENDDO
712              ENDDO              ENDDO
# Line 688  C     (next fill for these diagnostics W Line 719  C     (next fill for these diagnostics W
719          IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN          IF ( DIAGNOSTICS_IS_ON('TOTSTEND',myThid) ) THEN
720           DO bj = myByLo(myThid), myByHi(myThid)           DO bj = myByLo(myThid), myByHi(myThid)
721            DO bi = myBxLo(myThid), myBxHi(myThid)            DO bi = myBxLo(myThid), myBxHi(myThid)
722             DO K=1,Nr             DO k=1,Nr
723              DO j = 1,sNy              DO j = 1,sNy
724               DO i = 1,sNx               DO i = 1,sNx
725                 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)                 tmpMk(i,j,k,bi,bj) = salt(i,j,k,bi,bj)
726       .                    *86400./dTtracerLev(1)       .                    *86400./dTtracerLev(1)
727               ENDDO               ENDDO
728              ENDDO              ENDDO

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

  ViewVC Help
Powered by ViewVC 1.1.22