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

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

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

revision 1.2 by dgoldberg, Tue Sep 18 17:06:48 2012 UTC revision 1.3 by dgoldberg, Wed Jan 9 21:56:18 2013 UTC
# Line 30  CEOP Line 30  CEOP
30  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
31  C     === Local variables ===  C     === Local variables ===
32        INTEGER bi, bj, i, j, Gi, Gj, m        INTEGER bi, bj, i, j, Gi, Gj, m
33          INTEGER maskFlag, hmaskFlag
34        _RL x, y        _RL x, y
35        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
36    
37  #ifdef ALLOW_STREAMICE  #ifdef ALLOW_STREAMICE
38    
39    #ifdef STREAMICE_GEOM_FILE_SETUP
40          _RS temp_ufacemask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
41          _RS temp_vfacemask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
42          _RS temp_hmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43    #endif
44    
45  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
46    
47        IF ( useMNC .AND. (streamice_tave_mnc.OR.streamice_dump_mnc)        IF ( useMNC .AND. (streamice_tave_mnc.OR.streamice_dump_mnc)
# Line 49  C        CALL STREAMICE_MNC_INIT( myThid Line 56  C        CALL STREAMICE_MNC_INIT( myThid
56        ENDIF        ENDIF
57  #endif  #endif
58    
59    !     CALVING MASK - LIMIT OF ICE SHELF FRONT ADVANCE
60    
61        IF ( STREAMICE_calve_to_mask ) THEN        IF ( STREAMICE_calve_to_mask ) THEN
62         IF ( STREAMICEcalveMaskFile .NE. ' ') THEN         IF ( STREAMICEcalveMaskFile .NE. ' ') THEN
63          _BARRIER          _BARRIER
# Line 78  C       The 0 is the "iteration" argumen Line 87  C       The 0 is the "iteration" argumen
87         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
88       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
89        ENDIF        ENDIF
90    
91    !    READ IN FILES FOR BOUNDARY MASKS AND DIRICH VALUES
92    #ifdef STREAMICE_GEOM_FILE_SETUP
93    
94          IF ( STREAMICEuFaceBdryFile .NE. ' ') THEN
95            _BARRIER
96           CALL READ_FLD_XY_RS ( STREAMICEuFaceBdryFile, ' ',
97         &   temp_ufacemask, 0, myThid )
98          ELSE
99           WRITE(msgBuf,'(A)') 'U FACE MASK - NOT SET'
100           CALL PRINT_ERROR( msgBuf, myThid)
101          ENDIF
102    
103          IF ( STREAMICEvFaceBdryFile .NE. ' ') THEN
104            _BARRIER
105           CALL READ_FLD_XY_RS ( STREAMICEvFaceBdryFile, ' ',
106         &   temp_vfacemask, 0, myThid )
107          ELSE
108           WRITE(msgBuf,'(A)') 'V FACE MASK - NOT SET'
109           CALL PRINT_ERROR( msgBuf, myThid)
110          ENDIF
111    
112          IF ( STREAMICEuDirichValsFile .NE. ' ') THEN
113            _BARRIER
114           CALL READ_FLD_XY_RL ( STREAMICEuDirichValsFile, ' ',
115         &   u_bdry_values_SI, 0, myThid )
116          ELSE
117           WRITE(msgBuf,'(A)') 'U DIRICH VALS - NOT SET'
118           CALL PRINT_ERROR( msgBuf, myThid)
119          ENDIF
120    
121          IF ( STREAMICEvDirichValsFile .NE. ' ') THEN
122            _BARRIER
123           CALL READ_FLD_XY_RL ( STREAMICEvDirichValsFile, ' ',
124         &   v_bdry_values_SI, 0, myThid )
125          ELSE
126           WRITE(msgBuf,'(A)') 'V DIRICH VALS - NOT SET'
127           CALL PRINT_ERROR( msgBuf, myThid)
128          ENDIF
129    
130    ! with this setup hmask is initialized here rather than in init_varia,
131    ! because it is needed to set no-flow boundaries, even though the field
132    ! could potentially change due to ice shelf front advance and calving
133    ! (POTENTIAL PROBLEMS WITH TAF?????? USE TEMP FIELD HERE AND SET HMASK IN INIT_VARIA??)
134    
135          IF ( STREAMICEhMaskFile .NE. ' ') THEN
136            _BARRIER
137           CALL READ_FLD_XY_RS ( STREAMICEhMaskFile, ' ',
138         &   temp_hmask, 0, myThid )
139          ELSE
140           WRITE(msgBuf,'(A)') 'H MASK FILE - NOT SET'
141           CALL PRINT_ERROR( msgBuf, myThid)
142          ENDIF
143    
144    #endif
145    
146    
147  !!!!!!!!!!!!!!!!!!!!!!!!!  !!!!!!!!!!!!!!!!!!!!!!!!!
148    
149  C- fill in the overlap (+ BARRIER):  C- fill in the overlap (+ BARRIER):
# Line 101  C         INIT VALUES FOR METRIC TERMS Line 167  C         INIT VALUES FOR METRIC TERMS
167    
168  C         INIT BDRY CONDITIONS  C         INIT BDRY CONDITIONS
169    
170    #ifndef STREAMICE_GEOM_FILE_SETUP
171    
172            Gi = (myXGlobalLo-1)+(bi-1)*sNx+i            Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
173            Gj = (myYGlobalLo-1)+(bj-1)*sNy+j            Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
174            x = xC(i,j,bi,bj)            x = xC(i,j,bi,bj)
# Line 212  C         INITIALIZE BOUNDARY CONDS AT N Line 280  C         INITIALIZE BOUNDARY CONDS AT N
280              STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0              STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
281             ENDIF             ENDIF
282            ENDIF            ENDIF
283    
284    #else
285    ! BOUNDARIES CONFIGURED FROM FILES
286    
287              IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
288         &        temp_hmask(i,j,bi,bj).eq.0.0) THEN
289    
290              ! WEST FACE OF CELL
291               maskFlag=INT(temp_ufacemask(i,j,bi,bj))
292               IF (maskFlag.eq.2) THEN
293                STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
294               ELSEIF (maskFlag.eq.3) THEN
295                STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
296               ELSEIF (maskFlag.eq.1) THEN
297                STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
298               ELSEIF ((maskFlag.eq.0) .or.
299         &      ((maskFlag.eq.-1) .and.
300         &       (temp_hmask(i-1,j,bi,bj).eq.-1.0))) THEN
301                STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
302               ELSE
303                STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
304               ENDIF
305    
306               ! EAST FACE OF CELL
307               maskFlag=INT(temp_ufacemask(i+1,j,bi,bj))
308               IF (maskFlag.eq.2) THEN
309                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 2.0
310               ELSEIF (maskFlag.eq.3) THEN
311                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 3.0
312               ELSEIF (maskFlag.eq.1) THEN
313                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 1.0
314               ELSEIF ((maskFlag.eq.0) .or.
315         &      ((maskFlag.eq.-1) .and.
316         &       (temp_hmask(i+1,j,bi,bj).eq.-1.0))) THEN
317                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 0.0
318               ELSE
319                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = -1.0
320               ENDIF
321    
322               ! SOUTH FACE OF CELL
323               maskFlag=INT(temp_vfacemask(i,j,bi,bj))
324               IF (maskFlag.eq.2) THEN
325                STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
326               ELSEIF (maskFlag.eq.3) THEN
327                STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
328               ELSEIF (maskFlag.eq.1) THEN
329                STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
330               ELSEIF ((maskFlag.eq.0) .or.
331         &      ((maskFlag.eq.-1) .and.
332         &       (temp_hmask(i,j-1,bi,bj).eq.-1.0))) THEN
333                STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
334               ELSE
335                STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
336               ENDIF
337    
338               ! NORTH FACE OF CELL
339               maskFlag=INT(temp_vfacemask(i,j+1,bi,bj))
340               IF (maskFlag.eq.2) THEN
341                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 2.0
342               ELSEIF (maskFlag.eq.3) THEN
343                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 3.0
344               ELSEIF (maskFlag.eq.1) THEN
345                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 1.0
346               ELSEIF ((maskFlag.eq.0) .or.
347         &      ((maskFlag.eq.-1) .and.
348         &       (temp_hmask(i,j+1,bi,bj).eq.-1.0))) THEN
349                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 0.0
350               ELSE
351                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = -1.0
352               ENDIF
353    
354              ENDIF ! hmask==1 or hmask==0
355    
356    #endif
357                                        
358           ENDDO           ENDDO
359          ENDDO          ENDDO

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

  ViewVC Help
Powered by ViewVC 1.1.22