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

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

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

revision 1.3 by jmc, Sat Dec 4 00:22:25 2004 UTC revision 1.4 by jmc, Sat Dec 4 18:50:34 2004 UTC
# Line 51  C myThid          :: thread number Line 51  C myThid          :: thread number
51        INTEGER bi,bj,k        INTEGER bi,bj,k
52        INTEGER iMin,iMax,jMin,jMax        INTEGER iMin,iMax,jMin,jMax
53        INTEGER advectionScheme        INTEGER advectionScheme
54        _RL deltaTarg        _RL deltaTarg(Nr)
55        _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
56        _RL a5d   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL a5d   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
57        _RL b5d   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)        _RL b5d   (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
# Line 73  C rUpwind         :: upwind   contributi Line 73  C rUpwind         :: upwind   contributi
73        _RL mskM, mskP, maskM2, maskP1        _RL mskM, mskP, maskM2, maskP1
74  CEOP  CEOP
75    
76        IF ( k.GT.Nr .OR. k.LT.2 ) RETURN  C--   process interior interface only:
77          IF ( k.GT.1 .AND. k.LE.Nr ) THEN
78    
79        km2=MAX(1,k-2)        km2=MAX(1,k-2)
80        kp1=MIN(Nr,k+1)        kp1=MIN(Nr,k+1)
# Line 87  CEOP Line 88  CEOP
88  C--    Add centered & upwind contributions  C--    Add centered & upwind contributions
89         DO j=jMin,jMax         DO j=jMin,jMax
90           DO i=iMin,iMax           DO i=iMin,iMax
91             rCenter= 0.5 _d 0 *deltaTarg*rTrans(i,j)             rCenter= 0.5 _d 0 *rTrans(i,j)*recip_rA(i,j,bi,bj)*rkFac
      &                        *recip_rA(i,j,bi,bj)*rkFac  
92             mskM   = maskC(i,j,km2,bi,bj)*maskM2             mskM   = maskC(i,j,km2,bi,bj)*maskM2
93             mskP   = maskC(i,j,kp1,bi,bj)*maskP1             mskP   = maskC(i,j,kp1,bi,bj)*maskP1
94             rC4km  = oneSixth*rCenter*mskM             rC4km  = oneSixth*rCenter*mskM
# Line 105  C--    Add centered & upwind contributio Line 105  C--    Add centered & upwind contributio
105             ENDIF             ENDIF
106             a5d(i,j,k)   = a5d(i,j,k)             a5d(i,j,k)   = a5d(i,j,k)
107       &                  - (rC4km - rU3km)       &                  - (rC4km - rU3km)
108         &                   *deltaTarg(k)
109       &                   *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)       &                   *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
110             b5d(i,j,k)   = b5d(i,j,k)             b5d(i,j,k)   = b5d(i,j,k)
111       &                  + (rCenter + rC4km - rUpwind - rU3km)       &                  + (rCenter + rC4km - rUpwind - rU3km)
112         &                   *deltaTarg(k)
113       &                   *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)       &                   *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
114             c5d(i,j,k)   = c5d(i,j,k)             c5d(i,j,k)   = c5d(i,j,k)
115       &                  + (rCenter + rC4kp + rUpwind + rU3kp)       &                  + (rCenter + rC4kp + rUpwind + rU3kp)
116         &                   *deltaTarg(k)
117       &                    *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)       &                    *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
118             d5d(i,j,k)   = d5d(i,j,k)             d5d(i,j,k)   = d5d(i,j,k)
119       &                  - (rC4kp + rU3kp)       &                  - (rC4kp + rU3kp)
120         &                   *deltaTarg(k)
121       &                   *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)       &                   *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
122             b5d(i,j,k-1) = b5d(i,j,k-1)             b5d(i,j,k-1) = b5d(i,j,k-1)
123       &                  + (rC4km - rU3km)       &                  + (rC4km - rU3km)
124         &                   *deltaTarg(k-1)
125       &                   *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)       &                   *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
126             c5d(i,j,k-1) = c5d(i,j,k-1)             c5d(i,j,k-1) = c5d(i,j,k-1)
127       &                  - (rCenter + rC4km - rUpwind - rU3km)       &                  - (rCenter + rC4km - rUpwind - rU3km)
128         &                   *deltaTarg(k-1)
129       &                   *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)       &                   *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
130             d5d(i,j,k-1) = d5d(i,j,k-1)             d5d(i,j,k-1) = d5d(i,j,k-1)
131       &                  - (rCenter + rC4kp + rUpwind + rU3kp)       &                  - (rCenter + rC4kp + rUpwind + rU3kp)
132         &                   *deltaTarg(k-1)
133       &                   *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)       &                   *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
134             e5d(i,j,k-1) = e5d(i,j,k-1)             e5d(i,j,k-1) = e5d(i,j,k-1)
135       &                  + (rC4kp + rU3kp)       &                  + (rC4kp + rU3kp)
136         &                   *deltaTarg(k-1)
137       &                   *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)       &                   *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
138           ENDDO           ENDDO
139         ENDDO         ENDDO
140    
141    C--   process interior interface only: end
142          ENDIF
143    
144        RETURN        RETURN
145        END        END

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.22