/[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.42 by heimbach, Fri Jun 27 01:51:10 2003 UTC revision 1.61 by jmc, Sun Nov 23 01:28:05 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    #ifdef ALLOW_PTRACERS
7    # include "PTRACERS_OPTIONS.h"
8    #endif
9    
10  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
11  # ifdef ALLOW_GMREDI  # ifdef ALLOW_GMREDI
12  #  include "GMREDI_OPTIONS.h"  #  include "GMREDI_OPTIONS.h"
# Line 9  C $Name$ Line 14  C $Name$
14  # ifdef ALLOW_KPP  # ifdef ALLOW_KPP
15  #  include "KPP_OPTIONS.h"  #  include "KPP_OPTIONS.h"
16  # endif  # endif
 # ifdef ALLOW_PTRACERS  
 #  include "PTRACERS_OPTIONS.h"  
 # endif  
17  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
18    
19  CBOP  CBOP
# Line 82  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  #ifdef ALLOW_TIMEAVE
91  #include "TIMEAVE_STATV.h"  #include "TIMEAVE_STATV.h"
92  #endif  #endif
# Line 97  C     == Global variables === Line 102  C     == Global variables ===
102  # ifdef ALLOW_GMREDI  # ifdef ALLOW_GMREDI
103  #  include "GMREDI.h"  #  include "GMREDI.h"
104  # endif  # endif
 # ifdef ALLOW_PTRACERS  
 #  include "PTRACERS.h"  
 # endif  
 cswdice --- add ----  
 # ifdef ALLOW_THERM_SEAICE  
 #  include "ICE.h"  
 # endif  
 cswdice ------  
105  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
106    
107  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
# Line 149  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    #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 167  C     This is currently used by IVDC and Line 169  C     This is currently used by IVDC and
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        INTEGER iTracer, ip
173    
174  CEOP  CEOP
175    
176  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
177           IF (debugMode) CALL DEBUG_ENTER('FORWARD_STEP',myThid)           IF ( debugLevel .GE. debLevB )
178         &    CALL DEBUG_ENTER('FORWARD_STEP',myThid)
179  #endif  #endif
180    
181  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 232  C     uninitialised but inert locations. Line 235  C     uninitialised but inert locations.
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    #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 247  C This is currently also used by IVDC an Line 258  C This is currently also used by IVDC an
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  # ifdef ALLOW_PTRACERS
269    ceh3 this should have an   IF ( usePTRACERS ) THEN
270             DO iTracer=1,PTRACERS_numInUse             DO iTracer=1,PTRACERS_numInUse
271              gPTr(i,j,k,bi,bj,itracer) = 0. _d 0              gPTr(i,j,k,bi,bj,itracer) = 0. _d 0
272             ENDDO             ENDDO
273  # endif  # 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 301  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_ Line 315  CADJ STORE vvel (:,:,:,bi,bj) = comlev1_
315  #endif  #endif
316  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
317    
318  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
319          IF (debugMode) CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)          IF ( debugLevel .GE. debLevB )
320         &    CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)
321  #endif  #endif
322    
323  C--     Start of diagnostic loop  C--     Start of diagnostic loop
# Line 339  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  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
358              IF (debugMode) CALL DEBUG_CALL('FIND_RHO',myThid)              IF ( debugLevel .GE. debLevB )
359         &       CALL DEBUG_CALL('FIND_RHO',myThid)
360  #endif  #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
# Line 363  CADJ STORE salt (:,:,k-1,bi,bj) = comlev Line 379  CADJ STORE salt (:,:,k-1,bi,bj) = comlev
379       O        rhoKm1,       O        rhoKm1,
380       I        myThid )       I        myThid )
381              ENDIF              ENDIF
382  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
383              IF (debugMode) CALL DEBUG_CALL('GRAD_SIGMA',myThid)              IF ( debugLevel .GE. debLevB )
384         &       CALL DEBUG_CALL('GRAD_SIGMA',myThid)
385  #endif  #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,
# Line 380  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  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
401              IF (debugMode) CALL DEBUG_CALL('CALC_IVDC',myThid)              IF ( debugLevel .GE. debLevB )
402         &       CALL DEBUG_CALL('CALC_IVDC',myThid)
403  #endif  #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,
# Line 403  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_ Line 421  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_
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  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
425            IF (debugMode) CALL DEBUG_CALL('OBCS_CALC',myThid)            IF ( debugLevel .GE. debLevB )
426         &     CALL DEBUG_CALL('OBCS_CALC',myThid)
427  #endif  #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,
# Line 412  C--     Calculate future values on open Line 431  C--     Calculate future values on open
431          ENDIF          ENDIF
432  #endif  /* ALLOW_OBCS */  #endif  /* ALLOW_OBCS */
433    
   
 c********************************************  
 cswdice --- add ---  
 #ifdef ALLOW_THERM_SEAICE  
 #ifndef DISABLE_DEBUGMODE  
         IF (debugMode) CALL DEBUG_CALL('ICE_FORCING',myThid)  
 #endif  
 C--     Determines forcing terms based on external fields  
 c--     including effects from ice  
         CALL ICE_FORCING(  
      I             bi, bj, iMin, iMax, jMin, jMax,  
      I             myThid )  
 #else  
   
 cswdice --- end add ---  
   
