/[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.4 by dgoldberg, Mon Feb 11 00:57:31 2013 UTC
# Line 29  CEOP Line 29  CEOP
29    
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, k
33          INTEGER maskFlag, hmaskFlag
34        _RL x, y        _RL x, y
35          _RS dummyRS
36        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
37    
38  #ifdef ALLOW_STREAMICE  #ifdef ALLOW_STREAMICE
39    
40    #ifdef STREAMICE_GEOM_FILE_SETUP
41          _RS temp_ufacemask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
42          _RS temp_vfacemask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43          _RS temp_hmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
44    #endif
45    
46  #ifdef ALLOW_MNC  #ifdef ALLOW_MNC
47    
48        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 57  C        CALL STREAMICE_MNC_INIT( myThid
57        ENDIF        ENDIF
58  #endif  #endif
59    
60    !     CALVING MASK - LIMIT OF ICE SHELF FRONT ADVANCE
61    
62        IF ( STREAMICE_calve_to_mask ) THEN        IF ( STREAMICE_calve_to_mask ) THEN
63         IF ( STREAMICEcalveMaskFile .NE. ' ') THEN         IF ( STREAMICEcalveMaskFile .NE. ' ') THEN
64          _BARRIER          _BARRIER
# Line 78  C       The 0 is the "iteration" argumen Line 88  C       The 0 is the "iteration" argumen
88         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
89       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
90        ENDIF        ENDIF
91    
92    !    READ IN FILES FOR BOUNDARY MASKS AND DIRICH VALUES
93    #ifdef STREAMICE_GEOM_FILE_SETUP
94    
95          IF ( STREAMICEuFaceBdryFile .NE. ' ') THEN
96            _BARRIER
97           CALL READ_FLD_XY_RS ( STREAMICEuFaceBdryFile, ' ',
98         &   temp_ufacemask, 0, myThid )
99          ELSE
100           WRITE(msgBuf,'(A)') 'U FACE MASK - NOT SET'
101           CALL PRINT_ERROR( msgBuf, myThid)
102          ENDIF
103    
104          IF ( STREAMICEvFaceBdryFile .NE. ' ') THEN
105            _BARRIER
106           CALL READ_FLD_XY_RS ( STREAMICEvFaceBdryFile, ' ',
107         &   temp_vfacemask, 0, myThid )
108          ELSE
109           WRITE(msgBuf,'(A)') 'V FACE MASK - NOT SET'
110           CALL PRINT_ERROR( msgBuf, myThid)
111          ENDIF
112    
113          _EXCH_XY_RS(temp_ufacemask,myThid)
114          _EXCH_XY_RS(temp_ufacemask,myThid)
115    
116          IF ( STREAMICEuDirichValsFile .NE. ' ') THEN
117            _BARRIER
118           CALL READ_FLD_XY_RL ( STREAMICEuDirichValsFile, ' ',
119         &   u_bdry_values_SI, 0, myThid )
120          ELSE
121           WRITE(msgBuf,'(A)') 'U DIRICH VALS - NOT SET'
122           CALL PRINT_ERROR( msgBuf, myThid)
123          ENDIF
124    
125          IF ( STREAMICEvDirichValsFile .NE. ' ') THEN
126            _BARRIER
127           CALL READ_FLD_XY_RL ( STREAMICEvDirichValsFile, ' ',
128         &   v_bdry_values_SI, 0, myThid )
129          ELSE
130           WRITE(msgBuf,'(A)') 'V DIRICH VALS - NOT SET'
131           CALL PRINT_ERROR( msgBuf, myThid)
132          ENDIF
133    
134    ! with this setup hmask is initialized here rather than in init_varia,
135    ! because it is needed to set no-flow boundaries, even though the field
136    ! could potentially change due to ice shelf front advance and calving
137    ! (POTENTIAL PROBLEMS WITH TAF?????? USE TEMP FIELD HERE AND SET HMASK IN INIT_VARIA??)
138    
139          IF ( STREAMICEhMaskFile .NE. ' ') THEN
140            _BARRIER
141           CALL READ_FLD_XY_RS ( STREAMICEhMaskFile, ' ',
142         &   temp_hmask, 0, myThid )
143          ELSE
144           WRITE(msgBuf,'(A)') 'H MASK FILE - NOT SET'
145           CALL PRINT_ERROR( msgBuf, myThid)
146          ENDIF
147          
148          _EXCH_XY_RS(temp_hmask,myThid)
149    
150    
151    #ifdef ALLOW_CTRL
152          DO bj = myByLo(myThid), myByHi(myThid)
153           DO bi = myBxLo(myThid), myBxHi(myThid)
154            DO j=1,sNy
155             DO i=1,sNx
156              IF (temp_hmask(i,j,bi,bj) .eq. 1.0) THEN
157               DO k=1,Nr
158               STREAMICE_ctrl_mask(i,j,k,bi,bj) = 1. _d 0
159               ENDDO
160              ENDIF
161             ENDDO
162            ENDDO
163           ENDDO
164          ENDDO
165    #endif
166    
167    #endif
168    
169    
170  !!!!!!!!!!!!!!!!!!!!!!!!!  !!!!!!!!!!!!!!!!!!!!!!!!!
171    
172  C- fill in the overlap (+ BARRIER):  C- fill in the overlap (+ BARRIER):
# Line 101  C         INIT VALUES FOR METRIC TERMS Line 190  C         INIT VALUES FOR METRIC TERMS
190    
191  C         INIT BDRY CONDITIONS  C         INIT BDRY CONDITIONS
192    
193    #ifndef STREAMICE_GEOM_FILE_SETUP
194    
195            Gi = (myXGlobalLo-1)+(bi-1)*sNx+i            Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
196            Gj = (myYGlobalLo-1)+(bj-1)*sNy+j            Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
197            x = xC(i,j,bi,bj)            x = xC(i,j,bi,bj)
# Line 212  C         INITIALIZE BOUNDARY CONDS AT N Line 303  C         INITIALIZE BOUNDARY CONDS AT N
303              STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0              STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
304             ENDIF             ENDIF
305            ENDIF            ENDIF
306    
307    #else
308    ! BOUNDARIES CONFIGURED FROM FILES
309    
310    
311              IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
312         &        temp_hmask(i,j,bi,bj).eq.0.0 .or.
313         &        temp_hmask(i-1,j,bi,bj).eq.1.0) THEN
314    
315              ! WEST FACE OF CELL
316               maskFlag=INT(temp_ufacemask(i,j,bi,bj))
317               IF (maskFlag.eq.2) THEN
318                STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
319               ELSEIF (maskFlag.eq.3) THEN
320                STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
321               ELSEIF (maskFlag.eq.1) THEN
322                STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
323               ELSEIF ((maskFlag.eq.0) .or.
324         &      ((maskFlag.eq.-1) .and.
325         &       (temp_hmask(i-1,j,bi,bj).eq.-1.0))) THEN
326                STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
327               ELSE
328                STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
329               ENDIF
330    
331              ENDIF
332    
333              IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
334         &        temp_hmask(i,j,bi,bj).eq.0.0) THEN
335    
336               ! EAST FACE OF CELL
337               maskFlag=INT(temp_ufacemask(i+1,j,bi,bj))
338               IF (maskFlag.eq.2) THEN
339                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 2.0
340               ELSEIF (maskFlag.eq.3) THEN
341                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 3.0
342               ELSEIF (maskFlag.eq.1) THEN
343                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 1.0
344               ELSEIF ((maskFlag.eq.0) .or.
345         &      ((maskFlag.eq.-1) .and.
346         &       (temp_hmask(i+1,j,bi,bj).eq.-1.0))) THEN
347                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 0.0
348               ELSE
349                STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = -1.0
350               ENDIF
351    
352              ENDIF
353    
354              IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
355         &        temp_hmask(i,j,bi,bj).eq.0.0 .or.
356         &        temp_hmask(i,j-1,bi,bj).eq.1.0) THEN
357    
358               ! SOUTH FACE OF CELL
359               maskFlag=INT(temp_vfacemask(i,j,bi,bj))
360               IF (maskFlag.eq.2) THEN
361                STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
362               ELSEIF (maskFlag.eq.3) THEN
363                STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
364               ELSEIF (maskFlag.eq.1) THEN
365                STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
366               ELSEIF ((maskFlag.eq.0) .or.
367         &      ((maskFlag.eq.-1) .and.
368         &       (temp_hmask(i,j-1,bi,bj).eq.-1.0))) THEN
369                STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
370               ELSE
371                STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
372               ENDIF
373    
374              ENDIF
375    
376              IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
377         &        temp_hmask(i,j,bi,bj).eq.0.0) THEN
378    
379    
380               ! NORTH FACE OF CELL
381               maskFlag=INT(temp_vfacemask(i,j+1,bi,bj))
382               IF (maskFlag.eq.2) THEN
383                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 2.0
384               ELSEIF (maskFlag.eq.3) THEN
385                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 3.0
386               ELSEIF (maskFlag.eq.1) THEN
387                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 1.0
388               ELSEIF ((maskFlag.eq.0) .or.
389         &      ((maskFlag.eq.-1) .and.
390         &       (temp_hmask(i,j+1,bi,bj).eq.-1.0))) THEN
391                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 0.0
392               ELSE
393                STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = -1.0
394               ENDIF
395    
396              ENDIF ! hmask==1 or hmask==0
397    
398    #endif
399                                        
400           ENDDO           ENDDO
401          ENDDO          ENDDO
402         ENDDO         ENDDO
403        ENDDO        ENDDO
404    
405    #ifdef ALLOW_CTRL
406    !      _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
407          CALL ACTIVE_WRITE_GEN_RS( 'maskCtrlL', STREAMICE_ctrl_mask,
408         &  'XY', Nr, 1, .FALSE., 0, mythid, dummyRS )
409    #endif
410    
411    
412        _EXCH_XY_RL(k1AtC_str, myThid )        _EXCH_XY_RL(k1AtC_str, myThid )
413        _EXCH_XY_RL(k2AtC_str, myThid )        _EXCH_XY_RL(k2AtC_str, myThid )
414        _EXCH_XY_RL(STREAMICE_ufacemask_bdry, myThid )        _EXCH_XY_RL(STREAMICE_ufacemask_bdry, myThid )
# Line 231  C         INITIALIZE BOUNDARY CONDS AT N Line 422  C         INITIALIZE BOUNDARY CONDS AT N
422        Xquad (2) = .5 * (1.+1./sqrt(3.))        Xquad (2) = .5 * (1.+1./sqrt(3.))
423    
424        CALL STREAMICE_INIT_PHI( myThid )        CALL STREAMICE_INIT_PHI( myThid )
425          PRINT *, "GOT HERE END INIT FIXED"
426                
427    
428  #endif  #endif

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

  ViewVC Help
Powered by ViewVC 1.1.22