3 |
|
|
4 |
#include "GMREDI_OPTIONS.h" |
#include "GMREDI_OPTIONS.h" |
5 |
|
|
6 |
subroutine GMREDI_XTRANSPORT( |
SUBROUTINE GMREDI_XTRANSPORT( |
7 |
I iMin,iMax,jMin,jMax,bi,bj,K, |
I iMin,iMax,jMin,jMax,bi,bj,K, |
8 |
I xA,Tracer,tracerIdentity, |
I xA,Tracer,tracerIdentity, |
9 |
U df, |
U df, |
10 |
I myThid) |
I myThid) |
11 |
C /==========================================================\ |
C *==========================================================* |
12 |
C | o SUBROUTINE GMREDI_XTRANSPORT | |
C | o SUBROUTINE GMREDI_XTRANSPORT |
13 |
C | Add horizontal x transport terms from GM/Redi | |
C | Add horizontal x transport terms from GM/Redi |
14 |
C | parameterization. | |
C | parameterization. |
15 |
C |==========================================================| |
C *==========================================================* |
|
C \==========================================================/ |
|
16 |
IMPLICIT NONE |
IMPLICIT NONE |
17 |
|
|
18 |
C == GLobal variables == |
C == GLobal variables == |
48 |
C == Local variables == |
C == Local variables == |
49 |
C I, J - Loop counters |
C I, J - Loop counters |
50 |
INTEGER I, J |
INTEGER I, J |
51 |
INTEGER km1,kp1 |
#if ( defined (GM_EXTRA_DIAGONAL) || defined (GM_BOLUS_ADVEC) ) |
52 |
_RL maskp1 |
INTEGER kp1 |
53 |
|
#endif |
54 |
#ifdef GM_EXTRA_DIAGONAL |
#ifdef GM_EXTRA_DIAGONAL |
55 |
|
INTEGER km1 |
56 |
_RL dTdz (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL dTdz (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
57 |
#endif |
#endif |
58 |
#ifdef GM_BOLUS_ADVEC |
#ifdef GM_BOLUS_ADVEC |
59 |
|
_RL maskp1 |
60 |
_RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
|
#endif |
|
61 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
62 |
LOGICAL DIAGNOSTICS_IS_ON |
LOGICAL DIAGNOSTICS_IS_ON |
63 |
EXTERNAL DIAGNOSTICS_IS_ON |
EXTERNAL DIAGNOSTICS_IS_ON |
64 |
_RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
65 |
#endif |
#endif |
66 |
|
#endif /* GM_BOLUS_ADVEC */ |
67 |
|
|
68 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
69 |
act0 = tracerIdentity - 1 |
act0 = tracerIdentity - 1 |
75 |
act3 = myThid - 1 |
act3 = myThid - 1 |
76 |
max3 = nTx*nTy |
max3 = nTx*nTy |
77 |
act4 = ikey_dynamics - 1 |
act4 = ikey_dynamics - 1 |
78 |
igadkey = (act0 + 1) |
igadkey = (act0 + 1) |
79 |
& + act1*max0 |
& + act1*max0 |
80 |
& + act2*max0*max1 |
& + act2*max0*max1 |
81 |
& + act3*max0*max1*max2 |
& + act3*max0*max1*max2 |
88 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
89 |
|
|
90 |
IF (useGMRedi) THEN |
IF (useGMRedi) THEN |
91 |
|
|
92 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
93 |
# ifdef GM_NON_UNITY_DIAGONAL |
# ifdef GM_NON_UNITY_DIAGONAL |
94 |
CADJ STORE Kux(:,:,k,bi,bj) = |
CADJ STORE Kux(:,:,k,bi,bj) = |
95 |
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
96 |
# endif |
# endif |
97 |
# ifdef GM_EXTRA_DIAGONAL |
# ifdef GM_EXTRA_DIAGONAL |
143 |
& (Tracer(i-1,j,k,bi,bj)-Tracer(i-1,j,kp1,bi,bj)) |
& (Tracer(i-1,j,k,bi,bj)-Tracer(i-1,j,kp1,bi,bj)) |
144 |
& +maskC( i ,j,kp1,bi,bj)* |
& +maskC( i ,j,kp1,bi,bj)* |
145 |
& (Tracer( i ,j,k,bi,bj)-Tracer( i ,j,kp1,bi,bj)) |
& (Tracer( i ,j,k,bi,bj)-Tracer( i ,j,kp1,bi,bj)) |
146 |
& ) ) |
& ) ) |
147 |
|
|
148 |
|
|
149 |
ENDDO |
ENDDO |
150 |
ENDDO |
ENDDO |
151 |
#ifdef GM_AUTODIFF_EXCESSIVE_STORE |
#ifdef GM_AUTODIFF_EXCESSIVE_STORE |
152 |
CADJ STORE dtdz(:,:) = |
CADJ STORE dtdz(:,:) = |
153 |
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
154 |
#endif |
#endif |
155 |
DO j=jMin,jMax |
DO j=jMin,jMax |
175 |
ENDDO |
ENDDO |
176 |
ENDDO |
ENDDO |
177 |
#ifdef GM_AUTODIFF_EXCESSIVE_STORE |
#ifdef GM_AUTODIFF_EXCESSIVE_STORE |
178 |
CADJ STORE utrans(:,:) = |
CADJ STORE utrans(:,:) = |
179 |
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
180 |
#endif |
#endif |
181 |
DO j=jMin,jMax |
DO j=jMin,jMax |
186 |
ENDDO |
ENDDO |
187 |
ENDIF |
ENDIF |
188 |
|
|
|
#ifdef ALLOW_DIAGNOSTICS |
|
189 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
190 |
IF ( useDiagnostics |
|
191 |
|
#ifdef ALLOW_DIAGNOSTICS |
192 |
|
IF ( useDiagnostics |
193 |
& .AND. DIAGNOSTICS_IS_ON('GM_ubT ', myThid ) |
& .AND. DIAGNOSTICS_IS_ON('GM_ubT ', myThid ) |
194 |
& .AND. tracerIdentity .EQ. 1) THEN |
& .AND. tracerIdentity .EQ. 1) THEN |
195 |
kp1 = MIN(k+1,Nr) |
kp1 = MIN(k+1,Nr) |