74 |
_RL localTijk(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
_RL localTijk(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr) |
75 |
CEOP |
CEOP |
76 |
|
|
77 |
IF (Nr.LE.1) RETURN |
C-- no need to solve anything with only 1 level: |
78 |
|
IF (Nr.GT.1) THEN |
79 |
|
|
80 |
C-- Initialise |
C-- Initialise |
81 |
iMin = 1 |
iMin = 1 |
124 |
DO k=2,Nr |
DO k=2,Nr |
125 |
DO j=jMin,jMax |
DO j=jMin,jMax |
126 |
DO i=iMin,iMax |
DO i=iMin,iMax |
127 |
IF (maskC(i,j,k-1,bi,bj).EQ.1.) |
b5d(i,j,k) = -dTtracerLev(k)*maskC(i,j,k-1,bi,bj) |
|
& b5d(i,j,k) = -dTtracerLev(1) |
|
128 |
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
129 |
& *kappaRX(i,j, k )*recip_drC( k ) |
& *kappaRX(i,j, k )*recip_drC( k ) |
130 |
ENDDO |
ENDDO |
134 |
DO k=1,Nr-1 |
DO k=1,Nr-1 |
135 |
DO j=jMin,jMax |
DO j=jMin,jMax |
136 |
DO i=iMin,iMax |
DO i=iMin,iMax |
137 |
IF (maskC(i,j,k+1,bi,bj).EQ.1.) |
d5d(i,j,k) = -dTtracerLev(k)*maskC(i,j,k+1,bi,bj) |
|
& d5d(i,j,k) = -dTtracerLev(1) |
|
138 |
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k) |
139 |
& *KappaRX(i,j,k+1)*recip_drC(k+1) |
& *KappaRX(i,j,k+1)*recip_drC(k+1) |
140 |
ENDDO |
ENDDO |
213 |
IF ( advectionScheme.EQ.ENUM_CENTERED_2ND ) THEN |
IF ( advectionScheme.EQ.ENUM_CENTERED_2ND ) THEN |
214 |
diagonalNumber = 3 |
diagonalNumber = 3 |
215 |
CALL GAD_C2_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax, |
CALL GAD_C2_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax, |
216 |
I dTtracerLev(1), rTrans, |
I dTtracerLev, rTrans, |
217 |
U b5d, c5d, d5d, |
U b5d, c5d, d5d, |
218 |
I myThid) |
I myThid) |
219 |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN |
220 |
diagonalNumber = 3 |
diagonalNumber = 3 |
221 |
CALL GAD_FLUXLIMIT_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax, |
CALL GAD_FLUXLIMIT_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax, |
222 |
I dTtracerLev(1), rTrans, localTijk, |
I dTtracerLev, rTrans, localTijk, |
223 |
U b5d, c5d, d5d, |
U b5d, c5d, d5d, |
224 |
I myThid) |
I myThid) |
225 |
ELSEIF (advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
ELSEIF (advectionScheme.EQ.ENUM_UPWIND_3RD .OR. |
226 |
& advectionScheme.EQ.ENUM_CENTERED_4TH) THEN |
& advectionScheme.EQ.ENUM_CENTERED_4TH) THEN |
227 |
diagonalNumber = 5 |
diagonalNumber = 5 |
228 |
CALL GAD_U3C4_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax, |
CALL GAD_U3C4_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax, |
229 |
I advectionScheme, dTtracerLev(1), rTrans, |
I advectionScheme, dTtracerLev, rTrans, |
230 |
U a5d, b5d, c5d, d5d, e5d, |
U a5d, b5d, c5d, d5d, e5d, |
231 |
I myThid) |
I myThid) |
232 |
ELSE |
ELSE |
265 |
STOP 'GAD_IMPLICIT_R: no solver available' |
STOP 'GAD_IMPLICIT_R: no solver available' |
266 |
ENDIF |
ENDIF |
267 |
|
|
268 |
|
C-- end if Nr > 1 |
269 |
|
ENDIF |
270 |
|
|
271 |
RETURN |
RETURN |
272 |
END |
END |