46 |
C == Local variables == |
C == Local variables == |
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 vTrans, 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 vTrans(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 |
116 |
DO i=iMin,iMax |
DO i=iMin,iMax |
117 |
|
|
118 |
C- Vertical gradients interpolated to V points |
C- Vertical gradients interpolated to V points |
119 |
dTdz = op5*( |
dTdz(i,j) = op5*( |
120 |
& +op5*recip_drC(k)* |
& +op5*recip_drC(k)* |
121 |
& ( maskC(i,j-1,k,bi,bj)* |
& ( maskC(i,j-1,k,bi,bj)* |
122 |
& (Tracer(i,j-1,km1,bi,bj)-Tracer(i,j-1,k,bi,bj)) |
& (Tracer(i,j-1,km1,bi,bj)-Tracer(i,j-1,k,bi,bj)) |
129 |
& +maskC(i, j ,kp1,bi,bj)* |
& +maskC(i, j ,kp1,bi,bj)* |
130 |
& (Tracer(i, j ,k,bi,bj)-Tracer(i, j ,kp1,bi,bj)) |
& (Tracer(i, j ,k,bi,bj)-Tracer(i, j ,kp1,bi,bj)) |
131 |
& ) ) |
& ) ) |
132 |
|
ENDDO |
133 |
|
ENDDO |
134 |
|
#ifdef GM_AUTODIFF_EXCESSIVE_STORE |
135 |
|
CADJ STORE dtdz(:,:) = |
136 |
|
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte |
137 |
|
#endif |
138 |
|
DO j=jMin,jMax |
139 |
|
DO i=iMin,iMax |
140 |
C- Off-diagonal components of horizontal flux |
C- Off-diagonal components of horizontal flux |
141 |
df(i,j) = df(i,j) - yA(i,j)*Kvz(i,j,k,bi,bj)*dTdz |
df(i,j) = df(i,j) - yA(i,j)*Kvz(i,j,k,bi,bj)*dTdz(i,j) |
142 |
|
|
143 |
ENDDO |
ENDDO |
144 |
ENDDO |
ENDDO |
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 |
vTrans = dxG(i,j,bi,bj)*( GM_PsiY(i,j,kp1,bi,bj)*maskp1 |
vTrans(i,j) = dxG(i,j,bi,bj)*( GM_PsiY(i,j,kp1,bi,bj)*maskp1 |
156 |
& -GM_PsiY(i,j,k,bi,bj) ) |
& -GM_PsiY(i,j,k,bi,bj) ) |
157 |
& *maskS(i,j,k,bi,bj) |
& *maskS(i,j,k,bi,bj) |
158 |
|
ENDDO |
159 |
|
ENDDO |
160 |
|
#ifdef GM_AUTODIFF_EXCESSIVE_STORE |
161 |
|
CADJ STORE vtrans(:,:) = |
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 |
& +vTrans*op5*(Tracer(i,j,k,bi,bj)+Tracer(i,j-1,k,bi,bj)) |
& +vTrans(i,j)*op5*(Tracer(i,j,k,bi,bj)+Tracer(i,j-1,k,bi,bj)) |
168 |
ENDDO |
ENDDO |
169 |
ENDDO |
ENDDO |
170 |
ENDIF |
ENDIF |