/[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.5 by dgoldberg, Fri May 10 18:38:07 2013 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 ((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  !               PRINT *, "BOUNDARY FLUX RIGHT", hflux_x (i,j,bi,bj),
92    !     &          h(i-1,j,bi,bj),uface,i,j
93                  ELSEIF (H0_valid(i,j,bi,bj)) THEN
94                 phi = SLOPE_LIMITER (                 phi = SLOPE_LIMITER (
95       &          stencil(0)-stencil(-1),       &          stencil(0)-stencil(-1),
96       &          stencil(1)-stencil(0))       &          stencil(1)-stencil(0))
# Line 92  C        X DIRECTION AND 3 CELLS OUT IN Line 106  C        X DIRECTION AND 3 CELLS OUT IN
106                 stencil (k) = h(i-k,j,bi,bj)                 stencil (k) = h(i-k,j,bi,bj)
107                ENDDO                ENDDO
108                IF ((STREAMICE_hmask(i-1,j,bi,bj).eq.1.0) .and.                IF ((STREAMICE_hmask(i-1,j,bi,bj).eq.1.0) .and.
109       &            (STREAMICE_hmask(i+1,j,bi,bj).eq.1.0)) H0_valid=.true.       &            (STREAMICE_hmask(i+1,j,bi,bj).eq.1.0))
110         &             H0_valid(i,j,bi,bj)=.true.
111    
112                IF ((Gi.eq.Nx).and.(STREAMICE_hmask(i+1,j,bi,bj).eq.3.0))                IF ((STREAMICE_hmask(i,j,bi,bj).eq.3.0))
113       &         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
114                 hflux_x (i,j,bi,bj) = h(i+1,j,bi,bj) * uface                 hflux_x (i,j,bi,bj) = h(i,j,bi,bj) * uface
115                ELSEIF (H0_valid) THEN  !               PRINT *, "BOUNDARY FLUX LEFT", hflux_x(i,j,bi,bj),
116    !     &          h(i,j,bi,bj),uface
117                  ELSEIF (H0_valid(i,j,bi,bj)) THEN
118                 phi = SLOPE_LIMITER (                 phi = SLOPE_LIMITER (
119       &          stencil(0)-stencil(-1),       &          stencil(0)-stencil(-1),
120       &          stencil(1)-stencil(0))       &          stencil(1)-stencil(0))
# Line 111  C        X DIRECTION AND 3 CELLS OUT IN Line 128  C        X DIRECTION AND 3 CELLS OUT IN
128    
129              ENDIF              ENDIF
130    
131              if (streamice_ufacemask(i,j,bi,bj).eq.2.0) THEN  !             if (streamice_ufacemask(i,j,bi,bj).eq.2.0) THEN
132               total_vol_out = total_vol_out +  !              total_vol_out = total_vol_out +
133       &         hflux_x (i,j,bi,bj) * time_step  !      &         hflux_x (i,j,bi,bj) * time_step
134              ENDIF  !             ENDIF
135    
136             ENDIF             ENDIF
137            ENDDO            ENDDO
# Line 143  C     X-FLUXES AT CELL BOUNDARIES CALCUL Line 160  C     X-FLUXES AT CELL BOUNDARIES CALCUL
160         ENDDO         ENDDO
161        ENDDO        ENDDO
162    
163  !       PRINT *, "TOTAL VOLUME OUT: ", total_vol_out  
164                
165  #endif  #endif
166        RETURN        RETURN

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

  ViewVC Help
Powered by ViewVC 1.1.22