/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_calc_rhs.F
ViewVC logotype

Diff of /MITgcm/pkg/generic_advdiff/gad_calc_rhs.F

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

revision 1.63 by jmc, Fri Dec 27 15:52:17 2013 UTC revision 1.66 by rpa, Wed Jun 4 14:48:32 2014 UTC
# Line 47  C !USES: =============================== Line 47  C !USES: ===============================
47  #include "GRID.h"  #include "GRID.h"
48  #include "SURFACE.h"  #include "SURFACE.h"
49  #include "GAD.h"  #include "GAD.h"
   
50  #ifdef ALLOW_AUTODIFF  #ifdef ALLOW_AUTODIFF
51  # include "AUTODIFF_PARAMS.h"  # include "AUTODIFF_PARAMS.h"
52  #endif /* ALLOW_AUTODIFF */  #endif /* ALLOW_AUTODIFF */
 #ifdef ALLOW_AUTODIFF_TAMC  
 # include "tamc.h"  
 # include "tamc_keys.h"  
 #endif /* ALLOW_AUTODIFF_TAMC */  
53    
54  C !INPUT PARAMETERS: ===================================================  C !INPUT PARAMETERS: ===================================================
55  C bi,bj            :: tile indices  C bi,bj            :: tile indices
# Line 157  C locABT           :: local copy of (AB- Line 152  C locABT           :: local copy of (AB-
152  #endif  #endif
153  CEOP  CEOP
154    
155  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF
156  C--   only the kUp part of fverT is set in this subroutine  C--   only the kUp part of fverT is set in this subroutine
157  C--   the kDown is still required  C--   the kDown is still required
158        fVerT(1,1,kDown) = fVerT(1,1,kDown)        fVerT(1,1,kDown) = fVerT(1,1,kDown)
# Line 262  cph with limiters in forward, but withou Line 257  cph with limiters in forward, but withou
257             CALL GAD_DST3FL_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),             CALL GAD_DST3FL_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
258       I              uTrans, uFld, maskLocW, locABT,       I              uTrans, uFld, maskLocW, locABT,
259       O              af, myThid )       O              af, myThid )
260  #ifndef ALLOW_AUTODIFF_TAMC  #ifndef ALLOW_AUTODIFF
261           ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN           ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN
262             CALL GAD_OS7MP_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),             CALL GAD_OS7MP_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
263       I              uTrans, uFld, maskLocW, locABT,       I              uTrans, uFld, maskLocW, locABT,
# Line 343  C       excluding advective terms: Line 338  C       excluding advective terms:
338       &    (diffKh.NE.0. .OR. diffK4 .NE.0. .OR. trUseGMRedi) ) THEN       &    (diffKh.NE.0. .OR. diffK4 .NE.0. .OR. trUseGMRedi) ) THEN
339            diagName = 'DFxE'//diagSufx            diagName = 'DFxE'//diagSufx
340            CALL DIAGNOSTICS_FILL( df, diagName, k,1, 2,bi,bj, myThid )            CALL DIAGNOSTICS_FILL( df, diagName, k,1, 2,bi,bj, myThid )
341    #ifdef ALLOW_LAYERS
342              CALL LAYERS_FILL_DFX( df, trIdentity, k, 1, 2,bi,bj, myThid )
343    #endif /* ALLOW_LAYERS */
344        ENDIF        ENDIF
345  #endif  #endif
346    
# Line 399  cph with limiters in forward, but withou Line 397  cph with limiters in forward, but withou
397             CALL GAD_DST3FL_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),             CALL GAD_DST3FL_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
398       I              vTrans, vFld, maskLocS, locABT,       I              vTrans, vFld, maskLocS, locABT,
399       O              af, myThid )       O              af, myThid )
400  #ifndef ALLOW_AUTODIFF_TAMC  #ifndef ALLOW_AUTODIFF
401           ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN           ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN
402             CALL GAD_OS7MP_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),             CALL GAD_OS7MP_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
403       I              vTrans, vFld, maskLocS, locABT,       I              vTrans, vFld, maskLocS, locABT,
# Line 480  C       excluding advective terms: Line 478  C       excluding advective terms:
478       &    (diffKh.NE.0. .OR. diffK4 .NE.0. .OR. trUseGMRedi) ) THEN       &    (diffKh.NE.0. .OR. diffK4 .NE.0. .OR. trUseGMRedi) ) THEN
479            diagName = 'DFyE'//diagSufx            diagName = 'DFyE'//diagSufx
480            CALL DIAGNOSTICS_FILL( df, diagName, k,1, 2,bi,bj, myThid )            CALL DIAGNOSTICS_FILL( df, diagName, k,1, 2,bi,bj, myThid )
481    #ifdef ALLOW_LAYERS
482                CALL LAYERS_FILL_DFY( df, trIdentity,k, 1, 2,bi,bj, myThid )
483    #endif /* ALLOW_LAYERS */
484        ENDIF        ENDIF
485  #endif  #endif
486    
# Line 526  cph with limiters in forward, but withou Line 527  cph with limiters in forward, but withou
527             CALL GAD_DST3FL_ADV_R( bi,bj,k, deltaTLev(k),             CALL GAD_DST3FL_ADV_R( bi,bj,k, deltaTLev(k),
528       I              rTrans, wFld, TracAB(1-OLx,1-OLy,1,bi,bj),       I              rTrans, wFld, TracAB(1-OLx,1-OLy,1,bi,bj),
529       O              af, myThid )       O              af, myThid )
530  #ifndef ALLOW_AUTODIFF_TAMC  #ifndef ALLOW_AUTODIFF
531          ELSEIF (vertAdvecScheme.EQ.ENUM_OS7MP ) THEN          ELSEIF (vertAdvecScheme.EQ.ENUM_OS7MP ) THEN
532             CALL GAD_OS7MP_ADV_R( bi,bj,k, deltaTLev(k),             CALL GAD_OS7MP_ADV_R( bi,bj,k, deltaTLev(k),
533       I              rTrans, wFld, TracAB(1-OLx,1-OLy,1,bi,bj),       I              rTrans, wFld, TracAB(1-OLx,1-OLy,1,bi,bj),
# Line 610  C       Explicit terms only & excluding Line 611  C       Explicit terms only & excluding
611       &    (.NOT.implicitDiffusion .OR. trUseGMRedi) ) THEN       &    (.NOT.implicitDiffusion .OR. trUseGMRedi) ) THEN
612            diagName = 'DFrE'//diagSufx            diagName = 'DFrE'//diagSufx
613            CALL DIAGNOSTICS_FILL( df, diagName, k,1, 2,bi,bj, myThid )            CALL DIAGNOSTICS_FILL( df, diagName, k,1, 2,bi,bj, myThid )
614    #ifdef ALLOW_LAYERS
615              CALL LAYERS_FILL_DFR( df, trIdentity, k, 1, 2,bi,bj, myThid )
616    #endif /* ALLOW_LAYERS */
617        ENDIF        ENDIF
618  #endif  #endif
619    
# Line 658  C-    Diagnostics of Non-Local Tracer (v Line 662  C-    Diagnostics of Non-Local Tracer (v
662  C- note: needs to explicitly increment the counter since DIAGNOSTICS_FILL  C- note: needs to explicitly increment the counter since DIAGNOSTICS_FILL
663  C        does it only if k=1 (never the case here)  C        does it only if k=1 (never the case here)
664           IF ( k.EQ.2 ) CALL DIAGNOSTICS_COUNT(diagName,bi,bj,myThid)           IF ( k.EQ.2 ) CALL DIAGNOSTICS_COUNT(diagName,bi,bj,myThid)
665    #ifdef ALLOW_LAYERS
666             CALL LAYERS_FILL_DFR( df, trIdentity, k, 1, 2,bi,bj, myThid )
667    #endif /* ALLOW_LAYERS */
668         ENDIF         ENDIF
669  #endif  #endif
670        ENDIF        ENDIF
# Line 682  coj   Add outgoing fluxes Line 689  coj   Add outgoing fluxes
689       &      +MAX(0. _d 0,fVerT(i,j,kDown)*rkSign)       &      +MAX(0. _d 0,fVerT(i,j,kDown)*rkSign)
690       &      +MAX(0. _d 0,-fVerT(i,j,kUp)*rkSign)       &      +MAX(0. _d 0,-fVerT(i,j,kUp)*rkSign)
691       &     )       &     )
692           IF ( applyAB_onTracer ) THEN           trac = localT(i,j)
            trac=TracerN(i,j,k,bi,bj)  
          ELSE  
            trac=TracAB(i,j,k,bi,bj)  
          ENDIF  
693  coj   If they would reduce tracer by a fraction of more than  coj   If they would reduce tracer by a fraction of more than
694  coj   SmolarkiewiczMaxFrac, scale them down  coj   SmolarkiewiczMaxFrac, scale them down
695           IF (outFlux.GT.0. _d 0 .AND.           IF (outFlux.GT.0. _d 0 .AND.

Legend:
Removed from v.1.63  
changed lines
  Added in v.1.66

  ViewVC Help
Powered by ViewVC 1.1.22