24 |
#include "GMREDI.h" |
#include "GMREDI.h" |
25 |
|
|
26 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
27 |
#include "tamc.h" |
# include "tamc.h" |
28 |
#include "tamc_keys.h" |
# include "tamc_keys.h" |
29 |
|
# ifdef ALLOW_PTRACERS |
30 |
|
# include "PTRACERS_SIZE.h" |
31 |
|
# endif |
32 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
33 |
|
|
34 |
C == Routine arguments == |
C == Routine arguments == |
57 |
#ifdef GM_BOLUS_ADVEC |
#ifdef GM_BOLUS_ADVEC |
58 |
_RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
59 |
#endif |
#endif |
60 |
|
#ifdef ALLOW_DIAGNOSTICS |
61 |
|
LOGICAL DIAGNOSTICS_IS_ON |
62 |
|
EXTERNAL DIAGNOSTICS_IS_ON |
63 |
|
_RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
64 |
|
#endif |
65 |
|
|
66 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
67 |
act0 = tracerIdentity - 1 |
act0 = tracerIdentity - 1 |
79 |
& + act3*max0*max1*max2 |
& + act3*max0*max1*max2 |
80 |
& + act4*max0*max1*max2*max3 |
& + act4*max0*max1*max2*max3 |
81 |
kkey = (igadkey-1)*Nr + k |
kkey = (igadkey-1)*Nr + k |
82 |
if (tracerIdentity.GT.maxpass) |
if (tracerIdentity.GT.maxpass) then |
83 |
& STOP 'maxpass seems smaller than tracerIdentity' |
print *, 'ph-pass gmredi_xtrans ', maxpass, tracerIdentity |
84 |
|
STOP 'maxpass seems smaller than tracerIdentity' |
85 |
|
endif |
86 |
#endif /* ALLOW_AUTODIFF_TAMC */ |
#endif /* ALLOW_AUTODIFF_TAMC */ |
87 |
|
|
88 |
IF (useGMRedi) THEN |
IF (useGMRedi) THEN |
106 |
#ifdef GM_NON_UNITY_DIAGONAL |
#ifdef GM_NON_UNITY_DIAGONAL |
107 |
& *Kux(i,j,k,bi,bj) |
& *Kux(i,j,k,bi,bj) |
108 |
#else |
#else |
109 |
& *(GM_isopycK |
#ifdef ALLOW_KAPREDI_CONTROL |
110 |
|
& *(kapredi(i,j,k,bi,bj) |
111 |
|
#else |
112 |
|
& *(GM_isopycK |
113 |
|
#endif |
114 |
#ifdef GM_VISBECK_VARIABLE_K |
#ifdef GM_VISBECK_VARIABLE_K |
115 |
& +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj)) |
& +op5*(VisbeckK(i,j,bi,bj)+VisbeckK(i-1,j,bi,bj)) |
116 |
#endif |
#endif |
182 |
ENDDO |
ENDDO |
183 |
ENDDO |
ENDDO |
184 |
ENDIF |
ENDIF |
185 |
|
|
186 |
|
#ifdef ALLOW_DIAGNOSTICS |
187 |
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
188 |
|
IF ( useDiagnostics |
189 |
|
& .AND. DIAGNOSTICS_IS_ON('GM_ubT ', myThid ) |
190 |
|
& .AND. tracerIdentity .EQ. 1) THEN |
191 |
|
kp1 = MIN(k+1,Nr) |
192 |
|
maskp1 = 1. |
193 |
|
IF (k.GE.Nr) maskp1 = 0. |
194 |
|
DO j=jMin,jMax |
195 |
|
DO i=iMin,iMax |
196 |
|
tmp1k(i,j) = dyG(i,j,bi,bj)*( GM_PsiX(i,j,kp1,bi,bj)*maskp1 |
197 |
|
& -GM_PsiX(i,j,k,bi,bj) ) |
198 |
|
& *maskW(i,j,k,bi,bj) |
199 |
|
& *op5*(Tracer(i,j,k,bi,bj)+Tracer(i-1,j,k,bi,bj)) |
200 |
|
ENDDO |
201 |
|
ENDDO |
202 |
|
CALL DIAGNOSTICS_FILL(tmp1k,'GM_ubT ', k,1,2,bi,bj,myThid) |
203 |
|
|
204 |
|
ENDIF |
205 |
|
#endif /* ALLOW_DIAGNOSTICS */ |
206 |
|
|
207 |
#endif /* GM_BOLUS_ADVEC */ |
#endif /* GM_BOLUS_ADVEC */ |
208 |
|
|
209 |
ENDIF |
ENDIF |