/[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.11 by heimbach, Thu Sep 27 20:12:10 2001 UTC revision 1.29 by heimbach, Tue Nov 12 20:45:41 2002 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "CPP_OPTIONS.h"  #include "CPP_OPTIONS.h"
5    #ifdef ALLOW_AUTODIFF_TAMC
6    # ifdef ALLOW_GMREDI
7    #  include "GMREDI_OPTIONS.h"
8    # endif
9    # ifdef ALLOW_KPP
10    #  include "KPP_OPTIONS.h"
11    # endif
12    #endif /* ALLOW_AUTODIFF_TAMC */
13    
14  CBOP  CBOP
15  C     !ROUTINE: THERMODYNAMICS  C     !ROUTINE: THERMODYNAMICS
# Line 151  C     This is currently used by IVDC and Line 159  C     This is currently used by IVDC and
159        INTEGER i, j        INTEGER i, j
160        INTEGER k, km1, kup, kDown        INTEGER k, km1, kup, kDown
161    
 Cjmc : add for phiHyd output <- but not working if multi tile per CPU  
 c     CHARACTER*(MAX_LEN_MBUF) suff  
 c     LOGICAL  DIFFERENT_MULTIPLE  
 c     EXTERNAL DIFFERENT_MULTIPLE  
 Cjmc(end)  
162  CEOP  CEOP
163    
164  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
# Line 174  C     uninitialised but inert locations. Line 177  C     uninitialised but inert locations.
177          yA(i,j)      = 0. _d 0          yA(i,j)      = 0. _d 0
178          uTrans(i,j)  = 0. _d 0          uTrans(i,j)  = 0. _d 0
179          vTrans(i,j)  = 0. _d 0          vTrans(i,j)  = 0. _d 0
         DO k=1,Nr  
          phiHyd(i,j,k)  = 0. _d 0  
          sigmaX(i,j,k) = 0. _d 0  
          sigmaY(i,j,k) = 0. _d 0  
          sigmaR(i,j,k) = 0. _d 0  
         ENDDO  
         rhoKM1 (i,j) = 0. _d 0  
180          rhok   (i,j) = 0. _d 0          rhok   (i,j) = 0. _d 0
181          phiSurfX(i,j) = 0. _d 0          phiSurfX(i,j) = 0. _d 0
182          phiSurfY(i,j) = 0. _d 0          phiSurfY(i,j) = 0. _d 0
# Line 228  C--     Set up work arrays that need val Line 224  C--     Set up work arrays that need val
224            fVerS  (i,j,2) = 0. _d 0            fVerS  (i,j,2) = 0. _d 0
225            fVerTr1(i,j,1) = 0. _d 0            fVerTr1(i,j,1) = 0. _d 0
226            fVerTr1(i,j,2) = 0. _d 0            fVerTr1(i,j,2) = 0. _d 0
227              rhoKM1 (i,j)   = 0. _d 0
228           ENDDO           ENDDO
229          ENDDO          ENDDO
230    
# Line 235  C--     Set up work arrays that need val Line 232  C--     Set up work arrays that need val
232           DO j=1-OLy,sNy+OLy           DO j=1-OLy,sNy+OLy
233            DO i=1-OLx,sNx+OLx            DO i=1-OLx,sNx+OLx
234  C This is currently also used by IVDC and Diagnostics  C This is currently also used by IVDC and Diagnostics
235               phiHyd(i,j,k)  = 0. _d 0
236               sigmaX(i,j,k) = 0. _d 0
237               sigmaY(i,j,k) = 0. _d 0
238               sigmaR(i,j,k) = 0. _d 0
239             ConvectCount(i,j,k) = 0.             ConvectCount(i,j,k) = 0.
240             KappaRT(i,j,k) = 0. _d 0             KappaRT(i,j,k) = 0. _d 0
241             KappaRS(i,j,k) = 0. _d 0             KappaRS(i,j,k) = 0. _d 0
# Line 244  C This is currently also used by IVDC an Line 245  C This is currently also used by IVDC an
245  #ifdef ALLOW_PASSIVE_TRACER  #ifdef ALLOW_PASSIVE_TRACER
246             gTr1(i,j,k,bi,bj) = 0. _d 0             gTr1(i,j,k,bi,bj) = 0. _d 0
247  #endif  #endif
248    #ifdef ALLOW_GMREDI
249               Kwx(i,j,k,bi,bj)    = 0. _d 0
250               Kwy(i,j,k,bi,bj)    = 0. _d 0
251               Kwz(i,j,k,bi,bj)    = 0. _d 0
252    #ifdef GM_NON_UNITY_DIAGONAL
253               Kux(i,j,k,bi,bj)    = 0. _d 0
254               Kvy(i,j,k,bi,bj)    = 0. _d 0
255    #endif
256    #endif /* ALLOW_GMREDI */
257  #endif  #endif
258            ENDDO            ENDDO
259           ENDDO           ENDDO
260          ENDDO          ENDDO
261    
262          iMin = 1-OLx+1          iMin = 1-OLx
263          iMax = sNx+OLx          iMax = sNx+OLx
264          jMin = 1-OLy+1          jMin = 1-OLy
265          jMax = sNy+OLy          jMax = sNy+OLy
266    
267    
# Line 278  CADJ STORE rhok  (:,:) = comlev1_bibj_k Line 288  CADJ STORE rhok  (:,:) = comlev1_bibj_k
288  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
289    
290  C--       Integrate continuity vertically for vertical velocity  C--       Integrate continuity vertically for vertical velocity
291            CALL INTEGRATE_FOR_W(  c         CALL INTEGRATE_FOR_W(
292       I                         bi, bj, k, uVel, vVel,  c    I                         bi, bj, k, uVel, vVel,
293       O                         wVel,  c    O                         wVel,
294       I                         myThid )  c    I                         myThid )
295    
296  #ifdef    ALLOW_OBCS  #ifdef    ALLOW_OBCS
297  #ifdef    ALLOW_NONHYDROSTATIC  #ifdef    ALLOW_NONHYDROSTATIC
298  C--       Apply OBC to W if in N-H mode  C--       Apply OBC to W if in N-H mode
299            IF (useOBCS.AND.nonHydrostatic) THEN  c         IF (useOBCS.AND.nonHydrostatic) THEN
300              CALL OBCS_APPLY_W( bi, bj, k, wVel, myThid )  c           CALL OBCS_APPLY_W( bi, bj, k, wVel, myThid )
301            ENDIF  c         ENDIF
302  #endif    /* ALLOW_NONHYDROSTATIC */  #endif    /* ALLOW_NONHYDROSTATIC */
303  #endif    /* ALLOW_OBCS */  #endif    /* ALLOW_OBCS */
304    
305    C--       Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h
306    C--       MOST of THERMODYNAMICS will be disabled
307    #ifndef SINGLE_LAYER_MODE
308    
309  C--       Calculate gradients of potential density for isoneutral  C--       Calculate gradients of potential density for isoneutral
310  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)  C         slope terms (e.g. GM/Redi tensor or IVDC diffusivity)
311  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
# Line 301  CADJ STORE theta(:,:,k,bi,bj) = comlev1_ Line 315  CADJ STORE theta(:,:,k,bi,bj) = comlev1_
315  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
316  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
317              CALL FIND_RHO(              CALL FIND_RHO(
318       I        bi, bj, iMin, iMax, jMin, jMax, k, k, eosType,       I        bi, bj, iMin, iMax, jMin, jMax, k, k,
319       I        theta, salt,       I        theta, salt,
320       O        rhoK,       O        rhoK,
321       I        myThid )       I        myThid )
# Line 311  CADJ STORE theta(:,:,k-1,bi,bj) = comlev Line 325  CADJ STORE theta(:,:,k-1,bi,bj) = comlev
325  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
326  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
327               CALL FIND_RHO(               CALL FIND_RHO(
328       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k, eosType,       I        bi, bj, iMin, iMax, jMin, jMax, k-1, k,
329       I        theta, salt,       I        theta, salt,
330       O        rhoKm1,       O        rhoKm1,
331       I        myThid )       I        myThid )
# Line 333  c ==> should use sigmaR !!! Line 347  c ==> should use sigmaR !!!
347       I        myTime, myIter, myThid)       I        myTime, myIter, myThid)
348            ENDIF            ENDIF
349    
350    #endif /* SINGLE_LAYER_MODE */
351    
352  C--     end of diagnostic k loop (Nr:1)  C--     end of diagnostic k loop (Nr:1)
353          ENDDO          ENDDO
354    
# Line 344  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_ Line 360  CADJ STORE wvel (:,:,:,bi,bj) = comlev1_
360  #ifdef  ALLOW_OBCS  #ifdef  ALLOW_OBCS
361  C--     Calculate future values on open boundaries  C--     Calculate future values on open boundaries
362          IF (useOBCS) THEN          IF (useOBCS) THEN
363            CALL OBCS_CALC( bi, bj, myTime+deltaT,            CALL OBCS_CALC( bi, bj, myTime+deltaT, myIter+1,
364       I            uVel, vVel, wVel, theta, salt,       I            uVel, vVel, wVel, theta, salt,
365       I            myThid )       I            myThid )
366          ENDIF          ENDIF
# Line 367  CADJ STORE surfacetendencyT(:,:,bi,bj) Line 383  CADJ STORE surfacetendencyT(:,:,bi,bj)
383  CADJ &     = comlev1_bibj, key=ikey, byte=isbyte  CADJ &     = comlev1_bibj, key=ikey, byte=isbyte
384  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
385    
386    C--     Attention: by defining "SINGLE_LAYER_MODE" in CPP_OPTIONS.h
387    C--     MOST of THERMODYNAMICS will be disabled
388    #ifndef SINGLE_LAYER_MODE
389    
390  #ifdef  ALLOW_GMREDI  #ifdef  ALLOW_GMREDI
391    
392  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
393  CADJ STORE sigmaX(:,:,:) = comlev1, key=ikey, byte=isbyte  CADJ STORE sigmaX(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte
394  CADJ STORE sigmaY(:,:,:) = comlev1, key=ikey, byte=isbyte  CADJ STORE sigmaY(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte
395  CADJ STORE sigmaR(:,:,:) = comlev1, key=ikey, byte=isbyte  CADJ STORE sigmaR(:,:,k)        = comlev1_bibj_k, key=kkey, byte=isbyte
396  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
397  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation  C--     Calculate iso-neutral slopes for the GM/Redi parameterisation
398          IF (useGMRedi) THEN          IF (useGMRedi) THEN
399            DO k=1,Nr            CALL GMREDI_CALC_TENSOR(
400              CALL GMREDI_CALC_TENSOR(       I             bi, bj, iMin, iMax, jMin, jMax,
      I             bi, bj, iMin, iMax, jMin, jMax, k,  
401       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
402       I             myThid )       I             myThid )
           ENDDO  
403  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
404          ELSE          ELSE
405            DO k=1, Nr            CALL GMREDI_CALC_TENSOR_DUMMY(
406              CALL GMREDI_CALC_TENSOR_DUMMY(       I             bi, bj, iMin, iMax, jMin, jMax,
      I             bi, bj, iMin, iMax, jMin, jMax, k,  
407       I             sigmaX, sigmaY, sigmaR,       I             sigmaX, sigmaY, sigmaR,
408       I             myThid )       I             myThid )
           ENDDO  
409  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
410          ENDIF          ENDIF
411    
# Line 440  C       AIM - atmospheric intermediate m Line 456  C       AIM - atmospheric intermediate m
456  C note(jmc) : phiHyd=0 at this point but is not really used in Molteni Physics  C note(jmc) : phiHyd=0 at this point but is not really used in Molteni Physics
457          IF ( useAIM ) THEN          IF ( useAIM ) THEN
458           CALL TIMER_START('AIM_DO_ATMOS_PHYS      [DYNAMICS]', myThid)           CALL TIMER_START('AIM_DO_ATMOS_PHYS      [DYNAMICS]', myThid)
459           CALL AIM_DO_ATMOS_PHYSICS( phiHyd, bi, bj, myTime, myThid )           CALL AIM_DO_ATMOS_PHYSICS( bi, bj, myTime, myThid )
460           CALL TIMER_STOP ('AIM_DO_ATMOS_PHYS      [DYNAMICS]', myThid)           CALL TIMER_STOP ('AIM_DO_ATMOS_PHYS      [DYNAMICS]', myThid)
461          ENDIF          ENDIF
462  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
463    
464    #ifdef ALLOW_TIMEAVE
465            IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
466              CALL TIMEAVE_CUMULATE(ConvectCountTave, ConvectCount, Nr,
467         I                               deltaTclock, bi, bj, myThid)
468            ENDIF
469    #endif /* ALLOW_TIMEAVE */
470    
471    #ifndef DISABLE_MULTIDIM_ADVECTION
472  C--     Some advection schemes are better calculated using a multi-dimensional  C--     Some advection schemes are better calculated using a multi-dimensional
473  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.
474    C
475  #ifdef ALLOW_MULTIDIM_ADVECTION  C The CPP flag DISABLE_MULTIDIM_ADVECTION is currently unset in GAD_OPTIONS.h
476          IF (multiDimAdvection) THEN  C The default is to use multi-dimensinal advection for non-linear advection
477           IF (tempStepping .AND.  C schemes. However, for the sake of efficiency of the adjoint it is necessary
478       &       tempAdvScheme.NE.ENUM_CENTERED_2ND .AND.  C to be able to exclude this scheme to avoid excessive storage and
479       &       tempAdvScheme.NE.ENUM_UPWIND_3RD .AND.  C recomputation. It *is* differentiable, if you need it.
480       &       tempAdvScheme.NE.ENUM_CENTERED_4TH ) THEN  C Edit GAD_OPTIONS.h and #define DISABLE_MULTIDIM_ADVECTION to
481    C disable this section of code.
482            IF (tempMultiDimAdvec) THEN
483            CALL GAD_ADVECTION(bi,bj,tempAdvScheme,GAD_TEMPERATURE,            CALL GAD_ADVECTION(bi,bj,tempAdvScheme,GAD_TEMPERATURE,
484       U                      theta,gT,       U                      theta,gT,
485       I                      myTime,myIter,myThid)       I                      myTime,myIter,myThid)
486           ENDIF          ENDIF
487           IF (saltStepping .AND.          IF (saltMultiDimAdvec) THEN
      &       saltAdvScheme.NE.ENUM_CENTERED_2ND .AND.  
      &       saltAdvScheme.NE.ENUM_UPWIND_3RD .AND.  
      &       saltAdvScheme.NE.ENUM_CENTERED_4TH ) THEN  
488            CALL GAD_ADVECTION(bi,bj,saltAdvScheme,GAD_SALINITY,            CALL GAD_ADVECTION(bi,bj,saltAdvScheme,GAD_SALINITY,
489       U                      salt,gS,       U                      salt,gS,
490       I                      myTime,myIter,myThid)       I                      myTime,myIter,myThid)
          ENDIF  
491          ENDIF          ENDIF
492  #endif /* ALLOW_MULTIDIM_ADVECTION */  C Since passive tracers are configurable separately from T,S we
493    C call the multi-dimensional method for PTRACERS regardless
494    C of whether multiDimAdvection is set or not.
495    #ifdef ALLOW_PTRACERS
496            IF ( usePTRACERS ) THEN
497             CALL PTRACERS_ADVECTION( bi,bj,myIter,myTime,myThid )
498            ENDIF
499    #endif /* ALLOW_PTRACERS */
500    #endif /* DISABLE_MULTIDIM_ADVECTION */
501    
502  C--     Start of thermodynamics loop  C--     Start of thermodynamics loop
503          DO k=Nr,1,-1          DO k=Nr,1,-1
# Line 497  C--       Get temporary terms used by te Line 527  C--       Get temporary terms used by te
527       O         xA,yA,uTrans,vTrans,rTrans,maskUp,       O         xA,yA,uTrans,vTrans,rTrans,maskUp,
528       I         myThid)       I         myThid)
529    
530    #ifdef ALLOW_GMREDI
531    C--   Residual transp = Bolus transp + Eulerian transp
532              IF (useGMRedi) THEN
533                CALL GMREDI_CALC_UVFLOW(
534         &            uTrans, vTrans, bi, bj, k, myThid)
535                IF (K.GE.2) CALL GMREDI_CALC_WFLOW(
536         &                    rTrans, bi, bj, k, myThid)
537              ENDIF
538    #endif /* ALLOW_GMREDI */
539    
540  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
541  CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE KappaRT(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte
542  CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte  CADJ STORE KappaRS(:,:,k)    = comlev1_bibj_k, key=kkey, byte=isbyte
# Line 556  C        and step forward storing result Line 596  C        and step forward storing result
596       I         myIter,myThid)       I         myIter,myThid)
597           ENDIF           ENDIF
598  #endif  #endif
599    #ifdef ALLOW_PTRACERS
600             IF ( usePTRACERS ) THEN
601               CALL PTRACERS_INTEGERATE(
602         I         bi,bj,k,
603         I         xA,yA,uTrans,vTrans,rTrans,maskUp,
604         X         KappaRS,
605         I         myIter,myTime,myThid)
606             ENDIF
607    #endif /* ALLOW_PTRACERS */
608    
609  #ifdef   ALLOW_OBCS  #ifdef   ALLOW_OBCS
610  C--      Apply open boundary conditions  C--      Apply open boundary conditions
# Line 565  C--      Apply open boundary conditions Line 614  C--      Apply open boundary conditions
614  #endif   /* ALLOW_OBCS */  #endif   /* ALLOW_OBCS */
615    
616  C--      Freeze water  C--      Freeze water
617           IF (allowFreezing) THEN           IF ( allowFreezing .AND. .NOT. useSEAICE ) THEN
618  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
619  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k  CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k
620  CADJ &   , key = kkey, byte = isbyte  CADJ &   , key = kkey, byte = isbyte
# Line 576  CADJ &   , key = kkey, byte = isbyte Line 625  CADJ &   , key = kkey, byte = isbyte
625  C--     end of thermodynamic k loop (Nr:1)  C--     end of thermodynamic k loop (Nr:1)
626          ENDDO          ENDDO
627    
   
 #ifdef ALLOW_AUTODIFF_TAMC  
 C? Patrick? What about this one?  
 cph Keys iikey and idkey dont seem to be needed  
 cph since storing occurs on different tape for each  
 cph impldiff call anyways.  
 cph Thus, common block comlev1_impl isnt needed either.  
 cph Storing below needed in the case useGMREDI.  
         iikey = (ikey-1)*maximpl  
 #endif /* ALLOW_AUTODIFF_TAMC */  
   