434  C--     Determines forcing terms based on external fields  C--     Determines forcing terms based on external fields
435  C       relaxation terms, etc.  C       relaxation terms, etc.
436  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
437          IF (debugMode) CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)          IF ( debugLevel .GE. debLevB )
438         &    CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
439  #endif  #endif
440          CALL EXTERNAL_FORCING_SURF(          CALL EXTERNAL_FORCING_SURF(
441       I             bi, bj, iMin, iMax, jMin, jMax,       I             bi, bj, iMin, iMax, jMin, jMax,
442       I             myThid )       I             myTime, myIter, myThid )
 cswdice --- add ----  
 #endif  
 cswdice --- end add ---  
 c******************************************  
   
   
   
443    
444  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
445  cph needed for KPP  cph needed for KPP
# Line 454  CADJ STORE surfacetendencyS(:,:,bi,bj) Line 451  CADJ STORE surfacetendencyS(:,:,bi,bj)
451  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
452  CADJ STORE surfacetendencyT(:,:,bi,bj)  CADJ STORE surfacetendencyT(:,:,bi,bj)
453  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte  CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
454    # ifdef ALLOW_SEAICE
455    CADJ STORE surfacetendencyTice(:,:,bi,bj)
456    CADJ &     = comlev1_bibj, key=itdkey, byte=isbyte
457    # endif
458  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
459    
460  C--     Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h  C--     Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h
# Line 473  CADJ STORE sigmaR(:,:,:)        = comlev Line 474  CADJ STORE sigmaR(:,:,:)        = comlev
474    
475  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
476          IF (useGMRedi) THEN          IF (useGMRedi) THEN
477  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
478            IF (debugMode) CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)            IF ( debugLevel .GE. debLevB )
479         &     CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
480  #endif  #endif
481            CALL GMREDI_CALC_TENSOR(            CALL GMREDI_CALC_TENSOR(
482       I             bi, bj, iMin, iMax, jMin, jMax,       I             bi, bj, iMin, iMax, jMin, jMax,
# Line 500  CADJ STORE Kwz(:,:,:,bi,bj)   = comlev1_ Line 502  CADJ STORE Kwz(:,:,:,bi,bj)   = comlev1_
502  #ifdef  ALLOW_KPP  #ifdef  ALLOW_KPP
503  C--     Compute KPP mixing coefficients  C--     Compute KPP mixing coefficients
504          IF (useKPP) THEN          IF (useKPP) THEN
505  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
506            IF (debugMode) CALL DEBUG_CALL('KPP_CALC',myThid)            IF ( debugLevel .GE. debLevB )
507         &     CALL DEBUG_CALL('KPP_CALC',myThid)
508  #endif  #endif
509            CALL KPP_CALC(            CALL KPP_CALC(
510       I                  bi, bj, myTime, myThid )       I                  bi, bj, myTime, myThid )
# Line 523  CADJ &                 = comlev1_bibj, k Line 526  CADJ &                 = comlev1_bibj, k
526  #endif  /* ALLOW_KPP */  #endif  /* ALLOW_KPP */
527    
528  #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  
529  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
530  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
531  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte  CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
# Line 542  cphCADJ &                              k Line 543  cphCADJ &                              k
543  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
544  C       AIM - atmospheric intermediate model, physics package code.  C       AIM - atmospheric intermediate model, physics package code.
545          IF ( useAIM ) THEN          IF ( useAIM ) THEN
546  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
547            IF (debugMode) CALL DEBUG_CALL('AIM_DO_PHYSICS',myThid)            IF ( debugLevel .GE. debLevB )
548         &     CALL DEBUG_CALL('AIM_DO_PHYSICS',myThid)
549  #endif  #endif
550           CALL TIMER_START('AIM_DO_PHYSICS   [THERMODYNAMICS]', myThid)           CALL TIMER_START('AIM_DO_PHYSICS   [THERMODYNAMICS]', myThid)
551           CALL AIM_DO_PHYSICS( bi, bj, myTime, myIter, myThid )           CALL AIM_DO_PHYSICS( bi, bj, myTime, myIter, myThid )
# Line 563  C recomputation. It *is* differentiable, Line 565  C recomputation. It *is* differentiable,
565  C Edit GAD_OPTIONS.h and #define DISABLE_MULTIDIM_ADVECTION to  C Edit GAD_OPTIONS.h and #define DISABLE_MULTIDIM_ADVECTION to
566  C disable this section of code.  C disable this section of code.
567          IF (tempMultiDimAdvec) THEN          IF (tempMultiDimAdvec) THEN
568  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
569            IF (debugMode) CALL DEBUG_CALL('GAD_ADVECTION',myThid)            IF ( debugLevel .GE. debLevB )
570         &     CALL DEBUG_CALL('GAD_ADVECTION',myThid)
571  #endif  #endif
572            CALL GAD_ADVECTION(bi,bj,tempAdvScheme,GAD_TEMPERATURE,            CALL GAD_ADVECTION(bi,bj,tempAdvScheme,GAD_TEMPERATURE,
573       U                      theta,gT,       U                      theta,gT,
574       I                      myTime,myIter,myThid)       I                      myTime,myIter,myThid)
575          ENDIF          ENDIF
576          IF (saltMultiDimAdvec) THEN          IF (saltMultiDimAdvec) THEN
577  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
578            IF (debugMode) CALL DEBUG_CALL('GAD_ADVECTION',myThid)            IF ( debugLevel .GE. debLevB )
579         &     CALL DEBUG_CALL('GAD_ADVECTION',myThid)
580  #endif  #endif
581            CALL GAD_ADVECTION(bi,bj,saltAdvScheme,GAD_SALINITY,            CALL GAD_ADVECTION(bi,bj,saltAdvScheme,GAD_SALINITY,
582       U                      salt,gS,       U                      salt,gS,
# Line 583  C call the multi-dimensional method for Line 587  C call the multi-dimensional method for
587  C of whether multiDimAdvection is set or not.  C of whether multiDimAdvection is set or not.
588  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
589          IF ( usePTRACERS ) THEN          IF ( usePTRACERS ) THEN
590  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
591            IF (debugMode) CALL DEBUG_CALL('PTRACERS_ADVECTION',myThid)            IF ( debugLevel .GE. debLevB )
592         &     CALL DEBUG_CALL('PTRACERS_ADVECTION',myThid)
593  #endif  #endif
594           CALL PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )           CALL PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )
595          ENDIF          ENDIF
596  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
597  #endif /* DISABLE_MULTIDIM_ADVECTION */  #endif /* DISABLE_MULTIDIM_ADVECTION */
598    
599  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
600         IF (debugMode) CALL DEBUG_MSG('ENTERING DOWNWARD K LOOP',myThid)         IF ( debugLevel .GE. debLevB )
601         &    CALL DEBUG_MSG('ENTERING DOWNWARD K LOOP',myThid)
602  #endif  #endif
603    
604  C--     Start of thermodynamics loop  C--     Start of thermodynamics loop
# Line 643  CADJ STORE rTrans(:,:)    = comlev1_bibj Line 649  CADJ STORE rTrans(:,:)    = comlev1_bibj
649    
650  #endif /* ALLOW_GMREDI */  #endif /* ALLOW_GMREDI */
651    
 #ifdef ALLOW_AUTODIFF_TAMC  
 CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte  
 CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte  
 #endif /* ALLOW_AUTODIFF_TAMC */  
   
652  #ifdef  INCLUDE_CALC_DIFFUSIVITY_CALL  #ifdef  INCLUDE_CALC_DIFFUSIVITY_CALL
653  C--      Calculate the total vertical diffusivity  C--      Calculate the total vertical diffusivity
654           CALL CALC_DIFFUSIVITY(           CALL CALC_DIFFUSIVITY(
# Line 655  C--      Calculate the total vertical di Line 656  C--      Calculate the total vertical di
656       I        maskUp,       I        maskUp,
657       O        KappaRT,KappaRS,       O        KappaRT,KappaRS,
658       I        myThid)       I        myThid)
659    # ifdef ALLOW_AUTODIFF_TAMC
660    CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte
661    CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte
662    # endif /* ALLOW_AUTODIFF_TAMC */
663  #endif  #endif
664    
665            iMin = 1-OLx+2            iMin = 1-OLx+2
# Line 676  C        and step forward storing result Line 681  C        and step forward storing result
681       I         theta, gT,       I         theta, gT,
682       I         myIter, myThid)       I         myIter, myThid)
683           ENDIF           ENDIF
684  cswdice ---- add ---  
 #ifdef ALLOW_THERM_SEAICE  
        if (k.eq.1) then  
         call ICE_FREEZE(bi, bj, iMin, iMax, jMin, jMax, myThid )  
        endif  
 #endif  
 cswdice -- end add ---  
