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

Diff of /MITgcm_contrib/dgoldberg/streamice/streamice_advect_thickness_y.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.3 by dgoldberg, Fri May 10 18:38:07 2013 UTC
# Line 36  C     LOCAL VARIABLES Line 36  C     LOCAL VARIABLES
36        INTEGER i, j, bi, bj, Gi, Gj, k        INTEGER i, j, bi, bj, Gi, Gj, k
37        _RL vface, phi        _RL vface, phi
38        _RL stencil (-1:1)        _RL stencil (-1:1)
39        LOGICAL H0_valid  ! there are valid cells to calculate a        LOGICAL H0_valid(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
40                            ! there are valid cells to calculate a
41                          ! slope-limited 2nd order flux                          ! slope-limited 2nd order flux
42        _RL SLOPE_LIMITER        _RL SLOPE_LIMITER
43        external SLOPE_LIMITER        external SLOPE_LIMITER
44    
45        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
46         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
47            DO j=1-oly,sNy+oly
48             DO i=1-olx,sNx+olx
49              H0_valid(i,j,bi,bj)=.false.
50             ENDDO
51            ENDDO
52           ENDDO
53          ENDDO
54    
55          DO bj=myByLo(myThid),myByHi(myThid)
56           DO bi=myBxLo(myThid),myBxHi(myThid)
57          DO j=1-1,sNy+2          DO j=1-1,sNy+2
58           Gj = (myYGlobalLo-1)+(bj-1)*sNy+j           Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
59           DO i=1-2,sNx+2           DO i=1-2,sNx+2
# Line 67  C         Y DIRECTION Line 78  C         Y DIRECTION
78                 stencil (k) = h(i,j+k-1,bi,bj)                 stencil (k) = h(i,j+k-1,bi,bj)
79                ENDDO                ENDDO
80                IF ((STREAMICE_hmask(i,j,bi,bj).eq.1.0) .and.                IF ((STREAMICE_hmask(i,j,bi,bj).eq.1.0) .and.
81       &            (STREAMICE_hmask(i,j-2,bi,bj).eq.1.0)) H0_valid=.true.       &            (STREAMICE_hmask(i,j-2,bi,bj).eq.1.0))
82         &             H0_valid(i,j,bi,bj)=.true.
83                            
84                IF ((Gj.eq.1).and.(STREAMICE_hmask(i,j-1,bi,bj).eq.3.0))                IF ((STREAMICE_hmask(i,j-1,bi,bj).eq.3.0))
85       &         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
86                 hflux_y (i,j,bi,bj) = h(i,j-1,bi,bj) * vface                 hflux_y (i,j,bi,bj) = h(i,j-1,bi,bj) * vface
87                ELSEIF (H0_valid) THEN  !               PRINT *, "BOUNDARY FLUX UP", hflux_y (i,j,bi,bj),
88    !     &          h(i,j-1,bi,bj),vface
89                  ELSEIF (H0_valid(i,j,bi,bj)) THEN
90                 phi = SLOPE_LIMITER (                 phi = SLOPE_LIMITER (
91       &          stencil(0)-stencil(-1),       &          stencil(0)-stencil(-1),
92       &          stencil(1)-stencil(0))       &          stencil(1)-stencil(0))
# Line 86  C         Y DIRECTION Line 100  C         Y DIRECTION
100                 stencil (k) = h(i,j-k,bi,bj)                 stencil (k) = h(i,j-k,bi,bj)
101                ENDDO                ENDDO
102                IF ((STREAMICE_hmask(i,j-1,bi,bj).eq.1.0) .and.                IF ((STREAMICE_hmask(i,j-1,bi,bj).eq.1.0) .and.
103       &            (STREAMICE_hmask(i,j+1,bi,bj).eq.1.0)) H0_valid=.true.       &            (STREAMICE_hmask(i,j+1,bi,bj).eq.1.0))
104         &             H0_valid(i,j,bi,bj)=.true.
105    
106                IF ((Gj.eq.Ny).and.(STREAMICE_hmask(i,j+1,bi,bj).eq.3.0))                IF ((STREAMICE_hmask(i,j,bi,bj).eq.3.0))
107       &         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
108                 hflux_y (i,j,bi,bj) = h(i,j+1,bi,bj) * vface                 hflux_y (i,j,bi,bj) = h(i,j,bi,bj) * vface
109                ELSEIF (H0_valid) THEN  !               PRINT *, "BOUNDARY FLUX DOWN", hflux_y (i,j,bi,bj),
110    !     &          h(i,j,bi,bj),vface
111                  ELSEIF (H0_valid(i,j,bi,bj)) THEN
112                 phi = SLOPE_LIMITER (                 phi = SLOPE_LIMITER (
113       &          stencil(0)-stencil(-1),       &          stencil(0)-stencil(-1),
114       &          stencil(1)-stencil(0))       &          stencil(1)-stencil(0))

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

  ViewVC Help
Powered by ViewVC 1.1.22