/[MITgcm]/MITgcm/model/src/thermodynamics.F
ViewVC logotype

Diff of /MITgcm/model/src/thermodynamics.F

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

revision 1.34 by heimbach, Fri Jan 10 19:06:05 2003 UTC revision 1.58 by dimitri, Thu Nov 13 06:35:14 2003 UTC
# Line 1  Line 1 
1  C $Header$  C $Header$
2  C $Name$  C $Name$
3    
4    #include "PACKAGES_CONFIG.h"
5  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
6    
7  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
8  # ifdef ALLOW_GMREDI  # ifdef ALLOW_GMREDI
9  #  include "GMREDI_OPTIONS.h"  #  include "GMREDI_OPTIONS.h"
# Line 9  C $Name$ Line 11  C $Name$
11  # ifdef ALLOW_KPP  # ifdef ALLOW_KPP
12  #  include "KPP_OPTIONS.h"  #  include "KPP_OPTIONS.h"
13  # endif  # endif
14  cswdice --- add ----  #ifdef ALLOW_PTRACERS
15  #ifdef ALLOW_THERM_SEAICE  # include "PTRACERS_OPTIONS.h"
 #include "ICE.h"  
16  #endif  #endif
 cswdice ------  
17  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
18    
19  CBOP  CBOP
# Line 84  C     == Global variables === Line 84  C     == Global variables ===
84  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
85  #include "TR1.h"  #include "TR1.h"
86  #endif  #endif
87    #ifdef ALLOW_PTRACERS
88    #include "PTRACERS.h"
89    #endif
90    #ifdef ALLOW_TIMEAVE
91    #include "TIMEAVE_STATV.h"
92    #endif
93    
94  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
95  # include "tamc.h"  # include "tamc.h"
96  # include "tamc_keys.h"  # include "tamc_keys.h"
# Line 96  C     == Global variables === Line 103  C     == Global variables ===
103  #  include "GMREDI.h"  #  include "GMREDI.h"
104  # endif  # endif
105  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
 #ifdef ALLOW_TIMEAVE  
 #include "TIMEAVE_STATV.h"  
 #endif  
106    
107  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
108  C     == Routine arguments ==  C     == Routine arguments ==
# Line 123  C                                      i Line 127  C                                      i
127  C                                      so we need an fVer for each  C                                      so we need an fVer for each
128  C                                      variable.  C                                      variable.
129  C     rhoK, rhoKM1   - Density at current level, and level above  C     rhoK, rhoKM1   - Density at current level, and level above
 C     phiHyd         - Hydrostatic part of the potential phiHydi.  
 C                      In z coords phiHydiHyd is the hydrostatic  
 C                      Potential (=pressure/rho0) anomaly  
 C                      In p coords phiHydiHyd is the geopotential  
 C                      surface height anomaly.  
