/[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.6 by jmc, Sat Dec 4 00:22:25 2004 UTC revision 1.7 by jmc, Sat Dec 4 18:50:34 2004 UTC
# Line 74  C errCode   :: > 0 if singular matrix Line 74  C errCode   :: > 0 if singular matrix
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
# Line 123  C-     1rst lower diagonal : Line 124  C-     1rst lower diagonal :
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
# Line 134  C-     1rst upper diagonal : Line 134  C-     1rst upper diagonal :
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
# Line 214  C- a hack to prevent Water-Vapor vert.tr Line 213  C- a hack to prevent Water-Vapor vert.tr
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
# Line 266  C--   Solve penta-diagonal system : Line 265  C--   Solve penta-diagonal system :
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

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.22