11 |
SUBROUTINE GAD_ADVECTION( |
SUBROUTINE GAD_ADVECTION( |
12 |
I implicitAdvection, advectionScheme, vertAdvecScheme, |
I implicitAdvection, advectionScheme, vertAdvecScheme, |
13 |
I trIdentity, deltaTLev, |
I trIdentity, deltaTLev, |
14 |
I uVel, vVel, wVel, tracer, |
I uFld, vFld, wFld, tracer, |
15 |
O gTracer, |
O gTracer, |
16 |
I bi,bj, myTime,myIter,myThid) |
I bi,bj, myTime,myIter,myThid) |
17 |
|
|
58 |
C advectionScheme :: advection scheme to use (Horizontal plane) |
C advectionScheme :: advection scheme to use (Horizontal plane) |
59 |
C vertAdvecScheme :: advection scheme to use (vertical direction) |
C vertAdvecScheme :: advection scheme to use (vertical direction) |
60 |
C trIdentity :: tracer identifier |
C trIdentity :: tracer identifier |
61 |
C uVel :: velocity, zonal component |
C uFld :: Advection velocity field, zonal component |
62 |
C vVel :: velocity, meridional component |
C vFld :: Advection velocity field, meridional component |
63 |
C wVel :: velocity, vertical component |
C wFld :: Advection velocity field, vertical component |
64 |
C tracer :: tracer field |
C tracer :: tracer field |
65 |
C bi,bj :: tile indices |
C bi,bj :: tile indices |
66 |
C myTime :: current time |
C myTime :: current time |
70 |
INTEGER advectionScheme, vertAdvecScheme |
INTEGER advectionScheme, vertAdvecScheme |
71 |
INTEGER trIdentity |
INTEGER trIdentity |
72 |
_RL deltaTLev(Nr) |
_RL deltaTLev(Nr) |
73 |
_RL uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
_RL uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
74 |
_RL vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
_RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
75 |
_RL wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
_RL wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
76 |
_RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
_RL tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy) |
77 |
INTEGER bi,bj |
INTEGER bi,bj |
78 |
_RL myTime |
_RL myTime |
100 |
C i,j,k :: loop indices |
C i,j,k :: loop indices |
101 |
C kUp :: index into 2 1/2D array, toggles between 1 and 2 |
C kUp :: index into 2 1/2D array, toggles between 1 and 2 |
102 |
C kDown :: index into 2 1/2D array, toggles between 2 and 1 |
C kDown :: index into 2 1/2D array, toggles between 2 and 1 |
|
C kp1 :: =k+1 for k<Nr, =Nr for k=Nr |
|
103 |
C xA,yA :: areas of X and Y face of tracer cells |
C xA,yA :: areas of X and Y face of tracer cells |
|
C uFld,vFld :: 2-D local copy of horizontal velocity, U,V components |
|
|
C wFld :: 2-D local copy of vertical velocity |
|
104 |
C uTrans,vTrans :: 2-D arrays of volume transports at U,V points |
C uTrans,vTrans :: 2-D arrays of volume transports at U,V points |
105 |
C rTrans :: 2-D arrays of volume transports at W points |
C rTrans :: 2-D arrays of volume transports at W points |
106 |
C rTransKp :: vertical volume transport at interface k+1 |
C rTransKp :: vertical volume transport at interface k+1 |
128 |
INTEGER i,j,k,kUp,kDown |
INTEGER i,j,k,kUp,kDown |
129 |
_RS xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RS xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
130 |
_RS yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RS yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
_RL uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
|
_RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
|
_RL wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
131 |
_RL uTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL uTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
132 |
_RL vTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL vTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
133 |
_RL rTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL rTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
210 |
C uninitialised but inert locations. |
C uninitialised but inert locations. |
211 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
212 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
213 |
xA(i,j) = 0. _d 0 |
C- xA,yA,vFld,uTrans,vTrans are set over the full domain |
214 |
yA(i,j) = 0. _d 0 |
C => no need for extra initialisation |
215 |
uTrans(i,j) = 0. _d 0 |
c xA(i,j) = 0. _d 0 |
216 |
vTrans(i,j) = 0. _d 0 |
c yA(i,j) = 0. _d 0 |
217 |
|
c uTrans(i,j) = 0. _d 0 |
218 |
|
c vTrans(i,j) = 0. _d 0 |
219 |
|
C- rTransKp is set over the full domain: no need for extra initialisation |
220 |
|
c rTransKp(i,j)= 0. _d 0 |
221 |
|
C- rTrans and fVerT need to be initialised to zero: |
222 |
rTrans(i,j) = 0. _d 0 |
rTrans(i,j) = 0. _d 0 |
223 |
fVerT(i,j,1) = 0. _d 0 |
fVerT(i,j,1) = 0. _d 0 |
224 |
fVerT(i,j,2) = 0. _d 0 |
fVerT(i,j,2) = 0. _d 0 |
|
rTransKp(i,j)= 0. _d 0 |
|
225 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
226 |
# ifdef GAD_MULTIDIM_COMPRESSIBLE |
# ifdef GAD_MULTIDIM_COMPRESSIBLE |
227 |
localVol(i,j) = 0. _d 0 |
localVol(i,j) = 0. _d 0 |
228 |
# endif |
# endif |
229 |
localTij(i,j) = 0. _d 0 |
localTij(i,j) = 0. _d 0 |
|
wFld(i,j) = 0. _d 0 |
|
230 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
231 |
ENDDO |
ENDDO |
232 |
ENDDO |
ENDDO |
269 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
270 |
|
|
271 |
C-- Get temporary terms used by tendency routines |
C-- Get temporary terms used by tendency routines |
272 |
CALL CALC_COMMON_FACTORS ( |
DO j=1-OLy,sNy+OLy |
273 |
I uVel, vVel, |
DO i=1-OLx,sNx+OLx |
274 |
O uFld, vFld, uTrans, vTrans, xA, yA, |
xA(i,j) = _dyG(i,j,bi,bj)*deepFacC(k) |
275 |
I k,bi,bj, myThid ) |
& *drF(k)*_hFacW(i,j,k,bi,bj) |
276 |
|
yA(i,j) = _dxG(i,j,bi,bj)*deepFacC(k) |
277 |
#ifdef ALLOW_GMREDI |
& *drF(k)*_hFacS(i,j,k,bi,bj) |
278 |
C-- Residual transp = Bolus transp + Eulerian transp |
ENDDO |
279 |
IF (useGMRedi) |
ENDDO |
280 |
& CALL GMREDI_CALC_UVFLOW( |
C-- Calculate "volume transports" through tracer cell faces. |
281 |
U uFld, vFld, uTrans, vTrans, |
C anelastic: scaled by rhoFacC (~ mass transport) |
282 |
I k, bi, bj, myThid ) |
DO j=1-OLy,sNy+OLy |
283 |
#endif /* ALLOW_GMREDI */ |
DO i=1-OLx,sNx+OLx |
284 |
|
uTrans(i,j) = uFld(i,j,k)*xA(i,j)*rhoFacC(k) |
285 |
|
vTrans(i,j) = vFld(i,j,k)*yA(i,j)*rhoFacC(k) |
286 |
|
ENDDO |
287 |
|
ENDDO |
288 |
|
|
289 |
C-- Make local copy of tracer array and mask West & South |
C-- Make local copy of tracer array and mask West & South |
290 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
396 |
IF ( advectionScheme.EQ.ENUM_UPWIND_1RST |
IF ( advectionScheme.EQ.ENUM_UPWIND_1RST |
397 |
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN |
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN |
398 |
CALL GAD_DST2U1_ADV_X( bi,bj,k, advectionScheme, .TRUE., |
CALL GAD_DST2U1_ADV_X( bi,bj,k, advectionScheme, .TRUE., |
399 |
I deltaTLev(k),uTrans,uFld,localTij, |
I deltaTLev(k),uTrans,uFld(1-OLx,1-OLy,k), localTij, |
400 |
O af, myThid ) |
O af, myThid ) |
401 |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
402 |
CALL GAD_FLUXLIMIT_ADV_X( bi,bj,k, .TRUE., deltaTLev(k), |
CALL GAD_FLUXLIMIT_ADV_X( bi,bj,k, .TRUE., deltaTLev(k), |
403 |
I uTrans, uFld, maskLocW, localTij, |
I uTrans, uFld(1-OLx,1-OLy,k), maskLocW, localTij, |
404 |
O af, myThid ) |
O af, myThid ) |
405 |
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN |
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN |
406 |
CALL GAD_DST3_ADV_X( bi,bj,k, .TRUE., deltaTLev(k), |
CALL GAD_DST3_ADV_X( bi,bj,k, .TRUE., deltaTLev(k), |
407 |
I uTrans, uFld, maskLocW, localTij, |
I uTrans, uFld(1-OLx,1-OLy,k), maskLocW, localTij, |
408 |
O af, myThid ) |
O af, myThid ) |
409 |
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN |
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN |
410 |
CALL GAD_DST3FL_ADV_X( bi,bj,k, .TRUE., deltaTLev(k), |
CALL GAD_DST3FL_ADV_X( bi,bj,k, .TRUE., deltaTLev(k), |
411 |
I uTrans, uFld, maskLocW, localTij, |
I uTrans, uFld(1-OLx,1-OLy,k), maskLocW, localTij, |
412 |
O af, myThid ) |
O af, myThid ) |
413 |
#ifndef ALLOW_AUTODIFF_TAMC |
#ifndef ALLOW_AUTODIFF_TAMC |
414 |
ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN |
ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN |
415 |
CALL GAD_OS7MP_ADV_X( bi,bj,k, .TRUE., deltaTLev(k), |
CALL GAD_OS7MP_ADV_X( bi,bj,k, .TRUE., deltaTLev(k), |
416 |
I uTrans, uFld, maskLocW, localTij, |
I uTrans, uFld(1-OLx,1-OLy,k), maskLocW, localTij, |
417 |
O af, myThid ) |
O af, myThid ) |
418 |
#endif |
#endif |
419 |
ELSE |
ELSE |
420 |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with multi-dim' |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with multi-dim' |
593 |
IF ( advectionScheme.EQ.ENUM_UPWIND_1RST |
IF ( advectionScheme.EQ.ENUM_UPWIND_1RST |
594 |
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN |
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN |
595 |
CALL GAD_DST2U1_ADV_Y( bi,bj,k, advectionScheme, .TRUE., |
CALL GAD_DST2U1_ADV_Y( bi,bj,k, advectionScheme, .TRUE., |
596 |
I deltaTLev(k),vTrans,vFld,localTij, |
I deltaTLev(k),vTrans,vFld(1-OLx,1-OLy,k), localTij, |
597 |
O af, myThid ) |
O af, myThid ) |
598 |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
599 |
CALL GAD_FLUXLIMIT_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k), |
CALL GAD_FLUXLIMIT_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k), |
600 |
I vTrans, vFld, maskLocS, localTij, |
I vTrans, vFld(1-OLx,1-OLy,k), maskLocS, localTij, |
601 |
O af, myThid ) |
O af, myThid ) |
602 |
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN |
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN |
603 |
CALL GAD_DST3_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k), |
CALL GAD_DST3_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k), |
604 |
I vTrans, vFld, maskLocS, localTij, |
I vTrans, vFld(1-OLx,1-OLy,k), maskLocS, localTij, |
605 |
O af, myThid ) |
O af, myThid ) |
606 |
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN |
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN |
607 |
CALL GAD_DST3FL_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k), |
CALL GAD_DST3FL_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k), |
608 |
I vTrans, vFld, maskLocS, localTij, |
I vTrans, vFld(1-OLx,1-OLy,k), maskLocS, localTij, |
609 |
O af, myThid ) |
O af, myThid ) |
610 |
#ifndef ALLOW_AUTODIFF_TAMC |
#ifndef ALLOW_AUTODIFF_TAMC |
611 |
ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN |
ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN |
612 |
CALL GAD_OS7MP_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k), |
CALL GAD_OS7MP_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k), |
613 |
I vTrans, vFld, maskLocS, localTij, |
I vTrans, vFld(1-OLx,1-OLy,k), maskLocS, localTij, |
614 |
O af, myThid ) |
O af, myThid ) |
615 |
#endif |
#endif |
616 |
ELSE |
ELSE |
617 |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim' |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim' |
805 |
C-- kDown Cycles through 2,1 to point to w-layer below |
C-- kDown Cycles through 2,1 to point to w-layer below |
806 |
kUp = 1+MOD(k+1,2) |
kUp = 1+MOD(k+1,2) |
807 |
kDown= 1+MOD(k,2) |
kDown= 1+MOD(k,2) |
|
c kp1=min(Nr,k+1) |
|
808 |
kp1Msk=1. |
kp1Msk=1. |
809 |
if (k.EQ.Nr) kp1Msk=0. |
IF (k.EQ.Nr) kp1Msk=0. |
810 |
|
|
811 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
812 |
CADJ STORE rtrans(:,:) = |
CADJ STORE rtrans(:,:) = |
813 |
CADJ & comlev1_bibj_k_gad, key=kkey, kind=isbyte |
CADJ & comlev1_bibj_k_gad, key=kkey, kind=isbyte |
|
cphCADJ STORE wFld(:,:) = |
|
|
cphCADJ & comlev1_bibj_k_gad, key=kkey, kind=isbyte |
|
814 |
#endif |
#endif |
815 |
|
|
816 |
C-- Compute Vertical transport |
C-- Compute Vertical transport |
823 |
IF ( k.EQ.1 ) THEN |
IF ( k.EQ.1 ) THEN |
824 |
#endif |
#endif |
825 |
|
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
|
|
cphmultiCADJ STORE wFld(:,:) = |
|
|
cphmultiCADJ & comlev1_bibj_k_gad, key=kkey, kind=isbyte |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
|
|
|
|
826 |
C- Surface interface : |
C- Surface interface : |
827 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
828 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
829 |
rTransKp(i,j) = kp1Msk*rTrans(i,j) |
rTransKp(i,j) = kp1Msk*rTrans(i,j) |
|
wFld(i,j) = 0. |
|
830 |
rTrans(i,j) = 0. |
rTrans(i,j) = 0. |
831 |
fVerT(i,j,kUp) = 0. |
fVerT(i,j,kUp) = 0. |
832 |
ENDDO |
ENDDO |
834 |
|
|
835 |
ELSE |
ELSE |
836 |
|
|
|
#ifdef ALLOW_AUTODIFF_TAMC |
|
|
cphmultiCADJ STORE wFld(:,:) = |
|
|
cphmultiCADJ & comlev1_bibj_k_gad, key=kkey, kind=isbyte |
|
|
#endif /* ALLOW_AUTODIFF_TAMC */ |
|
|
|
|
837 |
C- Interior interface : |
C- Interior interface : |
838 |
DO j=1-OLy,sNy+OLy |
DO j=1-OLy,sNy+OLy |
839 |
DO i=1-OLx,sNx+OLx |
DO i=1-OLx,sNx+OLx |
840 |
rTransKp(i,j) = kp1Msk*rTrans(i,j) |
rTransKp(i,j) = kp1Msk*rTrans(i,j) |
841 |
wFld(i,j) = wVel(i,j,k,bi,bj) |
rTrans(i,j) = wFld(i,j,k)*rA(i,j,bi,bj) |
|
rTrans(i,j) = wVel(i,j,k,bi,bj)*rA(i,j,bi,bj) |
|
842 |
& *deepFac2F(k)*rhoFacF(k) |
& *deepFac2F(k)*rhoFacF(k) |
843 |
& *maskC(i,j,k-1,bi,bj) |
& *maskC(i,j,k-1,bi,bj) |
844 |
fVerT(i,j,kUp) = 0. |
fVerT(i,j,kUp) = 0. |
845 |
ENDDO |
ENDDO |
846 |
ENDDO |
ENDDO |
847 |
|
|
|
#ifdef ALLOW_GMREDI |
|
|
C-- Residual transp = Bolus transp + Eulerian transp |
|
|
IF (useGMRedi) |
|
|
& CALL GMREDI_CALC_WFLOW( |
|
|
U wFld, rTrans, |
|
|
I k, bi, bj, myThid ) |
|
|
#endif /* ALLOW_GMREDI */ |
|
|
|
|
848 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
849 |
cphmultiCADJ STORE localT3d(:,:,k) |
cphmultiCADJ STORE localT3d(:,:,k) |
850 |
cphmultiCADJ & = comlev1_bibj_k_gad, key=kkey, kind=isbyte |
cphmultiCADJ & = comlev1_bibj_k_gad, key=kkey, kind=isbyte |
856 |
IF ( vertAdvecScheme.EQ.ENUM_UPWIND_1RST |
IF ( vertAdvecScheme.EQ.ENUM_UPWIND_1RST |
857 |
& .OR. vertAdvecScheme.EQ.ENUM_DST2 ) THEN |
& .OR. vertAdvecScheme.EQ.ENUM_DST2 ) THEN |
858 |
CALL GAD_DST2U1_ADV_R( bi,bj,k, advectionScheme, |
CALL GAD_DST2U1_ADV_R( bi,bj,k, advectionScheme, |
859 |
I deltaTLev(k),rTrans,wFld,localT3d, |
I deltaTLev(k),rTrans,wFld(1-OLx,1-OLy,k),localT3d, |
860 |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
861 |
ELSEIF( vertAdvecScheme.EQ.ENUM_FLUX_LIMIT) THEN |
ELSEIF( vertAdvecScheme.EQ.ENUM_FLUX_LIMIT) THEN |
862 |
CALL GAD_FLUXLIMIT_ADV_R( bi,bj,k, deltaTLev(k), |
CALL GAD_FLUXLIMIT_ADV_R( bi,bj,k, deltaTLev(k), |
863 |
I rTrans, wFld, localT3d, |
I rTrans, wFld(1-OLx,1-OLy,k), localT3d, |
864 |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
865 |
ELSEIF( vertAdvecScheme.EQ.ENUM_DST3 ) THEN |
ELSEIF( vertAdvecScheme.EQ.ENUM_DST3 ) THEN |
866 |
CALL GAD_DST3_ADV_R( bi,bj,k, deltaTLev(k), |
CALL GAD_DST3_ADV_R( bi,bj,k, deltaTLev(k), |
867 |
I rTrans, wFld, localT3d, |
I rTrans, wFld(1-OLx,1-OLy,k), localT3d, |
868 |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
869 |
ELSEIF( vertAdvecScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN |
ELSEIF( vertAdvecScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN |
870 |
CALL GAD_DST3FL_ADV_R( bi,bj,k, deltaTLev(k), |
CALL GAD_DST3FL_ADV_R( bi,bj,k, deltaTLev(k), |
871 |
I rTrans, wFld, localT3d, |
I rTrans, wFld(1-OLx,1-OLy,k), localT3d, |
872 |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
873 |
#ifndef ALLOW_AUTODIFF_TAMC |
#ifndef ALLOW_AUTODIFF_TAMC |
874 |
ELSEIF (vertAdvecScheme.EQ.ENUM_OS7MP ) THEN |
ELSEIF (vertAdvecScheme.EQ.ENUM_OS7MP ) THEN |
875 |
CALL GAD_OS7MP_ADV_R( bi,bj,k, deltaTLev(k), |
CALL GAD_OS7MP_ADV_R( bi,bj,k, deltaTLev(k), |
876 |
I rTrans, wFld, localT3d, |
I rTrans, wFld(1-OLx,1-OLy,k), localT3d, |
877 |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
O fVerT(1-OLx,1-OLy,kUp), myThid ) |
878 |
#endif |
#endif |
879 |
ELSE |
ELSE |
880 |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim' |
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim' |