130  C     phiSurfX, - gradient of Surface potentiel (Pressure/rho, ocean)  C     phiSurfX, - gradient of Surface potentiel (Pressure/rho, ocean)
131  C     phiSurfY             or geopotentiel (atmos) in X and Y direction  C     phiSurfY             or geopotentiel (atmos) in X and Y direction
132  C     KappaRT,       - Total diffusion in vertical for T and S.  C     KappaRT,       - Total diffusion in vertical for T and S.
133  C     KappaRS          (background + spatially varying, isopycnal term).  C     KappaRS          (background + spatially varying, isopycnal term).
134    C     useVariableK   = T when vertical diffusion is not constant
135  C     iMin, iMax     - Ranges and sub-block indices on which calculations  C     iMin, iMax     - Ranges and sub-block indices on which calculations
136  C     jMin, jMax       are applied.  C     jMin, jMax       are applied.
137  C     bi, bj  C     bi, bj
# Line 146  C                      index into fVerTe Line 146  C                      index into fVerTe
146        _RS maskUp  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RS maskUp  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
147        _RL fVerT   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)        _RL fVerT   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
148        _RL fVerS   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)        _RL fVerS   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
149    #ifdef ALLOW_PASSIVE_TRACER
150        _RL fVerTr1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)        _RL fVerTr1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
151        _RL phiHyd  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)  #endif
152    #ifdef ALLOW_PTRACERS
153          _RL fVerP   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2,PTRACERS_num)
154    #endif
155        _RL rhokm1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rhokm1  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
156        _RL rhok    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rhok    (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
157        _RL phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 159  C                      index into fVerTe Line 163  C                      index into fVerTe
163        _RL sigmaR  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL sigmaR  (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
164  C     This is currently used by IVDC and Diagnostics  C     This is currently used by IVDC and Diagnostics
165        _RL ConvectCount (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL ConvectCount (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
166          LOGICAL useVariableK
167        INTEGER iMin, iMax        INTEGER iMin, iMax
168        INTEGER jMin, jMax        INTEGER jMin, jMax
169        INTEGER bi, bj        INTEGER bi, bj
170        INTEGER i, j        INTEGER i, j
171        INTEGER k, km1, kup, kDown        INTEGER k, km1, kup, kDown
172          INTEGER iTracer, ip
173    
174  CEOP  CEOP
175    
176    #ifdef ALLOW_DEBUG
177             IF ( debugLevel .GE. debLevB )
178         &    CALL DEBUG_ENTER('FORWARD_STEP',myThid)
179    #endif
180    
181  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
182  C--   dummy statement to end declaration part  C--   dummy statement to end declaration part
# Line 173  C--   dummy statement to end declaration Line 184  C--   dummy statement to end declaration
184        itdkey = 1        itdkey = 1
185  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
186    
 C--   Set up work arrays with valid (i.e. not NaN) values  
 C     These inital values do not alter the numerical results. They  
 C     just ensure that all memory references are to valid floating  
 C     point numbers. This prevents spurious hardware signals due to  
 C     uninitialised but inert locations.  
       DO j=1-OLy,sNy+OLy  
        DO i=1-OLx,sNx+OLx  
         xA(i,j)      = 0. _d 0  
         yA(i,j)      = 0. _d 0  
         uTrans(i,j)  = 0. _d 0  
         vTrans(i,j)  = 0. _d 0  
         rhok   (i,j) = 0. _d 0  
         phiSurfX(i,j) = 0. _d 0  
         phiSurfY(i,j) = 0. _d 0  
        ENDDO  
       ENDDO  
   
   
187  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
188  C--   HPF directive to help TAMC  C--   HPF directive to help TAMC
189  CHPF$ INDEPENDENT  CHPF$ INDEPENDENT
# Line 201  CHPF$ INDEPENDENT Line 194  CHPF$ INDEPENDENT
194  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
195  C--    HPF directive to help TAMC  C--    HPF directive to help TAMC
196  CHPF$  INDEPENDENT, NEW (rTrans,fVerT,fVerS  CHPF$  INDEPENDENT, NEW (rTrans,fVerT,fVerS
197  CHPF$&                  ,phiHyd,utrans,vtrans,xA,yA  CHPF$&                  ,utrans,vtrans,xA,yA
198  CHPF$&                  ,KappaRT,KappaRS  CHPF$&                  ,KappaRT,KappaRS
199  CHPF$&                  )  CHPF$&                  )
200  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
# Line 221  CHPF$&                  ) Line 214  CHPF$&                  )
214       &                      + act4*max1*max2*max3       &                      + act4*max1*max2*max3
215  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
216    
217  C--     Set up work arrays that need valid initial values  C--   Set up work arrays with valid (i.e. not NaN) values
218    C     These inital values do not alter the numerical results. They
219    C     just ensure that all memory references are to valid floating
220    C     point numbers. This prevents spurious hardware signals due to
221    C     uninitialised but inert locations.
222    
223          DO j=1-OLy,sNy+OLy          DO j=1-OLy,sNy+OLy
224           DO i=1-OLx,sNx+OLx           DO i=1-OLx,sNx+OLx
225              xA(i,j)        = 0. _d 0
226              yA(i,j)        = 0. _d 0
227              uTrans(i,j)    = 0. _d 0
228              vTrans(i,j)    = 0. _d 0
229              rhok   (i,j)   = 0. _d 0
230              rhoKM1 (i,j)   = 0. _d 0
231              phiSurfX(i,j)  = 0. _d 0
232              phiSurfY(i,j)  = 0. _d 0
233            rTrans (i,j)   = 0. _d 0            rTrans (i,j)   = 0. _d 0
234            fVerT  (i,j,1) = 0. _d 0            fVerT  (i,j,1) = 0. _d 0
235            fVerT  (i,j,2) = 0. _d 0            fVerT  (i,j,2) = 0. _d 0
236            fVerS  (i,j,1) = 0. _d 0            fVerS  (i,j,1) = 0. _d 0
237            fVerS  (i,j,2) = 0. _d 0            fVerS  (i,j,2) = 0. _d 0
238    #ifdef ALLOW_PASSIVE_TRACER
239            fVerTr1(i,j,1) = 0. _d 0            fVerTr1(i,j,1) = 0. _d 0
240            fVerTr1(i,j,2) = 0. _d 0            fVerTr1(i,j,2) = 0. _d 0
241            rhoKM1 (i,j)   = 0. _d 0  #endif
242    #ifdef ALLOW_PTRACERS
243              DO ip=1,PTRACERS_num
244               fVerP  (i,j,1,ip) = 0. _d 0
245               fVerP  (i,j,2,ip) = 0. _d 0
246              ENDDO
247    #endif
248           ENDDO           ENDDO
249          ENDDO          ENDDO
250    
# Line 239  C--     Set up work arrays that need val Line 252  C--     Set up work arrays that need val
252           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
253            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
254  C This is currently also used by IVDC and Diagnostics  C This is currently also used by IVDC and Diagnostics
            phiHyd(i,j,k) = 0. _d 0  
255             sigmaX(i,j,k) = 0. _d 0             sigmaX(i,j,k) = 0. _d 0
256             sigmaY(i,j,k) = 0. _d 0             sigmaY(i,j,k) = 0. _d 0
257             sigmaR(i,j,k) = 0. _d 0             sigmaR(i,j,k) = 0. _d 0
258             ConvectCount(i,j,k) = 0.             ConvectCount(i,j,k) = 0.
259             KappaRT(i,j,k)    = 0. _d 0             KappaRT(i,j,k)    = 0. _d 0
260             KappaRS(i,j,k)    = 0. _d 0             KappaRS(i,j,k)    = 0. _d 0
261  #ifdef ALLOW_AUTODIFF_TAMC  C- tracer tendency needs to be set to zero (moved here from gad_calc_rhs):
 cph all the following init. are necessary for TAF  
 cph although some of these are re-initialised later.  
262             gT(i,j,k,bi,bj)   = 0. _d 0             gT(i,j,k,bi,bj)   = 0. _d 0
263             gS(i,j,k,bi,bj)   = 0. _d 0             gS(i,j,k,bi,bj)   = 0. _d 0
264  # ifdef ALLOW_PASSIVE_TRACER  # ifdef ALLOW_PASSIVE_TRACER
265    ceh3 needs an IF ( use PASSIVE_TRACER) THEN
266             gTr1(i,j,k,bi,bj) = 0. _d 0             gTr1(i,j,k,bi,bj) = 0. _d 0
267  # endif  # endif
268    # ifdef ALLOW_PTRACERS
269    ceh3 this should have an   IF ( usePTRACERS ) THEN
270               DO iTracer=1,PTRACERS_numInUse
271                gPTr(i,j,k,bi,bj,itracer) = 0. _d 0
272               ENDDO
273    # endif
274    #ifdef ALLOW_AUTODIFF_TAMC
275    cph all the following init. are necessary for TAF
276    cph although some of these are re-initialised later.
277  # ifdef ALLOW_GMREDI  # ifdef ALLOW_GMREDI
278             Kwx(i,j,k,bi,bj)  = 0. _d 0             Kwx(i,j,k,bi,bj)  = 0. _d 0
279             Kwy(i,j,k,bi,bj)  = 0. _d 0             Kwy(i,j,k,bi,bj)  = 0. _d 0
# Line 270  cph although some of these are re-initia Line 290  cph although some of these are re-initia
290             GM_PsiX(i,j,k,bi,bj)  = 0. _d 0             GM_PsiX(i,j,k,bi,bj)  = 0. _d 0
291             GM_PsiY(i,j,k,bi,bj)  = 0. _d 0             GM_PsiY(i,j,k,bi,bj)  = 0. _d 0
292  #  endif  #  endif
293    #  ifdef GM_VISBECK_VARIABLE_K
294               VisbeckK(i,j,bi,bj)   = 0. _d 0
295    #  endif
296  # endif /* ALLOW_GMREDI */  # endif /* ALLOW_GMREDI */
297  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
298            ENDDO            ENDDO
# Line 281  cph although some of these are re-initia Line 304  cph although some of these are re-initia
304          jMin = 1-OLy          jMin = 1-OLy
305          jMax = sNy+OLy          jMax = sNy+OLy
306    
   
307  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
308  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
309  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
310    CADJ STORE totphihyd
311    CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
312  #ifdef ALLOW_KPP  #ifdef ALLOW_KPP
313  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
314  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
315  #endif  #endif
316  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
317    
318    #ifdef ALLOW_DEBUG
319            IF ( debugLevel .GE. debLevB )
320         &    CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)
321    #endif
322    
323  C--     Start of diagnostic loop  C--     Start of diagnostic loop
324          DO k=Nr,1,-1          DO k=Nr,1,-1
325    
# Line 325  C--       Calculate gradients of potenti Line 354  C--       Calculate gradients of potenti
354  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
355  c         IF ( k.GT.1 .AND. (useGMRedi.OR.ivdc_kappa.NE.0.) ) THEN  c         IF ( k.GT.1 .AND. (useGMRedi.OR.ivdc_kappa.NE.0.) ) THEN
356            IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.) ) THEN            IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.) ) THEN
357    #ifdef ALLOW_DEBUG
358                IF ( debugLevel .GE. debLevB )
359         &       CALL DEBUG_CALL('FIND_RHO',myThid)
360    #endif
361  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
362  CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
363  CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
 CADJ STORE pressure(:,:,k,bi,bj) =  
 CADJ &     comlev1_bibj_k, key=kkey, byte=isbyte  
