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 |
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) |
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, |
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 |
|
|
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, |
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 |
|
|
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), |
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 |
|
|
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 |
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. |