685           IF ( saltStepping ) THEN           IF ( saltStepping ) THEN
686             CALL CALC_GS(             CALL CALC_GS(
687       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,
# Line 696  cswdice -- end add --- Line 695  cswdice -- end add ---
695       I         myIter, myThid)       I         myIter, myThid)
696           ENDIF           ENDIF
697  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
698    ceh3 needs an IF ( usePASSIVE_TRACER ) THEN
699           IF ( tr1Stepping ) THEN           IF ( tr1Stepping ) THEN
700             CALL CALC_GTR1(             CALL CALC_GTR1(
701       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,       I         bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,
# Line 714  cswdice -- end add --- Line 714  cswdice -- end add ---
714             CALL PTRACERS_INTEGRATE(             CALL PTRACERS_INTEGRATE(
715       I         bi,bj,k,       I         bi,bj,k,
716       I         xA,yA,uTrans,vTrans,rTrans,maskUp,       I         xA,yA,uTrans,vTrans,rTrans,maskUp,
717       X         KappaRS,       X         fVerP, KappaRS,
718       I         myIter,myTime,myThid)       I         myIter,myTime,myThid)
719           ENDIF           ENDIF
720  #endif /* ALLOW_PTRACERS */  #endif /* ALLOW_PTRACERS */
# Line 727  C--      Apply open boundary conditions Line 727  C--      Apply open boundary conditions
727  #endif   /* ALLOW_OBCS */  #endif   /* ALLOW_OBCS */
728    
729  C--      Freeze water  C--      Freeze water
730           IF ( allowFreezing .AND. .NOT. useSEAICE ) THEN  C  this bit of code is left here for backward compatibility.
731    C  freezing at surface level has been moved to FORWARD_STEP
732             IF ( useOldFreezing .AND. .NOT. useSEAICE
733         &       .AND. .NOT.(useThSIce.AND.k.EQ.1) ) THEN
734  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
735  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k
736  CADJ &   , key = kkey, byte = isbyte  CADJ &   , key = kkey, byte = isbyte
737  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
738              CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid )              CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid )
739           END IF           ENDIF
740    
741  C--     end of thermodynamic k loop (Nr:1)  C--     end of thermodynamic k loop (Nr:1)
742          ENDDO          ENDDO
743    
 cswdice -- add ---  
 #ifdef ALLOW_THERM_SEAICE  
 c timeaveraging for ice model values  
            CALL ICE_AVE(bi,bj,iMin,iMax,jMin,jMax,myThid )  
 #endif  
 cswdice --- end add ---  
   
   
   
