/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_implicit_r.F
ViewVC logotype

Diff of /MITgcm/pkg/generic_advdiff/gad_implicit_r.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.13 by jmc, Sun Jun 18 23:27:44 2006 UTC revision 1.14 by jahn, Fri Jun 26 23:10:09 2009 UTC
# Line 8  C     !ROUTINE: GAD_IMPLICIT_R Line 8  C     !ROUTINE: GAD_IMPLICIT_R
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE GAD_IMPLICIT_R(        SUBROUTINE GAD_IMPLICIT_R(
10       I      implicitAdvection, advectionScheme, tracerIdentity,       I      implicitAdvection, advectionScheme, tracerIdentity,
11         I      deltaTLev,
12       I      kappaRX, wVel, tracer,       I      kappaRX, wVel, tracer,
13       U      gTracer,       U      gTracer,
14       I      bi, bj, myTime, myIter, myThid )       I      bi, bj, myTime, myIter, myThid )
# Line 39  C myThid            :: thread number Line 40  C myThid            :: thread number
40        LOGICAL implicitAdvection        LOGICAL implicitAdvection
41        INTEGER advectionScheme        INTEGER advectionScheme
42        INTEGER tracerIdentity        INTEGER tracerIdentity
43          _RL     deltaTLev(Nr)
44        _RL kappaRX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)        _RL kappaRX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
45        _RL wVel   (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)        _RL wVel   (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
46        _RL tracer (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)        _RL tracer (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
# Line 133  C-     1rst lower diagonal : Line 135  C-     1rst lower diagonal :
135         DO k=2,Nr         DO k=2,Nr
136          DO j=jMin,jMax          DO j=jMin,jMax
137           DO i=iMin,iMax           DO i=iMin,iMax
138             b5d(i,j,k) = -dTtracerLev(k)*maskC(i,j,k-1,bi,bj)             b5d(i,j,k) = -deltaTLev(k)*maskC(i,j,k-1,bi,bj)
139       &                  *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k)       &                  *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
140       &                  *kappaRX(i,j, k )*recip_drC( k )       &                  *kappaRX(i,j, k )*recip_drC( k )
141           ENDDO           ENDDO
# Line 143  C-     1rst upper diagonal : Line 145  C-     1rst upper diagonal :
145         DO k=1,Nr-1         DO k=1,Nr-1
146          DO j=jMin,jMax          DO j=jMin,jMax
147           DO i=iMin,iMax           DO i=iMin,iMax
148             d5d(i,j,k) = -dTtracerLev(k)*maskC(i,j,k+1,bi,bj)             d5d(i,j,k) = -deltaTLev(k)*maskC(i,j,k+1,bi,bj)
149       &                 *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k)       &                 *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
150       &                 *KappaRX(i,j,k+1)*recip_drC(k+1)       &                 *KappaRX(i,j,k+1)*recip_drC(k+1)
151           ENDDO           ENDDO
# Line 206  C--   Residual transp = Bolus transp + E Line 208  C--   Residual transp = Bolus transp + E
208            DO i=iMin,iMax            DO i=iMin,iMax
209  c          localTijk(i,j,k)     = gTracer(i,j,k,bi,bj)  c          localTijk(i,j,k)     = gTracer(i,j,k,bi,bj)
210             gTracer(i,j,k,bi,bj) = gTracer(i,j,k,bi,bj)             gTracer(i,j,k,bi,bj) = gTracer(i,j,k,bi,bj)
211       &      + dTtracerLev(1)*recip_rA(i,j,bi,bj)       &      + deltaTLev(1)*recip_rA(i,j,bi,bj)
212       &       *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k)       &       *_recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
213       &       *tracer(i,j,k,bi,bj)*(rTransKp1(i,j)-rTrans(i,j))*rkSign       &       *tracer(i,j,k,bi,bj)*(rTransKp1(i,j)-rTrans(i,j))*rkSign
214            ENDDO            ENDDO
# Line 224  C- a hack to prevent Water-Vapor vert.tr Line 226  C- a hack to prevent Water-Vapor vert.tr
226           IF ( advectionScheme.EQ.ENUM_CENTERED_2ND ) THEN           IF ( advectionScheme.EQ.ENUM_CENTERED_2ND ) THEN
227            diagonalNumber = 3            diagonalNumber = 3
228            CALL GAD_C2_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,            CALL GAD_C2_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
229       I                        dTtracerLev, rTrans,       I                        deltaTLev, rTrans,
230       U                        b5d, c5d, d5d,       U                        b5d, c5d, d5d,
231       I                        myThid )       I                        myThid )
232           ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_1RST           ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_1RST
233       &       .OR. advectionScheme.EQ.ENUM_DST2 ) THEN       &       .OR. advectionScheme.EQ.ENUM_DST2 ) THEN
234            diagonalNumber = 3            diagonalNumber = 3
235            CALL GAD_DST2U1_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,            CALL GAD_DST2U1_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
236       I                        advectionScheme, dTtracerLev, rTrans,       I                        advectionScheme, deltaTLev, rTrans,
237       U                        b5d, c5d, d5d,       U                        b5d, c5d, d5d,
238       I                        myThid )       I                        myThid )
239           ELSEIF ( advectionScheme.EQ.ENUM_FLUX_LIMIT ) THEN           ELSEIF ( advectionScheme.EQ.ENUM_FLUX_LIMIT ) THEN
240            diagonalNumber = 3            diagonalNumber = 3
241            CALL GAD_FLUXLIMIT_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,            CALL GAD_FLUXLIMIT_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
242       I                        dTtracerLev, rTrans, localTijk,       I                        deltaTLev, rTrans, localTijk,
243       U                        b5d, c5d, d5d,       U                        b5d, c5d, d5d,
244       I                        myThid )       I                        myThid )
245           ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_3RD           ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_3RD
# Line 245  C- a hack to prevent Water-Vapor vert.tr Line 247  C- a hack to prevent Water-Vapor vert.tr
247       &       .OR. advectionScheme.EQ.ENUM_DST3 ) THEN       &       .OR. advectionScheme.EQ.ENUM_DST3 ) THEN
248            diagonalNumber = 5            diagonalNumber = 5
249            CALL GAD_U3C4_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,            CALL GAD_U3C4_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
250       I                        advectionScheme, dTtracerLev, rTrans,       I                        advectionScheme, deltaTLev, rTrans,
251       U                        a5d, b5d, c5d, d5d, e5d,       U                        a5d, b5d, c5d, d5d, e5d,
252       I                        myThid )       I                        myThid )
253           ELSEIF ( advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN           ELSEIF ( advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
254            diagonalNumber = 5            diagonalNumber = 5
255            CALL GAD_DST3FL_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,            CALL GAD_DST3FL_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
256       I                        dTtracerLev, rTrans, localTijk,       I                        deltaTLev, rTrans, localTijk,
257       U                        a5d, b5d, c5d, d5d, e5d,       U                        a5d, b5d, c5d, d5d, e5d,
258       I                        myThid )       I                        myThid )
259           ELSE           ELSE

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.22