/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/streamice_advect_thickness_x.F
ViewVC logotype

Diff of /MITgcm_contrib/dgoldberg/streamice/streamice_advect_thickness_x.F

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

revision 1.1 by heimbach, Wed May 2 02:36:01 2012 UTC revision 1.2 by heimbach, Thu May 17 21:30:17 2012 UTC
# Line 35  C     LOCAL VARIABLES Line 35  C     LOCAL VARIABLES
35        INTEGER i, j, bi, bj, Gi, Gj, k        INTEGER i, j, bi, bj, Gi, Gj, k
36        _RL uface, phi        _RL uface, phi
37        _RL stencil (-1:1)        _RL stencil (-1:1)
38        LOGICAL H0_valid  ! there are valid cells to calculate a        LOGICAL H0_valid(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
39                            ! there are valid cells to calculate a
40                          ! slope-limited 2nd order flux                          ! slope-limited 2nd order flux
41        _RL SLOPE_LIMITER        _RL SLOPE_LIMITER
42        _RL total_vol_out        _RL total_vol_out
43        external SLOPE_LIMITER        external SLOPE_LIMITER
44    
45         total_vol_out = 0.0        total_vol_out = 0.0
46    
47        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
48         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
49          DO j=1-3,sNy+3          DO j=1-oly,sNy+oly
50             DO i=1-olx,sNx+olx
51              H0_valid(i,j,bi,bj)=.false.
52             ENDDO
53            ENDDO
54           ENDDO
55          ENDDO
56    
57          DO bj=myByLo(myThid),myByHi(myThid)
58           DO bi=myBxLo(myThid),myBxHi(myThid)
59            DO j=1-2,sNy+2
60           Gj = (myYGlobalLo-1)+(bj-1)*sNy+j           Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
61           IF ((Gj .ge. 1) .and. (Gj .le. Ny)) THEN           IF ((Gj .ge. 1) .and. (Gj .le. Ny)) THEN
62            DO i=1-2,sNx+3            DO i=1-1,sNx+2
63  C        THESE ARRAY BOUNDS INSURE THAT AFTER THIS STEP,  C        THESE ARRAY BOUNDS INSURE THAT AFTER THIS STEP,
64  C        VALUES WILL BE RELIABLE 2 GRID CELLS OUT IN THE  C        VALUES WILL BE RELIABLE 2 GRID CELLS OUT IN THE
65  C        X DIRECTION AND 3 CELLS OUT IN THE Y DIR  C        X DIRECTION AND 3 CELLS OUT IN THE Y DIR
# Line 71  C        X DIRECTION AND 3 CELLS OUT IN Line 82  C        X DIRECTION AND 3 CELLS OUT IN
82                 stencil (k) = h(i+k-1,j,bi,bj)                 stencil (k) = h(i+k-1,j,bi,bj)
83                ENDDO                ENDDO
84                IF ((STREAMICE_hmask(i,j,bi,bj).eq.1.0) .and.                IF ((STREAMICE_hmask(i,j,bi,bj).eq.1.0) .and.
85       &            (STREAMICE_hmask(i-2,j,bi,bj).eq.1.0)) H0_valid=.true.       &            (STREAMICE_hmask(i-2,j,bi,bj).eq.1.0))
86         &             H0_valid(i,j,bi,bj)=.true.
87                            
88                IF ((Gi.eq.1).and.(STREAMICE_hmask(i-1,j,bi,bj).eq.3.0))                IF ((Gi.eq.1).and.(STREAMICE_hmask(i-1,j,bi,bj).eq.3.0))
89       &         THEN  ! we are at western bdry and there is a thick. bdry cond       &         THEN  ! we are at western bdry and there is a thick. bdry cond
90                 hflux_x (i,j,bi,bj) = h(i-1,j,bi,bj) * uface                 hflux_x (i,j,bi,bj) = h(i-1,j,bi,bj) * uface
91                ELSEIF (H0_valid) THEN                ELSEIF (H0_valid(i,j,bi,bj)) THEN
92                 phi = SLOPE_LIMITER (                 phi = SLOPE_LIMITER (
93       &          stencil(0)-stencil(-1),       &          stencil(0)-stencil(-1),
94       &          stencil(1)-stencil(0))       &          stencil(1)-stencil(0))
# Line 92  C        X DIRECTION AND 3 CELLS OUT IN Line 104  C        X DIRECTION AND 3 CELLS OUT IN
104                 stencil (k) = h(i-k,j,bi,bj)                 stencil (k) = h(i-k,j,bi,bj)
105                ENDDO                ENDDO
106                IF ((STREAMICE_hmask(i-1,j,bi,bj).eq.1.0) .and.                IF ((STREAMICE_hmask(i-1,j,bi,bj).eq.1.0) .and.
107       &            (STREAMICE_hmask(i+1,j,bi,bj).eq.1.0)) H0_valid=.true.       &            (STREAMICE_hmask(i+1,j,bi,bj).eq.1.0))
108         &             H0_valid(i,j,bi,bj)=.true.
109    
110                IF ((Gi.eq.Nx).and.(STREAMICE_hmask(i+1,j,bi,bj).eq.3.0))                IF ((Gi.eq.Nx).and.(STREAMICE_hmask(i+1,j,bi,bj).eq.3.0))
111       &         THEN  ! we are at western bdry and there is a thick. bdry cond       &         THEN  ! we are at western bdry and there is a thick. bdry cond
112                 hflux_x (i,j,bi,bj) = h(i+1,j,bi,bj) * uface                 hflux_x (i,j,bi,bj) = h(i+1,j,bi,bj) * uface
113                ELSEIF (H0_valid) THEN                ELSEIF (H0_valid(i,j,bi,bj)) THEN
114                 phi = SLOPE_LIMITER (                 phi = SLOPE_LIMITER (
115       &          stencil(0)-stencil(-1),       &          stencil(0)-stencil(-1),
116       &          stencil(1)-stencil(0))       &          stencil(1)-stencil(0))

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.22