47 |
C I, J - Loop counters |
C I, J - Loop counters |
48 |
INTEGER I, J |
INTEGER I, J |
49 |
INTEGER km1,kp1 |
INTEGER km1,kp1 |
50 |
_RL uTrans, maskp1, dTdz |
_RL maskp1 |
51 |
|
#ifdef GM_EXTRA_DIAGONAL |
52 |
|
_RL dTdz (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
53 |
|
#endif |
54 |
|
#ifdef GM_BOLUS_ADVEC |
55 |
|
_RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
56 |
|
#endif |
57 |
|
|
58 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
59 |
act0 = tracerIdentity - 1 |
act0 = tracerIdentity - 1 |
114 |
|
|
115 |
DO j=jMin,jMax |
DO j=jMin,jMax |
116 |
DO i=iMin,iMax |
DO i=iMin,iMax |
117 |
|
C- Vertical gradients interpolated to U points |
118 |
C- Vertical gradients interpolated to U points |
dTdz(i,j) = op5*( |
|
dTdz = op5*( |
|
119 |
& +op5*recip_drC(k)* |
& +op5*recip_drC(k)* |
120 |
& ( maskC(i-1,j,k,bi,bj)* |
& ( maskC(i-1,j,k,bi,bj)* |
121 |
& (Tracer(i-1,j,km1,bi,bj)-Tracer(i-1,j,k,bi,bj)) |
& (Tracer(i-1,j,km1,bi,bj)-Tracer(i-1,j,k,bi,bj)) |
129 |
& (Tracer( i ,j,k,bi,bj)-Tracer( i ,j,kp1,bi,bj)) |
& (Tracer( i ,j,k,bi,bj)-Tracer( i ,j,kp1,bi,bj)) |
130 |
& ) ) |
& ) ) |
131 |
|
|
|
C- Off-diagonal components of horizontal flux |
|
|
df(i,j) = df(i,j) - xA(i,j)*Kuz(i,j,k,bi,bj)*dTdz |
|
132 |
|
|
133 |
ENDDO |
ENDDO |
134 |
ENDDO |
ENDDO |
135 |
|
#ifdef GM_AUTODIFF_EXCESSIVE_STORE |
136 |
|
CADJ STORE dtdz(:,:) = |
137 |
|
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
138 |
|
#endif |
139 |
|
DO j=jMin,jMax |
140 |
|
DO i=iMin,iMax |
141 |
|
C- Off-diagonal components of horizontal flux |
142 |
|
df(i,j) = df(i,j) - xA(i,j)*Kuz(i,j,k,bi,bj)*dTdz(i,j) |
143 |
|
ENDDO |
144 |
|
ENDDO |
145 |
ENDIF |
ENDIF |
146 |
#endif /* GM_EXTRA_DIAGONAL */ |
#endif /* GM_EXTRA_DIAGONAL */ |
147 |
|
|
152 |
IF (k.GE.Nr) maskp1 = 0. |
IF (k.GE.Nr) maskp1 = 0. |
153 |
DO j=jMin,jMax |
DO j=jMin,jMax |
154 |
DO i=iMin,iMax |
DO i=iMin,iMax |
155 |
uTrans = dyG(i,j,bi,bj)*( GM_PsiX(i,j,kp1,bi,bj)*maskp1 |
uTrans(i,j) = dyG(i,j,bi,bj)*( GM_PsiX(i,j,kp1,bi,bj)*maskp1 |
156 |
& -GM_PsiX(i,j,k,bi,bj) ) |
& -GM_PsiX(i,j,k,bi,bj) ) |
157 |
& *maskW(i,j,k,bi,bj) |
& *maskW(i,j,k,bi,bj) |
158 |
|
ENDDO |
159 |
|
ENDDO |
160 |
|
#ifdef GM_AUTODIFF_EXCESSIVE_STORE |
161 |
|
CADJ STORE utrans(:,:) = |
162 |
|
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
163 |
|
#endif |
164 |
|
DO j=jMin,jMax |
165 |
|
DO i=iMin,iMax |
166 |
df(i,j) = df(i,j) |
df(i,j) = df(i,j) |
167 |
& +uTrans*op5*(Tracer(i,j,k,bi,bj)+Tracer(i-1,j,k,bi,bj)) |
& +uTrans(i,j)*op5*(Tracer(i,j,k,bi,bj)+Tracer(i-1,j,k,bi,bj)) |
168 |
ENDDO |
ENDDO |
169 |
ENDDO |
ENDDO |
170 |
ENDIF |
ENDIF |