/[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.3 by dgoldberg, Wed Jan 9 21:56:18 2013 UTC revision 1.6 by dgoldberg, Sat Jun 8 22:15:33 2013 UTC
# Line 22  C     !USES: Line 22  C     !USES:
22  #include "STREAMICE_CG.h"  #include "STREAMICE_CG.h"
23  #include "STREAMICE_BDRY.h"  #include "STREAMICE_BDRY.h"
24  #include "GRID.h"  #include "GRID.h"
25    #ifdef ALLOW_STREAMICE_FLUX_CONTROL
26    #include "STREAMICE_CTRL_FLUX.h"
27    #endif
28    
29  C     myThid ::  my Thread Id number  C     myThid ::  my Thread Id number
30        INTEGER myThid        INTEGER myThid
# Line 29  CEOP Line 32  CEOP
32    
33  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
34  C     === Local variables ===  C     === Local variables ===
35        INTEGER bi, bj, i, j, Gi, Gj, m        INTEGER bi, bj, i, j, Gi, Gj, m, k
36        INTEGER maskFlag, hmaskFlag        INTEGER maskFlag, hmaskFlag
37        _RL x, y        _RL x, y
38          _RS dummyRS
39        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
40    
41  #ifdef ALLOW_STREAMICE  #ifdef ALLOW_STREAMICE
# Line 88  C       The 0 is the "iteration" argumen Line 92  C       The 0 is the "iteration" argumen
92       &                    SQUEEZE_RIGHT , 1)       &                    SQUEEZE_RIGHT , 1)
93        ENDIF        ENDIF
94    
95          
96    #ifdef ALLOW_COST
97          IF ( STREAMICEcostMaskFile .NE. ' ') THEN
98            _BARRIER
99    C       The 0 is the "iteration" argument. The ' ' is an empty suffix
100            CALL READ_FLD_XY_RL( STREAMICEcostMaskFile, ' ',
101         &   STREAMICE_cost_mask, 0, myThid )
102           ELSE
103            WRITE(msgBuf,'(A)') 'COST MASK - NOT IMPLENTED'
104            CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
105         &                    SQUEEZE_RIGHT , 1)
106    
107           DO bj = myByLo(myThid), myByHi(myThid)
108            DO bi = myBxLo(myThid), myBxHi(myThid)
109             DO j=1,sNy
110              DO i=1,sNx
111               STREAMICE_cost_mask (i,j,bi,bj) = 1.0
112              ENDDO
113             ENDDO
114            ENDDO
115           ENDDO
116    
117          ENDIF
118    #endif
119          
120    
121  !    READ IN FILES FOR BOUNDARY MASKS AND DIRICH VALUES  !    READ IN FILES FOR BOUNDARY MASKS AND DIRICH VALUES
122  #ifdef STREAMICE_GEOM_FILE_SETUP  #ifdef STREAMICE_GEOM_FILE_SETUP
123    
# Line 109  C       The 0 is the "iteration" argumen Line 139  C       The 0 is the "iteration" argumen
139         CALL PRINT_ERROR( msgBuf, myThid)         CALL PRINT_ERROR( msgBuf, myThid)
140        ENDIF        ENDIF
141    
142          _EXCH_XY_RS(temp_ufacemask,myThid)
143          _EXCH_XY_RS(temp_ufacemask,myThid)
144    
145        IF ( STREAMICEuDirichValsFile .NE. ' ') THEN        IF ( STREAMICEuDirichValsFile .NE. ' ') THEN
146          _BARRIER          _BARRIER
147         CALL READ_FLD_XY_RL ( STREAMICEuDirichValsFile, ' ',         CALL READ_FLD_XY_RL ( STREAMICEuDirichValsFile, ' ',
148    #ifdef ALLOW_STREAMICE_FLUX_CONTROL
149         &   u_bdry_values_SI_base, 0, myThid )
150    #else
151       &   u_bdry_values_SI, 0, myThid )       &   u_bdry_values_SI, 0, myThid )
152    #endif
153        ELSE        ELSE
154         WRITE(msgBuf,'(A)') 'U DIRICH VALS - NOT SET'         WRITE(msgBuf,'(A)') 'U DIRICH VALS - NOT SET'
155         CALL PRINT_ERROR( msgBuf, myThid)         CALL PRINT_ERROR( msgBuf, myThid)
# Line 121  C       The 0 is the "iteration" argumen Line 158  C       The 0 is the "iteration" argumen
158        IF ( STREAMICEvDirichValsFile .NE. ' ') THEN        IF ( STREAMICEvDirichValsFile .NE. ' ') THEN
159          _BARRIER          _BARRIER
160         CALL READ_FLD_XY_RL ( STREAMICEvDirichValsFile, ' ',         CALL READ_FLD_XY_RL ( STREAMICEvDirichValsFile, ' ',
161    #ifdef ALLOW_STREAMICE_FLUX_CONTROL
162         &   v_bdry_values_SI_base, 0, myThid )
163    #else
164       &   v_bdry_values_SI, 0, myThid )       &   v_bdry_values_SI, 0, myThid )
165    #endif
166        ELSE        ELSE
167         WRITE(msgBuf,'(A)') 'V DIRICH VALS - NOT SET'         WRITE(msgBuf,'(A)') 'V DIRICH VALS - NOT SET'
168         CALL PRINT_ERROR( msgBuf, myThid)         CALL PRINT_ERROR( msgBuf, myThid)
169        ENDIF        ENDIF
170    
171          IF ( STREAMICEHBCxFile .NE. ' ') THEN
172            _BARRIER
173           CALL READ_FLD_XY_RL ( STREAMICEHBCxFile, ' ',
174         &   h_ubdry_values_SI, 0, myThid )
175          ELSE
176           WRITE(msgBuf,'(A)') 'THICK BC AT U FACE - NOT SET'
177           CALL PRINT_ERROR( msgBuf, myThid)
178          ENDIF
179    
180          IF ( STREAMICEHBCyFile .NE. ' ') THEN
181            _BARRIER
182           CALL READ_FLD_XY_RL ( STREAMICEHBCyFile, ' ',
183         &   h_vbdry_values_SI, 0, myThid )
184          ELSE
185           WRITE(msgBuf,'(A)') 'THICK BC AT V FACE - NOT SET'
186           CALL PRINT_ERROR( msgBuf, myThid)
187          ENDIF
188    
189    #ifdef ALLOW_STREAMICE_2DTRACER
190    
191          IF ( STREAMICETrac2dBCxFile .NE. ' ') THEN
192            _BARRIER
193           CALL READ_FLD_XY_RL ( STREAMICETrac2dBCxFile, ' ',
194         &   trac2d_ubdry_values_SI, 0, myThid )
195          ELSE
196           WRITE(msgBuf,'(A)') 'TRAC BC AT U FACE - NOT SET'
197           CALL PRINT_ERROR( msgBuf, myThid)
198          ENDIF
199    
200          IF ( STREAMICETRAC2DBCyFile .NE. ' ') THEN
201            _BARRIER
202           CALL READ_FLD_XY_RL ( STREAMICETrac2dBCyFile, ' ',
203         &   trac2d_vbdry_values_SI, 0, myThid )
204          ELSE
205           WRITE(msgBuf,'(A)') 'TRAC BC AT V FACE - NOT SET'
206           CALL PRINT_ERROR( msgBuf, myThid)
207          ENDIF
208    
209    #endif
210    
211    
212  ! with this setup hmask is initialized here rather than in init_varia,  ! with this setup hmask is initialized here rather than in init_varia,
213  ! because it is needed to set no-flow boundaries, even though the field  ! because it is needed to set no-flow boundaries, even though the field
214  ! could potentially change due to ice shelf front advance and calving  ! could potentially change due to ice shelf front advance and calving
# Line 140  C       The 0 is the "iteration" argumen Line 222  C       The 0 is the "iteration" argumen
222         WRITE(msgBuf,'(A)') 'H MASK FILE - NOT SET'         WRITE(msgBuf,'(A)') 'H MASK FILE - NOT SET'
223         CALL PRINT_ERROR( msgBuf, myThid)         CALL PRINT_ERROR( msgBuf, myThid)
224        ENDIF        ENDIF
225          
226          _EXCH_XY_RS(temp_hmask,myThid)
227    
228    
229    #ifdef ALLOW_CTRL
230          DO bj = myByLo(myThid), myByHi(myThid)
231           DO bi = myBxLo(myThid), myBxHi(myThid)
232            DO j=1,sNy
233             DO i=1,sNx
234              IF (temp_hmask(i,j,bi,bj) .eq. 1.0) THEN
235               DO k=1,Nr
236               STREAMICE_ctrl_mask(i,j,k,bi,bj) = 1. _d 0
237               ENDDO
238              ENDIF
239             ENDDO
240            ENDDO
241           ENDDO
242          ENDDO
243    #endif
244    
245    #ifdef ALLOW_STREAMICE_FLUX_CONTROL
246         DO bj = myByLo(myThid), myByHi(myThid)
247           DO bi = myBxLo(myThid), myBxHi(myThid)
248            DO j=1,sNy
249             DO i=1,sNx
250              u_bdry_values_SI (i,j,bi,bj) =
251         &     u_bdry_values_SI_base (i,j,bi,bj)
252              v_bdry_values_SI (i,j,bi,bj) =
253         &     v_bdry_values_SI_base (i,j,bi,bj)
254             ENDDO
255            ENDDO
256           ENDDO
257          ENDDO
258    #endif
259    
260  #endif  #endif /* STREAMICE_GEOM_FILE_SETUP */
261    
262    
263  !!!!!!!!!!!!!!!!!!!!!!!!!  !!!!!!!!!!!!!!!!!!!!!!!!!
# Line 281  C         INITIALIZE BOUNDARY CONDS AT N Line 397  C         INITIALIZE BOUNDARY CONDS AT N
397             ENDIF             ENDIF
398            ENDIF            ENDIF
399    
400  #else  #else /* ifndef STREAMICE_GEOM_FILE_SETUP */
401  ! BOUNDARIES CONFIGURED FROM FILES  ! BOUNDARY MASK CONFIGURED FROM FILES
402    
403    
404            IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.            IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
405       &        temp_hmask(i,j,bi,bj).eq.0.0) THEN       &        temp_hmask(i,j,bi,bj).eq.0.0 .or.
406         &        temp_hmask(i-1,j,bi,bj).eq.1.0) THEN
407    
408            ! WEST FACE OF CELL            ! WEST FACE OF CELL
409             maskFlag=INT(temp_ufacemask(i,j,bi,bj))             maskFlag=INT(temp_ufacemask(i,j,bi,bj))
# Line 303  C         INITIALIZE BOUNDARY CONDS AT N Line 421  C         INITIALIZE BOUNDARY CONDS AT N
421              STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0              STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
422             ENDIF             ENDIF
423    
424              ENDIF
425    
426              IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
427         &        temp_hmask(i,j,bi,bj).eq.0.0) THEN
428    
429             ! EAST FACE OF CELL             ! EAST FACE OF CELL
430             maskFlag=INT(temp_ufacemask(i+1,j,bi,bj))             maskFlag=INT(temp_ufacemask(i+1,j,bi,bj))
431             IF (maskFlag.eq.2) THEN             IF (maskFlag.eq.2) THEN
# Line 319  C         INITIALIZE BOUNDARY CONDS AT N Line 442  C         INITIALIZE BOUNDARY CONDS AT N
442              STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = -1.0              STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = -1.0
443             ENDIF             ENDIF
444    
445              ENDIF
446    
447              IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
448         &        temp_hmask(i,j,bi,bj).eq.0.0 .or.
449         &        temp_hmask(i,j-1,bi,bj).eq.1.0) THEN
450    
451             ! SOUTH FACE OF CELL             ! SOUTH FACE OF CELL
452             maskFlag=INT(temp_vfacemask(i,j,bi,bj))             maskFlag=INT(temp_vfacemask(i,j,bi,bj))
453             IF (maskFlag.eq.2) THEN             IF (maskFlag.eq.2) THEN
# Line 335  C         INITIALIZE BOUNDARY CONDS AT N Line 464  C         INITIALIZE BOUNDARY CONDS AT N
464              STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0              STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
465             ENDIF             ENDIF
466    
467              ENDIF
468    
469              IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
470         &        temp_hmask(i,j,bi,bj).eq.0.0) THEN
471    
472    
473             ! NORTH FACE OF CELL             ! NORTH FACE OF CELL
474             maskFlag=INT(temp_vfacemask(i,j+1,bi,bj))             maskFlag=INT(temp_vfacemask(i,j+1,bi,bj))
475             IF (maskFlag.eq.2) THEN             IF (maskFlag.eq.2) THEN
# Line 360  C         INITIALIZE BOUNDARY CONDS AT N Line 495  C         INITIALIZE BOUNDARY CONDS AT N
495         ENDDO         ENDDO
496        ENDDO        ENDDO
497    
498    #ifdef ALLOW_CTRL
499    !      _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
500          CALL ACTIVE_WRITE_GEN_RS( 'maskCtrlL', STREAMICE_ctrl_mask,
501         &  'XY', Nr, 1, .FALSE., 0, mythid, dummyRS )
502    #endif
503    
504    #ifdef ALLOW_COST
505    !      _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
506          CALL WRITE_FLD_XY_RS ( 'maskCost', '',
507         & STREAMICE_cost_mask, 0, myThid )
508    #endif
509    
510    
511        _EXCH_XY_RL(k1AtC_str, myThid )        _EXCH_XY_RL(k1AtC_str, myThid )
512        _EXCH_XY_RL(k2AtC_str, myThid )        _EXCH_XY_RL(k2AtC_str, myThid )
513        _EXCH_XY_RL(STREAMICE_ufacemask_bdry, myThid )        _EXCH_XY_RL(STREAMICE_ufacemask_bdry, myThid )
# Line 373  C         INITIALIZE BOUNDARY CONDS AT N Line 521  C         INITIALIZE BOUNDARY CONDS AT N
521        Xquad (2) = .5 * (1.+1./sqrt(3.))        Xquad (2) = .5 * (1.+1./sqrt(3.))
522    
523        CALL STREAMICE_INIT_PHI( myThid )        CALL STREAMICE_INIT_PHI( myThid )
   
524                
   
525  #endif  #endif
526    
527        RETURN        RETURN

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

  ViewVC Help
Powered by ViewVC 1.1.22