364  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
365              CALL FIND_RHO(              CALL FIND_RHO(
366       I        bi, bj, iMin, iMax, jMin, jMax, k, k,       I        bi, bj, iMin, iMax, jMin, jMax, k, k,
# Line 341  CADJ &     comlev1_bibj_k, key=kkey, byt Line 372  CADJ &     comlev1_bibj_k, key=kkey, byt
372  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
373  CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
374  CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
 CADJ STORE pressure(:,:,k-1,bi,bj) =  
 CADJ &     comlev1_bibj_k, key=kkey, byte=isbyte  
375  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
376               CALL FIND_RHO(               CALL FIND_RHO(
377       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k,       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k,
# Line 350  CADJ &     comlev1_bibj_k, key=kkey, byt Line 379  CADJ &     comlev1_bibj_k, key=kkey, byt
379       O        rhoKm1,       O        rhoKm1,
380       I        myThid )       I        myThid )
381              ENDIF              ENDIF
382    #ifdef ALLOW_DEBUG
383                IF ( debugLevel .GE. debLevB )
384         &       CALL DEBUG_CALL('GRAD_SIGMA',myThid)
385    #endif
386              CALL GRAD_SIGMA(              CALL GRAD_SIGMA(
387       I             bi, bj, iMin, iMax, jMin, jMax, k,       I             bi, bj, iMin, iMax, jMin, jMax, k,
388       I             rhoK, rhoKm1, rhoK,       I             rhoK, rhoKm1, rhoK,
# Line 364  CADJ STORE rhokm1 (:,:) = comlev1_bibj_k Line 397  CADJ STORE rhokm1 (:,:) = comlev1_bibj_k
397  C--       Implicit Vertical Diffusion for Convection  C--       Implicit Vertical Diffusion for Convection
398  c ==> should use sigmaR !!!  c ==> should use sigmaR !!!
399            IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN            IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN
400    #ifdef ALLOW_DEBUG
401                IF ( debugLevel .GE. debLevB )
402         &       CALL DEBUG_CALL('CALC_IVDC',myThid)
403    #endif
404              CALL CALC_IVDC(              CALL CALC_IVDC(
405       I        bi, bj, iMin, iMax, jMin, jMax, k,       I        bi, bj, iMin, iMax, jMin, jMax, k,
406       I        rhoKm1, rhoK,       I        rhoKm1, rhoK,
# Line 379  C--     end of diagnostic k loop (Nr:1) Line 416  C--     end of diagnostic k loop (Nr:1)
416  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
417  cph avoids recomputation of integrate_for_w  cph avoids recomputation of integrate_for_w
418  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
 CADJ STORE pressure (:,:,:,bi,bj) =  
 CADJ &     comlev1_bibj, key=itdkey, byte=isbyte  
419  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
420    
421  #ifdef  ALLOW_OBCS  #ifdef  ALLOW_OBCS
422  C--     Calculate future values on open boundaries  C--     Calculate future values on open boundaries
423          IF (useOBCS) THEN          IF (useOBCS) THEN
424    #ifdef ALLOW_DEBUG
425              IF ( debugLevel .GE. debLevB )
426         &     CALL DEBUG_CALL('OBCS_CALC',myThid)
427    #endif
428            CALL OBCS_CALC( bi, bj, myTime+deltaT, myIter+1,            CALL OBCS_CALC( bi, bj, myTime+deltaT, myIter+1,
429       I            uVel, vVel, wVel, theta, salt,       I            uVel, vVel, wVel, theta, salt,
430       I            myThid )       I            myThid )
# Line 393  C--     Calculate future values on open Line 432  C--     Calculate future values on open
432  #endif  /* ALLOW_OBCS */  #endif  /* ALLOW_OBCS */
433    
434    
 c********************************************  
 cswdice --- add ---  
435  #ifdef ALLOW_THERM_SEAICE  #ifdef ALLOW_THERM_SEAICE
436           IF (useThermSeaIce) THEN
437    #ifdef ALLOW_DEBUG
438            IF ( debugLevel .GE. debLevB )
439         &    CALL DEBUG_CALL('ICE_FORCING',myThid)
440    #endif
441  C--     Determines forcing terms based on external fields  C--     Determines forcing terms based on external fields
442  c--     including effects from ice  C       including effects from ice
443          CALL ICE_FORCING(          CALL ICE_FORCING(
444       I             bi, bj, iMin, iMax, jMin, jMax,       I             bi, bj, iMin, iMax, jMin, jMax,
445       I             myThid )       I             myThid )
446  #else         ELSE
447    #endif /* ALLOW_THERM_SEAICE */
 cswdice --- end add ---  
448    
449  C--     Determines forcing terms based on external fields  C--     Determines forcing terms based on external fields
450  C       relaxation terms, etc.  C       relaxation terms, etc.
451    #ifdef ALLOW_DEBUG
452            IF ( debugLevel .GE. debLevB )
453         &    CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
454    #endif
455          CALL EXTERNAL_FORCING_SURF(          CALL EXTERNAL_FORCING_SURF(
456       I             bi, bj, iMin, iMax, jMin, jMax,       I             bi, bj, iMin, iMax, jMin, jMax,
457       I             myThid )       I             myTime, myIter, myThid )
 cswdice --- add ----  
 #endif  
 cswdice --- end add ---  
 c******************************************  
   
   
458    
459    #ifdef ALLOW_THERM_SEAICE
460    C--    end of if/else block useThermSeaIce --
461           ENDIF
462    #endif /* ALLOW_THERM_SEAICE */
463    
464  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
465  cph needed for KPP  cph needed for KPP
# Line 428  CADJ STORE surfacetendencyS(:,:,bi,bj) Line 471  CADJ STORE surfacetendencyS(:,:,bi,bj)
471  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
472  CADJ STORE surfacetendencyT(:,:,bi,bj)  CADJ STORE surfacetendencyT(:,:,bi,bj)
473  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
474    # ifdef ALLOW_SEAICE
475    CADJ STORE surfacetendencyTice(:,:,bi,bj)
476    CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
477    # endif
478  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
479    
480  C--     Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h  C--     Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h
# Line 444  CADJ STORE sigmaX(:,:,:)        = comlev Line 491  CADJ STORE sigmaX(:,:,:)        = comlev
491  CADJ STORE sigmaY(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE sigmaY(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte
492  CADJ STORE sigmaR(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE sigmaR(:,:,:)        = comlev1_bibj, key=itdkey, byte=isbyte
493  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
494    
495  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
496          IF (useGMRedi) THEN          IF (useGMRedi) THEN
497    #ifdef ALLOW_DEBUG
498              IF ( debugLevel .GE. debLevB )
499         &     CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
500    #endif
501            CALL GMREDI_CALC_TENSOR(            CALL GMREDI_CALC_TENSOR(
502       I             bi, bj, iMin, iMax, jMin, jMax,       I             bi, bj, iMin, iMax, jMin, jMax,
503       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
# Line 470  CADJ STORE Kwz(:,:,:,bi,bj)   = comlev1_ Line 522  CADJ STORE Kwz(:,:,:,bi,bj)   = comlev1_
522  #ifdef  ALLOW_KPP  #ifdef  ALLOW_KPP
523  C--     Compute KPP mixing coefficients  C--     Compute KPP mixing coefficients
524          IF (useKPP) THEN          IF (useKPP) THEN
525    #ifdef ALLOW_DEBUG
526              IF ( debugLevel .GE. debLevB )
527         &     CALL DEBUG_CALL('KPP_CALC',myThid)
528    #endif
529            CALL KPP_CALC(            CALL KPP_CALC(
530       I                  bi, bj, myTime, myThid )       I                  bi, bj, myTime, myThid )
531  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 490  CADJ &                 = comlev1_bibj, k Line 546  CADJ &                 = comlev1_bibj, k
546  #endif  /* ALLOW_KPP */  #endif  /* ALLOW_KPP */
547    
548  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
 CADJ STORE KappaRT(:,:,:)     = comlev1_bibj, key=itdkey, byte=isbyte  
 CADJ STORE KappaRS(:,:,:)     = comlev1_bibj, key=itdkey, byte=isbyte  
549  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
550  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
551  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
# Line 499  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_ Line 553  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_
553  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
554  CADJ STORE tr1  (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE tr1  (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
555  #endif  #endif
556    #ifdef ALLOW_PTRACERS
557    cph-- moved to forward_step to avoid key computation
558    cphCADJ STORE ptracer(:,:,:,bi,bj,itracer) = comlev1_bibj,
559    cphCADJ &                              key=itdkey, byte=isbyte
560    #endif
561  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
562    
563  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
564  C       AIM - atmospheric intermediate model, physics package code.  C       AIM - atmospheric intermediate model, physics package code.
565          IF ( useAIM ) THEN          IF ( useAIM ) THEN
566    #ifdef ALLOW_DEBUG
567              IF ( debugLevel .GE. debLevB )
568         &     CALL DEBUG_CALL('AIM_DO_PHYSICS',myThid)
569    #endif
570           CALL TIMER_START('AIM_DO_PHYSICS   [THERMODYNAMICS]', myThid)           CALL TIMER_START('AIM_DO_PHYSICS   [THERMODYNAMICS]', myThid)
571           CALL AIM_DO_PHYSICS( bi, bj, myTime, myIter, myThid )           CALL AIM_DO_PHYSICS( bi, bj, myTime, myIter, myThid )
572           CALL TIMER_STOP( 'AIM_DO_PHYSICS   [THERMODYNAMICS]', myThid)           CALL TIMER_STOP( 'AIM_DO_PHYSICS   [THERMODYNAMICS]', myThid)
573          ENDIF          ENDIF
574  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
575    
 #ifdef ALLOW_TIMEAVE  
         IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN  
           CALL TIMEAVE_CUMULATE(ConvectCountTave, ConvectCount, Nr,  
      I                               deltaTclock, bi, bj, myThid)  
         ENDIF  
 #endif /* ALLOW_TIMEAVE */  
   
576  #ifndef DISABLE_MULTIDIM_ADVECTION  #ifndef DISABLE_MULTIDIM_ADVECTION
577  C--     Some advection schemes are better calculated using a multi-dimensional  C--     Some advection schemes are better calculated using a multi-dimensional
578  C       method in the absence of any other terms and, if used, is done here.  C       method in the absence of any other terms and, if used, is done here.
# Line 529  C recomputation. It *is* differentiable, Line 585  C recomputation. It *is* differentiable,
585  C Edit GAD_OPTIONS.h and #define DISABLE_MULTIDIM_ADVECTION to  C Edit GAD_OPTIONS.h and #define DISABLE_MULTIDIM_ADVECTION to
586  C disable this section of code.  C disable this section of code.
587          IF (tempMultiDimAdvec) THEN          IF (tempMultiDimAdvec) THEN
588    #ifdef ALLOW_DEBUG
589              IF ( debugLevel .GE. debLevB )
590         &     CALL DEBUG_CALL('GAD_ADVECTION',myThid)
591    #endif
592            CALL GAD_ADVECTION(bi,bj,tempAdvScheme,GAD_TEMPERATURE,            CALL GAD_ADVECTION(bi,bj,tempAdvScheme,GAD_TEMPERATURE,
593       U                      theta,gT,       U                      theta,gT,
594       I                      myTime,myIter,myThid)       I                      myTime,myIter,myThid)
595          ENDIF          ENDIF
596          IF (saltMultiDimAdvec) THEN          IF (saltMultiDimAdvec) THEN
597    #ifdef ALLOW_DEBUG
598              IF ( debugLevel .GE. debLevB )
599         &     CALL DEBUG_CALL('GAD_ADVECTION',myThid)
600    #endif
601            CALL GAD_ADVECTION(bi,bj,saltAdvScheme,GAD_SALINITY,            CALL GAD_ADVECTION(bi,bj,saltAdvScheme,GAD_SALINITY,
602       U                      salt,gS,       U                      salt,gS,
603       I                      myTime,myIter,myThid)       I                      myTime,myIter,myThid)
# Line 543  C call the multi-dimensional method for Line 607  C call the multi-dimensional method for
607  C of whether multiDimAdvection is set or not.  C of whether multiDimAdvection is set or not.
608  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
609          IF ( usePTRACERS ) THEN          IF ( usePTRACERS ) THEN
610    #ifdef ALLOW_DEBUG
611              IF ( debugLevel .GE. debLevB )
612         &     CALL DEBUG_CALL('PTRACERS_ADVECTION',myThid)
613    #endif
614           CALL PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )           CALL PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )
615          ENDIF          ENDIF
616  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
617  #endif /* DISABLE_MULTIDIM_ADVECTION */  #endif /* DISABLE_MULTIDIM_ADVECTION */
618    
619    #ifdef ALLOW_DEBUG
620           IF ( debugLevel .GE. debLevB )
621         &    CALL DEBUG_MSG('ENTERING DOWNWARD K LOOP',myThid)
622    #endif
623    
624  C--     Start of thermodynamics loop  C--     Start of thermodynamics loop
625          DO k=Nr,1,-1          DO k=Nr,1,-1
626  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 577  C--       Get temporary terms used by te Line 650  C--       Get temporary terms used by te
650       I         myThid)       I         myThid)
651    
652  #ifdef ALLOW_GMREDI  #ifdef ALLOW_GMREDI
653    
654  C--   Residual transp = Bolus transp + Eulerian transp  C--   Residual transp = Bolus transp + Eulerian transp
655            IF (useGMRedi) THEN            IF (useGMRedi) THEN
656              CALL GMREDI_CALC_UVFLOW(              CALL GMREDI_CALC_UVFLOW(
# Line 584  C--   Residual transp = Bolus transp + E Line 658  C--   Residual transp = Bolus transp + E
658              IF (K.GE.2) CALL GMREDI_CALC_WFLOW(              IF (K.GE.2) CALL GMREDI_CALC_WFLOW(
659       &                    rTrans, bi, bj, k, myThid)       &                    rTrans, bi, bj, k, myThid)
660            ENDIF            ENDIF
 #endif /* ALLOW_GMREDI */  
661    
662  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
663  CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte  #ifdef GM_BOLUS_ADVEC
664  CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE uTrans(:,:)    = comlev1_bibj_k, key=kkey, byte=isbyte
665    CADJ STORE vTrans(:,:)    = comlev1_bibj_k, key=kkey, byte=isbyte
666    CADJ STORE rTrans(:,:)    = comlev1_bibj_k, key=kkey, byte=isbyte
667    #endif
668  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
669    
670    #endif /* ALLOW_GMREDI */
671    
672  #ifdef  INCLUDE_CALC_DIFFUSIVITY_CALL  #ifdef  INCLUDE_CALC_DIFFUSIVITY_CALL
673  C--      Calculate the total vertical diffusivity  C--      Calculate the total vertical diffusivity
674           CALL CALC_DIFFUSIVITY(           CALL CALC_DIFFUSIVITY(
# Line 598  C--      Calculate the total vertical di Line 676  C--      Calculate the total vertical di
676       I        maskUp,       I        maskUp,
677       O        KappaRT,KappaRS,       O        KappaRT,KappaRS,
678       I        myThid)       I        myThid)
679    # ifdef ALLOW_AUTODIFF_TAMC
680    CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte
681    CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte
682    # endif /* ALLOW_AUTODIFF_TAMC */
683  #endif  #endif
684    
685            iMin = 1-OLx+2            iMin = 1-OLx+2
# Line 619  C        and step forward storing result Line 701  C        and step forward storing result
701       I         theta, gT,       I         theta, gT,
702       I         myIter, myThid)       I         myIter, myThid)
703           ENDIF           ENDIF
704  cswdice ---- add ---  
705  #ifdef ALLOW_THERM_SEAICE  #ifdef ALLOW_THERM_SEAICE
706         if (k.eq.1) then           IF (useThermSeaIce .AND. k.EQ.1) THEN
707          call ICE_FREEZE(bi, bj, iMin, iMax, jMin, jMax, myThid )             CALL ICE_FREEZE( bi,bj, iMin,iMax,jMin,jMax, myThid )
708         endif           ENDIF
709  #endif  #endif
710  cswdice -- end add ---  
711           IF ( saltStepping ) THEN           IF ( saltStepping ) THEN
712             CALL CALC_GS(             CALL CALC_GS(
713       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,
# Line 639  cswdice -- end add --- Line 721  cswdice -- end add ---
721       I         myIter, myThid)       I         myIter, myThid)
722           ENDIF           ENDIF
723  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
724    ceh3 needs an IF ( usePASSIVE_TRACER ) THEN
725           IF ( tr1Stepping ) THEN           IF ( tr1Stepping ) THEN
726             CALL CALC_GTR1(             CALL CALC_GTR1(
727       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,
# Line 654  cswdice -- end add --- Line 737  cswdice -- end add ---
737  #endif  #endif
738  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
739           IF ( usePTRACERS ) THEN           IF ( usePTRACERS ) THEN
740             CALL PTRACERS_INTEGERATE(             CALL PTRACERS_INTEGRATE(
741       I         bi,bj,k,       I         bi,bj,k,
742       I         xA,yA,uTrans,vTrans,rTrans,maskUp,       I         xA,yA,uTrans,vTrans,rTrans,maskUp,
743       X         KappaRS,       X         fVerP, KappaRS,
744       I         myIter,myTime,myThid)       I         myIter,myTime,myThid)
745           ENDIF           ENDIF
746  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
# Line 669  C--      Apply open boundary conditions Line 752  C--      Apply open boundary conditions
752           END IF           END IF
753  #endif   /* ALLOW_OBCS */  #endif   /* ALLOW_OBCS */
754    
755  C--      Freeze water  c>>>>> has been moved to FORWARD_STEP
756           IF ( allowFreezing .AND. .NOT. useSEAICE ) THEN  cC--      Freeze water
757  #ifdef ALLOW_AUTODIFF_TAMC  c         IF ( allowFreezing .AND. .NOT. useSEAICE
758  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k  c     &       .AND. .NOT.(useThermSeaIce.AND.k.EQ.1) ) THEN
759  CADJ &   , key = kkey, byte = isbyte  c#ifdef ALLOW_AUTODIFF_TAMC
760  #endif /* ALLOW_AUTODIFF_TAMC */  cCADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k
761              CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid )  cCADJ &   , key = kkey, byte = isbyte
762           END IF  c#endif /* ALLOW_AUTODIFF_TAMC */
763    c            CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid )
764    c         ENDIF
765    c>>>>> has been moved to FORWARD_STEP
766    
767  C--     end of thermodynamic k loop (Nr:1)  C--     end of thermodynamic k loop (Nr:1)
768          ENDDO          ENDDO
# Line 684  C--     end of thermodynamic k loop (Nr: Line 770  C--     end of thermodynamic k loop (Nr:
770  cswdice -- add ---  cswdice -- add ---
771  #ifdef ALLOW_THERM_SEAICE  #ifdef ALLOW_THERM_SEAICE
772  c timeaveraging for ice model values  c timeaveraging for ice model values
773    ceh3 This should be wrapped in an IF ( useThermSeaIce ) THEN
774             CALL ICE_AVE(bi,bj,iMin,iMax,jMin,jMax,myThid )             CALL ICE_AVE(bi,bj,iMin,iMax,jMin,jMax,myThid )
775  #endif  #endif
776  cswdice --- end add ---  cswdice --- end add ---
# Line 696  C--     Implicit diffusion Line 783  C--     Implicit diffusion
783    
784           IF (tempStepping) THEN           IF (tempStepping) THEN
785  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
786    CADJ STORE KappaRT(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
787  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
788  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
789              CALL IMPLDIFF(              CALL IMPLDIFF(
# Line 707  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib Line 795  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib
795    
796           IF (saltStepping) THEN           IF (saltStepping) THEN
797  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
798    CADJ STORE KappaRS(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
799  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
800  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
801              CALL IMPLDIFF(              CALL IMPLDIFF(
# Line 748  C--      Apply open boundary conditions Line 837  C--      Apply open boundary conditions
837  C--     End If implicitDiffusion  C--     End If implicitDiffusion
838          ENDIF          ENDIF
839    
840    #ifdef ALLOW_TIMEAVE
841    ceh3 needs an IF ( useTIMEAVE ) THEN
842            IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
843              CALL TIMEAVE_CUMUL_1T(ConvectCountTave, ConvectCount,
844         I                           Nr, deltaTclock, bi, bj, myThid)
845            ENDIF
846            useVariableK = useKPP .OR. useGMredi .OR. ivdc_kappa.NE.0.
847            IF (taveFreq.GT.0. .AND. useVariableK ) THEN
848             IF (implicitDiffusion) THEN
849              CALL TIMEAVE_CUMUL_DIF_1T(TdiffRtave, gT, kappaRT,
850         I                        Nr, 3, deltaTclock, bi, bj, myThid)
851             ELSE
852              CALL TIMEAVE_CUMUL_DIF_1T(TdiffRtave, theta, kappaRT,
853         I                        Nr, 3, deltaTclock, bi, bj, myThid)
854             ENDIF
855            ENDIF
856    #endif /* ALLOW_TIMEAVE */
857    
858  #endif /* SINGLE_LAYER_MODE */  #endif /* SINGLE_LAYER_MODE */
859    
860  Ccs-  C--   end bi,bj loops.
861         ENDDO         ENDDO
862        ENDDO        ENDDO
863    
864  #ifdef ALLOW_AIM  #ifdef ALLOW_DEBUG
 c     IF ( useAIM ) THEN  
 c      CALL AIM_AIM2DYN_EXCHANGES( myTime, myThid )  
 c     ENDIF  
 #endif /* ALLOW_AIM */  
 c     IF ( staggerTimeStep ) THEN  
 c      IF ( useAIM .OR. useCubedSphereExchange ) THEN  
 c        IF (tempStepping) _EXCH_XYZ_R8(gT,myThid)  
 c        IF (saltStepping) _EXCH_XYZ_R8(gS,myThid)  
 c      ELSEIF ( useGMRedi .AND. Oly.LT.4 ) THEN  
 cc       .AND. GM_AdvForm .AND. .NOT.GM_AdvSeparate ) THEN  
 c        IF (tempMultiDimAdvec) _EXCH_XYZ_R8(gT,myThid)  
 c        IF (saltMultiDimAdvec) _EXCH_XYZ_R8(gS,myThid)  
 c      ENDIF    
 c     ENDIF    
   
 #ifndef DISABLE_DEBUGMODE  
865        If (debugMode) THEN        If (debugMode) THEN
866         CALL DEBUG_STATS_RL(Nr,uVel,'Uvel (THERMODYNAMICS)',myThid)         CALL DEBUG_STATS_RL(Nr,uVel,'Uvel (THERMODYNAMICS)',myThid)
867         CALL DEBUG_STATS_RL(Nr,vVel,'Vvel (THERMODYNAMICS)',myThid)         CALL DEBUG_STATS_RL(Nr,vVel,'Vvel (THERMODYNAMICS)',myThid)
# Line 789  c     ENDIF Line 880  c     ENDIF
880        ENDIF        ENDIF
881  #endif  #endif
882    
883    #ifdef ALLOW_DEBUG
884             IF ( debugLevel .GE. debLevB )
885         &    CALL DEBUG_LEAVE('FORWARD_STEP',myThid)
886    #endif
887    
888        RETURN        RETURN
889        END        END

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.58

  ViewVC Help
Powered by ViewVC 1.1.22