628  C--     Implicit diffusion  C--     Implicit diffusion
629          IF (implicitDiffusion) THEN          IF (implicitDiffusion) THEN
630    
631           IF (tempStepping) THEN           IF (tempStepping) THEN
632  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
             idkey = iikey + 1  
633  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
634  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
635              CALL IMPLDIFF(              CALL IMPLDIFF(
# Line 604  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib Line 641  CADJ STORE gT(:,:,:,bi,bj) = comlev1_bib
641    
642           IF (saltStepping) THEN           IF (saltStepping) THEN
643  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
          idkey = iikey + 2  
644  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte  CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=ikey, byte=isbyte
645  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
646              CALL IMPLDIFF(              CALL IMPLDIFF(
# Line 627  CADJ STORE gTr1(:,:,:,bi,bj) = comlev1_b Line 663  CADJ STORE gTr1(:,:,:,bi,bj) = comlev1_b
663           ENDIF           ENDIF
664  #endif  #endif
665    
666    #ifdef ALLOW_PTRACERS
667    C Vertical diffusion (implicit) for passive tracers
668             IF ( usePTRACERS ) THEN
669               CALL PTRACERS_IMPLDIFF( bi,bj,KappaRS,myThid )
670             ENDIF
671    #endif /* ALLOW_PTRACERS */
672    
673  #ifdef   ALLOW_OBCS  #ifdef   ALLOW_OBCS
674  C--      Apply open boundary conditions  C--      Apply open boundary conditions
675           IF (useOBCS) THEN           IF (useOBCS) THEN
# Line 639  C--      Apply open boundary conditions Line 682  C--      Apply open boundary conditions
682  C--     End If implicitDiffusion  C--     End If implicitDiffusion
683          ENDIF          ENDIF
684    
685    #endif /* SINGLE_LAYER_MODE */
686    
687  Ccs-  Ccs-
688         ENDDO         ENDDO
689        ENDDO        ENDDO
690    
691  #ifdef ALLOW_AIM  #ifdef ALLOW_AIM
692        IF ( useAIM ) THEN  c     IF ( useAIM ) THEN
693         CALL AIM_AIM2DYN_EXCHANGES( myTime, myThid )  c      CALL AIM_AIM2DYN_EXCHANGES( myTime, myThid )
694        ENDIF  c     ENDIF
        _EXCH_XYZ_R8(gT,myThid)  
        _EXCH_XYZ_R8(gS,myThid)  
 #else  
       IF (staggerTimeStep.AND.useCubedSphereExchange) THEN  
        _EXCH_XYZ_R8(gT,myThid)  
        _EXCH_XYZ_R8(gS,myThid)  
       ENDIF  
695  #endif /* ALLOW_AIM */  #endif /* ALLOW_AIM */
696    c     IF ( staggerTimeStep ) THEN
697    c      IF ( useAIM .OR. useCubedSphereExchange ) THEN
698    c        IF (tempStepping) _EXCH_XYZ_R8(gT,myThid)
699    c        IF (saltStepping) _EXCH_XYZ_R8(gS,myThid)
700    c      ELSEIF ( useGMRedi .AND. Oly.LT.4 ) THEN
701    cc       .AND. GM_AdvForm .AND. .NOT.GM_AdvSeparate ) THEN
702    c        IF (tempMultiDimAdvec) _EXCH_XYZ_R8(gT,myThid)
703    c        IF (saltMultiDimAdvec) _EXCH_XYZ_R8(gS,myThid)
704    c      ENDIF  
705    c     ENDIF  
706    
707    #ifndef DISABLE_DEBUGMODE
708          If (debugMode) THEN
709           CALL DEBUG_STATS_RL(Nr,uVel,'Uvel (THERMODYNAMICS)',myThid)
710           CALL DEBUG_STATS_RL(Nr,vVel,'Vvel (THERMODYNAMICS)',myThid)
711           CALL DEBUG_STATS_RL(Nr,wVel,'Wvel (THERMODYNAMICS)',myThid)
712           CALL DEBUG_STATS_RL(Nr,theta,'Theta (THERMODYNAMICS)',myThid)
713           CALL DEBUG_STATS_RL(Nr,salt,'Salt (THERMODYNAMICS)',myThid)
714           CALL DEBUG_STATS_RL(Nr,Gt,'Gt (THERMODYNAMICS)',myThid)
715           CALL DEBUG_STATS_RL(Nr,Gs,'Gs (THERMODYNAMICS)',myThid)
716           CALL DEBUG_STATS_RL(Nr,GtNm1,'GtNm1 (THERMODYNAMICS)',myThid)
717           CALL DEBUG_STATS_RL(Nr,GsNm1,'GsNm1 (THERMODYNAMICS)',myThid)
718    #ifdef ALLOW_PTRACERS
719           IF ( usePTRACERS ) THEN
720             CALL PTRACERS_DEBUG(myThid)
721           ENDIF
722    #endif /* ALLOW_PTRACERS */
723          ENDIF
724    #endif
725    
726        RETURN        RETURN
727        END        END

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.29

  ViewVC Help
Powered by ViewVC 1.1.22