744    
745  C--     Implicit diffusion  C--     Implicit diffusion
746          IF (implicitDiffusion) THEN          IF (implicitDiffusion) THEN
747    
748           IF (tempStepping) THEN           IF (tempStepping) THEN
749  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
750    CADJ STORE KappaRT(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
751  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
752  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
753              CALL IMPLDIFF(              CALL IMPLDIFF(
# Line 764  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib Line 759  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib
759    
760           IF (saltStepping) THEN           IF (saltStepping) THEN
761  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
762    CADJ STORE KappaRS(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
763  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
764  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
765              CALL IMPLDIFF(              CALL IMPLDIFF(
# Line 806  C--     End If implicitDiffusion Line 802  C--     End If implicitDiffusion
802          ENDIF          ENDIF
803    
804  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
805    ceh3 needs an IF ( useTIMEAVE ) THEN
806          IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN          IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
807            CALL TIMEAVE_CUMUL_1T(ConvectCountTave, ConvectCount,            CALL TIMEAVE_CUMUL_1T(ConvectCountTave, ConvectCount,
808       I                           Nr, deltaTclock, bi, bj, myThid)       I                           Nr, deltaTclock, bi, bj, myThid)
# Line 828  C--   end bi,bj loops. Line 825  C--   end bi,bj loops.
825         ENDDO         ENDDO
826        ENDDO        ENDDO
827    
828  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
829        If (debugMode) THEN        If (debugMode) THEN
830         CALL DEBUG_STATS_RL(Nr,uVel,'Uvel (THERMODYNAMICS)',myThid)         CALL DEBUG_STATS_RL(Nr,uVel,'Uvel (THERMODYNAMICS)',myThid)
831         CALL DEBUG_STATS_RL(Nr,vVel,'Vvel (THERMODYNAMICS)',myThid)         CALL DEBUG_STATS_RL(Nr,vVel,'Vvel (THERMODYNAMICS)',myThid)
# Line 847  C--   end bi,bj loops. Line 844  C--   end bi,bj loops.
844        ENDIF        ENDIF
845  #endif  #endif
846    
847  #ifndef DISABLE_DEBUGMODE  #ifdef ALLOW_DEBUG
848           IF (debugMode) CALL DEBUG_LEAVE('FORWARD_STEP',myThid)           IF ( debugLevel .GE. debLevB )
849         &    CALL DEBUG_LEAVE('FORWARD_STEP',myThid)
850  #endif  #endif
851    
852        RETURN        RETURN

Legend:
Removed from v.1.42  
changed lines
  Added in v.1.61

  ViewVC Help
Powered by ViewVC 1.1.22