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

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

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

revision 1.2 by dgoldberg, Tue Sep 4 21:11:44 2012 UTC revision 1.7 by dgoldberg, Wed Aug 27 19:29:14 2014 UTC
# Line 9  CBOP Line 9  CBOP
9        SUBROUTINE STREAMICE_VELMASK_UPD ( myThid )        SUBROUTINE STREAMICE_VELMASK_UPD ( myThid )
10    
11  C     /============================================================\  C     /============================================================\
12  C     | SUBROUTINE                                                 |    C     | SUBROUTINE                                                 |
13  C     | o                                                          |  C     | o                                                          |
14  C     |============================================================|  C     |============================================================|
15  C     |                                                            |  C     |                                                            |
# Line 22  C     === Global variables === Line 22  C     === Global variables ===
22  #include "EEPARAMS.h"  #include "EEPARAMS.h"
23  #include "PARAMS.h"  #include "PARAMS.h"
24  #include "STREAMICE.h"  #include "STREAMICE.h"
25    !#ifdef ALLOW_PETSC
26    !# ifdef ALLOW_USE_MPI
27    !#  include "EESUPPORT.h"
28    !# endif
29    !#endif
30  ! #include "STREAMICE_ADV.h"  ! #include "STREAMICE_ADV.h"
31    
32    #ifdef ALLOW_AUTODIFF_TAMC
33    # include "tamc.h"
34    #endif
35    
36        INTEGER myThid        INTEGER myThid
37    
38  #ifdef ALLOW_STREAMICE  #ifdef ALLOW_STREAMICE
39    
40        INTEGER i, j, bi, bj, ki, kj        INTEGER i, j, bi, bj, ki, kj
41        INTEGER maskFlag        INTEGER maskFlag, myThidCopy
42          CHARACTER*(MAX_LEN_MBUF) msgBuf
43    #ifdef ALLOW_USE_MPI
44          integer mpiRC, mpiMyWid
45    #endif
46    #ifdef ALLOW_PETSC
47          _RS DoFCount
48          integer n_dofs_proc_loc (0:nPx*nPy-1)
49          integer n_dofs_cum_sum (0:nPx*nPy-1)
50    #endif
51    
52        _EXCH_XY_RL( H_streamice, myThid )        _EXCH_XY_RL( H_streamice, myThid )
53        _EXCH_XY_RL( area_shelf_streamice, myThid )        _EXCH_XY_RL( area_shelf_streamice, myThid )
54        _EXCH_XY_RL( STREAMICE_hmask, myThid )        _EXCH_XY_RS( STREAMICE_hmask, myThid )
55    
56        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
57         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
58          DO j=1-OLy,sNy+OLy          DO j=1-OLy,sNy+OLy
59           DO i=1-OLx,sNx+OLx           DO i=1-OLx,sNx+OLx
60            STREAMICE_umask(i,j,bi,bj) = 0. _d 0            STREAMICE_umask(i,j,bi,bj) = -1. _d 0
61            STREAMICE_vmask(i,j,bi,bj) = 0. _d 0            STREAMICE_vmask(i,j,bi,bj) = -1. _d 0
62            STREAMICE_ufacemask(i,j,bi,bj) = 0. _d 0            STREAMICE_ufacemask(i,j,bi,bj) = 0. _d 0
63            STREAMICE_vfacemask(i,j,bi,bj) = 0. _d 0            STREAMICE_vfacemask(i,j,bi,bj) = 0. _d 0
64           ENDDO           ENDDO
# Line 52  C     === Global variables === Line 70  C     === Global variables ===
70         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
71          DO j=0,sNy+1          DO j=0,sNy+1
72           DO i=0,sNx+1           DO i=0,sNx+1
73            IF (STREAMICE_hmask(i,j,bi,bj) .eq. 1) THEN            IF (STREAMICE_hmask(i,j,bi,bj) .eq. 1.0) THEN
74    
75             DO kj=0,1             DO kj=0,1
76              DO ki=0,1              DO ki=0,1
77               STREAMICE_umask (i+ki,j+kj,bi,bj) = 1.0               if (STREAMICE_umask(i+ki,j+kj,bi,bj).eq.-1.0) then
78               STREAMICE_vmask (i+ki,j+kj,bi,bj) = 1.0                STREAMICE_umask (i+ki,j+kj,bi,bj) = 1.0
79                 endif
80                 if (STREAMICE_vmask(i+ki,j+kj,bi,bj).eq.-1.0) then
81                  STREAMICE_vmask (i+ki,j+kj,bi,bj) = 1.0
82                 endif
83              ENDDO              ENDDO
84             ENDDO             ENDDO
85    
# Line 65  C     === Global variables === Line 87  C     === Global variables ===
87              maskFlag=INT(STREAMICE_ufacemask_bdry(i+ki,j,bi,bj))              maskFlag=INT(STREAMICE_ufacemask_bdry(i+ki,j,bi,bj))
88               IF (maskFlag.EQ.3) THEN               IF (maskFlag.EQ.3) THEN
89                DO kj=0,1                DO kj=0,1
90                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 3.0                 if (STREAMICE_umask(i+ki,j+kj,bi,bj).ne.0.0) then
91                 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0                  STREAMICE_umask(i+ki,j+kj,bi,bj) = 3.0
92                   endif
93                   if(STREAMICE_vmask(i+ki,j+kj,bi,bj).ne.0.0) then
94                    STREAMICE_vmask(i+ki,j+kj,bi,bj) = 3.0
95                   endif
96                ENDDO                ENDDO
97                STREAMICE_ufacemask(i+ki,j,bi,bj) = 3.0                STREAMICE_ufacemask(i+ki,j,bi,bj) = 3.0
98               ELSE IF (maskFlag.EQ.2) THEN               ELSE IF (maskFlag.EQ.2) THEN
99                DO kj=0,1                !DO kj=0,1
100                 STREAMICE_ufacemask(i+ki,j+kj,bi,bj) = 2.0                 STREAMICE_ufacemask(i+ki,j,bi,bj) = 2.0
101                ENDDO                !ENDDO
102               ELSE IF (maskFlag.EQ.4) THEN               ELSE IF (maskFlag.EQ.4) THEN
103                DO kj=0,1                DO kj=0,1
104                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
105                 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0                             STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
106                ENDDO                ENDDO
107                STREAMICE_ufacemask(i+ki,j,bi,bj) = 4.0                STREAMICE_ufacemask(i+ki,j,bi,bj) = 4.0
108               ELSE IF (maskFlag.EQ.0) THEN               ELSE IF (maskFlag.EQ.0) THEN
109                DO kj=0,1                DO kj=0,1
110                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
111                 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0                             STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
112                ENDDO                ENDDO
113                STREAMICE_ufacemask(i+ki,j,bi,bj) = 0.0                STREAMICE_ufacemask(i+ki,j,bi,bj) = 0.0
114               ELSE IF (maskFlag.EQ.1) THEN               ELSE IF (maskFlag.EQ.1) THEN
# Line 96  C     === Global variables === Line 122  C     === Global variables ===
122              maskFlag=INT(STREAMICE_vfacemask_bdry(i,j+kj,bi,bj))              maskFlag=INT(STREAMICE_vfacemask_bdry(i,j+kj,bi,bj))
123              IF (maskFlag.EQ.3) THEN              IF (maskFlag.EQ.3) THEN
124                DO ki=0,1                DO ki=0,1
125                 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 3.0                 if(STREAMICE_vmask(i+ki,j+kj,bi,bj).ne.0.0) then
126                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0                  STREAMICE_vmask(i+ki,j+kj,bi,bj) = 3.0
127                   endif
128                   if(STREAMICE_umask(i+ki,j+kj,bi,bj).ne.0.0) then
129                    STREAMICE_umask(i+ki,j+kj,bi,bj) = 3.0
130                   endif
131                ENDDO                ENDDO
132                STREAMICE_vfacemask(i+ki,j,bi,bj) = 3.0                STREAMICE_vfacemask(i,j+kj,bi,bj) = 3.0
133             ELSE IF (maskFlag.EQ.2) THEN             ELSE IF (maskFlag.EQ.2) THEN
134                DO ki=0,1                !DO ki=0,1
135                 STREAMICE_vfacemask(i+ki,j+kj,bi,bj) = 2.0                 STREAMICE_vfacemask(i,j+kj,bi,bj) = 2.0
136                ENDDO                !ENDDO
137             ELSE IF (maskFlag.EQ.4) THEN             ELSE IF (maskFlag.EQ.4) THEN
138                DO ki=0,1                DO ki=0,1
139                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
140                 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0                             STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
141                ENDDO                ENDDO
142                STREAMICE_vfacemask(i+ki,j,bi,bj) = 4.0                STREAMICE_vfacemask(i,j+kj,bi,bj) = 4.0
143             ELSE IF (maskFlag.EQ.0) THEN             ELSE IF (maskFlag.EQ.0) THEN
144                DO ki=0,1                DO ki=0,1
145                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0                 STREAMICE_umask(i+ki,j+kj,bi,bj) = 0.0
146                 STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0                             STREAMICE_vmask(i+ki,j+kj,bi,bj) = 0.0
147                ENDDO                ENDDO
148                STREAMICE_vfacemask(i+ki,j,bi,bj) = 0.0                STREAMICE_vfacemask(i+ki,j,bi,bj) = 0.0
149             ELSE IF (maskFlag.EQ.1) THEN             ELSE IF (maskFlag.EQ.1) THEN
# Line 161  C     === Global variables === Line 191  C     === Global variables ===
191         ENDDO         ENDDO
192        ENDDO        ENDDO
193    
194        _EXCH_XY_RL( STREAMICE_ufacemask, myThid )  !$TAF STORE streamice_umask = comlev1, key=ikey_dynamics
195        _EXCH_XY_RL( STREAMICE_vfacemask, myThid )  !$TAF STORE streamice_vmask = comlev1, key=ikey_dynamics
196        _EXCH_XY_RL( STREAMICE_umask, myThid )  
197        _EXCH_XY_RL( STREAMICE_vmask, myThid )        DO bj=myByLo(myThid),myByHi(myThid)
198           DO bi=myBxLo(myThid),myBxHi(myThid)
199            DO j=1,sNy
200             DO i=1,sNx
201              IF(streamice_umask(i,j,bi,bj).eq.-1.0) THEN
202               streamice_umask(i,j,bi,bj)=0.0
203              ENDIF
204              IF(streamice_vmask(i,j,bi,bj).eq.-1.0) THEN
205               streamice_vmask(i,j,bi,bj)=0.0
206              ENDIF
207             ENDDO
208            ENDDO
209           ENDDO
210          ENDDO
211    
212          
213    
214          _EXCH_XY_RS( STREAMICE_ufacemask, myThid )
215          _EXCH_XY_RS( STREAMICE_vfacemask, myThid )
216          _EXCH_XY_RS( STREAMICE_umask, myThid )
217          _EXCH_XY_RS( STREAMICE_vmask, myThid )
218    
219  !       CALL WRITE_FULLARRAY_RL ("umask",STREAMICE_umask,  !       CALL WRITE_FULLARRAY_RL ("umask",STREAMICE_umask,
220  !      c   1,0,0,1,0,myThid)  !      c   1,0,0,1,0,myThid)
221  !       CALL WRITE_FLD_XY_RL ("umask2","",STREAMICE_umask,0,myThid)  !      CALL WRITE_FLD_XY_RL ("umask","",STREAMICE_umask,0,myThid)
222    !      CALL WRITE_FLD_XY_RL ("vmask","",STREAMICE_vmask,0,myThid)
223    !      CALL WRITE_FLD_XY_RL ("ufacemask","",STREAMICE_ufacemask,0,myThid)
224    !      CALL WRITE_FLD_XY_RL ("vfacemask","",STREAMICE_vfacemask,0,myThid)
225    !      CALL WRITE_FLD_XY_RL ("ufacemaskbdry","",
226    !     &  STREAMICE_ufacemask_bdry,0,myThid)
227    !      CALL WRITE_FLD_XY_RL ("vfacemaskbdry","",
228    !     &  STREAMICE_vfacemask_bdry,0,myThid)
229    
230    #ifdef ALLOW_PETSC
231          myThidCopy = myThid
232          call streamice_petsc_numerate (myThidCopy)
233    #endif
234    
235    
236  #endif  #endif

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

  ViewVC Help
Powered by ViewVC 1.1.22