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

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

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


Revision 1.7 - (hide annotations) (download)
Wed Aug 27 19:29:14 2014 UTC (10 years, 10 months ago) by dgoldberg
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +68 -45 lines
updating contrib streamice repo with latest files, and separated out convergence checks; and parameterised maximum iteration counts and interface w shelfice for coupling

1 dgoldberg 1.7 C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_init_fixed.F,v 1.8 2014/04/24 12:01:50 dgoldberg Exp $
2 heimbach 1.1 C $Name: $
3    
4     #include "STREAMICE_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7     CBOP 0
8     C !ROUTINE: STREAMICE_INIT_FIXED
9    
10     C !INTERFACE:
11     SUBROUTINE STREAMICE_INIT_FIXED( myThid )
12    
13     C !DESCRIPTION:
14     C Initialize STREAMICE variables that are kept fixed during the run.
15    
16     C !USES:
17     IMPLICIT NONE
18     #include "EEPARAMS.h"
19     #include "SIZE.h"
20     #include "PARAMS.h"
21     #include "STREAMICE.h"
22     #include "STREAMICE_CG.h"
23     #include "STREAMICE_BDRY.h"
24     #include "GRID.h"
25 dgoldberg 1.6 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
26     #include "STREAMICE_CTRL_FLUX.h"
27     #endif
28 heimbach 1.1
29     C myThid :: my Thread Id number
30     INTEGER myThid
31     CEOP
32    
33     C !LOCAL VARIABLES:
34     C === Local variables ===
35 dgoldberg 1.4 INTEGER bi, bj, i, j, Gi, Gj, m, k
36 dgoldberg 1.3 INTEGER maskFlag, hmaskFlag
37 heimbach 1.1 _RL x, y
38 dgoldberg 1.4 _RS dummyRS
39 heimbach 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
40    
41     #ifdef ALLOW_STREAMICE
42    
43 dgoldberg 1.3 #ifdef STREAMICE_GEOM_FILE_SETUP
44     _RS temp_ufacemask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
45     _RS temp_vfacemask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
46     _RS temp_hmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
47     #endif
48    
49 heimbach 1.1 #ifdef ALLOW_MNC
50    
51     IF ( useMNC .AND. (streamice_tave_mnc.OR.streamice_dump_mnc)
52     & ) THEN
53     C CALL STREAMICE_MNC_INIT( myThid )
54     ENDIF
55     #endif /* ALLOW_MNC */
56    
57     #ifdef ALLOW_DIAGNOSTICS
58     IF ( useDiagnostics ) THEN
59     CALL STREAMICE_INIT_DIAGNOSTICS( myThid )
60     ENDIF
61     #endif
62    
63 dgoldberg 1.3 ! CALVING MASK - LIMIT OF ICE SHELF FRONT ADVANCE
64    
65 heimbach 1.1 IF ( STREAMICE_calve_to_mask ) THEN
66     IF ( STREAMICEcalveMaskFile .NE. ' ') THEN
67     _BARRIER
68     C The 0 is the "iteration" argument. The ' ' is an empty suffix
69 dgoldberg 1.7 CALL READ_FLD_XY_RS( STREAMICEcalveMaskFile, ' ',
70 heimbach 1.1 & STREAMICE_calve_mask, 0, myThid )
71     ELSE
72     WRITE(msgBuf,'(A)') 'INIT CALVE MASK - NOT IMPLENTED'
73     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
74     & SQUEEZE_RIGHT , 1)
75     ENDIF
76     ENDIF
77    
78 dgoldberg 1.2 ! INITIALIZE SIGMA COORD
79     IF (STREAMICEsigcoordInit.eq.'FILE') THEN
80     WRITE(msgBuf,'(A)') 'SIG FROM FILE - NOT IMPLENTED'
81     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
82     & SQUEEZE_RIGHT , 1)
83     ELSEIF (STREAMICEsigcoordInit.eq.'UNIFORM') THEN
84     do m=1,Nr
85     streamice_sigma_coord (m) = 1./Nr * (m-0.5)
86     streamice_delsigma (m) = 1./Nr
87     enddo
88     ELSE
89     WRITE(msgBuf,'(A)') 'SIG COORD INIT - NOT IMPLENTED'
90     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
91     & SQUEEZE_RIGHT , 1)
92     ENDIF
93 dgoldberg 1.3
94 dgoldberg 1.5 #ifdef ALLOW_COST
95 dgoldberg 1.7 IF ( STREAMICEcostMaskFile .NE. ' ') THEN
96 dgoldberg 1.5 _BARRIER
97     C The 0 is the "iteration" argument. The ' ' is an empty suffix
98 dgoldberg 1.7 CALL READ_FLD_XY_RS( STREAMICEcostMaskFile, ' ',
99 dgoldberg 1.5 & STREAMICE_cost_mask, 0, myThid )
100     ELSE
101     WRITE(msgBuf,'(A)') 'COST MASK - NOT IMPLENTED'
102     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
103     & SQUEEZE_RIGHT , 1)
104    
105 dgoldberg 1.7 DO bj = myByLo(myThid), myByHi(myThid)
106     DO bi = myBxLo(myThid), myBxHi(myThid)
107     DO j=1,sNy
108     DO i=1,sNx
109     STREAMICE_cost_mask (i,j,bi,bj) = 1.0
110     ENDDO
111 dgoldberg 1.5 ENDDO
112     ENDDO
113     ENDDO
114    
115 dgoldberg 1.7 ENDIF
116 dgoldberg 1.5 #endif
117    
118 dgoldberg 1.3 ! READ IN FILES FOR BOUNDARY MASKS AND DIRICH VALUES
119     #ifdef STREAMICE_GEOM_FILE_SETUP
120    
121     IF ( STREAMICEuFaceBdryFile .NE. ' ') THEN
122     _BARRIER
123 dgoldberg 1.7 CALL READ_FLD_XY_RS ( STREAMICEuFaceBdryFile, ' ',
124 dgoldberg 1.3 & temp_ufacemask, 0, myThid )
125     ELSE
126     WRITE(msgBuf,'(A)') 'U FACE MASK - NOT SET'
127     CALL PRINT_ERROR( msgBuf, myThid)
128     ENDIF
129    
130     IF ( STREAMICEvFaceBdryFile .NE. ' ') THEN
131     _BARRIER
132 dgoldberg 1.7 CALL READ_FLD_XY_RS ( STREAMICEvFaceBdryFile, ' ',
133 dgoldberg 1.3 & temp_vfacemask, 0, myThid )
134     ELSE
135     WRITE(msgBuf,'(A)') 'V FACE MASK - NOT SET'
136     CALL PRINT_ERROR( msgBuf, myThid)
137     ENDIF
138    
139 dgoldberg 1.4 _EXCH_XY_RS(temp_ufacemask,myThid)
140 dgoldberg 1.7 _EXCH_XY_RS(temp_vfacemask,myThid)
141 dgoldberg 1.4
142 dgoldberg 1.3 IF ( STREAMICEuDirichValsFile .NE. ' ') THEN
143     _BARRIER
144 dgoldberg 1.7 CALL READ_FLD_XY_RL ( STREAMICEuDirichValsFile, ' ',
145 dgoldberg 1.6 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
146     & u_bdry_values_SI_base, 0, myThid )
147     #else
148 dgoldberg 1.3 & u_bdry_values_SI, 0, myThid )
149 dgoldberg 1.6 #endif
150 dgoldberg 1.3 ELSE
151     WRITE(msgBuf,'(A)') 'U DIRICH VALS - NOT SET'
152     CALL PRINT_ERROR( msgBuf, myThid)
153     ENDIF
154    
155     IF ( STREAMICEvDirichValsFile .NE. ' ') THEN
156     _BARRIER
157 dgoldberg 1.7 CALL READ_FLD_XY_RL ( STREAMICEvDirichValsFile, ' ',
158 dgoldberg 1.6 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
159     & v_bdry_values_SI_base, 0, myThid )
160     #else
161 dgoldberg 1.3 & v_bdry_values_SI, 0, myThid )
162 dgoldberg 1.6 #endif
163 dgoldberg 1.3 ELSE
164     WRITE(msgBuf,'(A)') 'V DIRICH VALS - NOT SET'
165     CALL PRINT_ERROR( msgBuf, myThid)
166     ENDIF
167    
168 dgoldberg 1.6 IF ( STREAMICEHBCxFile .NE. ' ') THEN
169     _BARRIER
170     CALL READ_FLD_XY_RL ( STREAMICEHBCxFile, ' ',
171     & h_ubdry_values_SI, 0, myThid )
172     ELSE
173     WRITE(msgBuf,'(A)') 'THICK BC AT U FACE - NOT SET'
174     CALL PRINT_ERROR( msgBuf, myThid)
175     ENDIF
176    
177     IF ( STREAMICEHBCyFile .NE. ' ') THEN
178     _BARRIER
179     CALL READ_FLD_XY_RL ( STREAMICEHBCyFile, ' ',
180     & h_vbdry_values_SI, 0, myThid )
181     ELSE
182     WRITE(msgBuf,'(A)') 'THICK BC AT V FACE - NOT SET'
183     CALL PRINT_ERROR( msgBuf, myThid)
184     ENDIF
185    
186 dgoldberg 1.7
187     IF ( streamiceumassfluxfile .NE. ' ') THEN
188     _BARRIER
189     CALL READ_FLD_XY_RL ( streamiceumassfluxfile , ' ',
190     & u_flux_bdry_SI, 0, myThid )
191     ELSE
192     WRITE(msgBuf,'(A)') 'MASS FLUX AT U FACE - NOT SET'
193     CALL PRINT_ERROR( msgBuf, myThid)
194     ENDIF
195    
196     IF ( streamicevmassfluxfile .NE. ' ') THEN
197     _BARRIER
198     CALL READ_FLD_XY_RL ( streamicevmassfluxfile , ' ',
199     & v_flux_bdry_SI, 0, myThid )
200     ELSE
201     WRITE(msgBuf,'(A)') 'MASS FLUX AT V FACE - NOT SET'
202     CALL PRINT_ERROR( msgBuf, myThid)
203     ENDIF
204    
205 dgoldberg 1.6 #ifdef ALLOW_STREAMICE_2DTRACER
206    
207     IF ( STREAMICETrac2dBCxFile .NE. ' ') THEN
208     _BARRIER
209     CALL READ_FLD_XY_RL ( STREAMICETrac2dBCxFile, ' ',
210     & trac2d_ubdry_values_SI, 0, myThid )
211     ELSE
212     WRITE(msgBuf,'(A)') 'TRAC BC AT U FACE - NOT SET'
213     CALL PRINT_ERROR( msgBuf, myThid)
214     ENDIF
215    
216     IF ( STREAMICETRAC2DBCyFile .NE. ' ') THEN
217     _BARRIER
218     CALL READ_FLD_XY_RL ( STREAMICETrac2dBCyFile, ' ',
219     & trac2d_vbdry_values_SI, 0, myThid )
220     ELSE
221     WRITE(msgBuf,'(A)') 'TRAC BC AT V FACE - NOT SET'
222     CALL PRINT_ERROR( msgBuf, myThid)
223     ENDIF
224    
225     #endif
226    
227 dgoldberg 1.3 ! with this setup hmask is initialized here rather than in init_varia,
228     ! because it is needed to set no-flow boundaries, even though the field
229     ! could potentially change due to ice shelf front advance and calving
230 dgoldberg 1.7 ! (POTENTIAL PROBLEMS WITH TAF ? USE TEMP FIELD HERE AND SET HMASK IN INIT_VARIA ?)
231 dgoldberg 1.3
232     IF ( STREAMICEhMaskFile .NE. ' ') THEN
233     _BARRIER
234 dgoldberg 1.7 CALL READ_FLD_XY_RS ( STREAMICEhMaskFile, ' ',
235 dgoldberg 1.3 & temp_hmask, 0, myThid )
236     ELSE
237     WRITE(msgBuf,'(A)') 'H MASK FILE - NOT SET'
238     CALL PRINT_ERROR( msgBuf, myThid)
239     ENDIF
240 dgoldberg 1.7
241 dgoldberg 1.4 _EXCH_XY_RS(temp_hmask,myThid)
242    
243     #ifdef ALLOW_CTRL
244     DO bj = myByLo(myThid), myByHi(myThid)
245     DO bi = myBxLo(myThid), myBxHi(myThid)
246     DO j=1,sNy
247     DO i=1,sNx
248     IF (temp_hmask(i,j,bi,bj) .eq. 1.0) THEN
249     DO k=1,Nr
250     STREAMICE_ctrl_mask(i,j,k,bi,bj) = 1. _d 0
251     ENDDO
252     ENDIF
253     ENDDO
254     ENDDO
255     ENDDO
256     ENDDO
257     #endif
258 dgoldberg 1.3
259 dgoldberg 1.6 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
260     DO bj = myByLo(myThid), myByHi(myThid)
261     DO bi = myBxLo(myThid), myBxHi(myThid)
262     DO j=1,sNy
263     DO i=1,sNx
264     u_bdry_values_SI (i,j,bi,bj) =
265     & u_bdry_values_SI_base (i,j,bi,bj)
266     v_bdry_values_SI (i,j,bi,bj) =
267     & v_bdry_values_SI_base (i,j,bi,bj)
268     ENDDO
269     ENDDO
270     ENDDO
271     ENDDO
272     #endif
273    
274     #endif /* STREAMICE_GEOM_FILE_SETUP */
275 dgoldberg 1.3
276 dgoldberg 1.2 !!!!!!!!!!!!!!!!!!!!!!!!!
277    
278 heimbach 1.1 C- fill in the overlap (+ BARRIER):
279 dgoldberg 1.7 _EXCH_XY_RS(STREAMICE_calve_mask, myThid )
280 heimbach 1.1
281     DO bj = myByLo(myThid), myByHi(myThid)
282     DO bi = myBxLo(myThid), myBxHi(myThid)
283     DO j=1,sNy
284     DO i=1,sNx
285    
286     C INIT VALUES FOR METRIC TERMS
287    
288 dgoldberg 1.7 k1AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
289 heimbach 1.1 & (dxG(i+1,j,bi,bj)-dxG(i,j,bi,bj))
290 dgoldberg 1.7 k2AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
291 heimbach 1.1 & (dyG(i,j+1,bi,bj)-dyG(i,j,bi,bj))
292    
293 dgoldberg 1.2 #ifdef STREAMICE_HYBRID_STRESS
294     streamice_basal_geom (i,j,bi,bj) = 1.0
295 dgoldberg 1.7 #endif
296 dgoldberg 1.2
297 heimbach 1.1 C INIT BDRY CONDITIONS
298    
299 dgoldberg 1.3 #ifndef STREAMICE_GEOM_FILE_SETUP
300    
301 heimbach 1.1 Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
302     Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
303     x = xC(i,j,bi,bj)
304     y = yC(i,j,bi,bj)
305    
306     STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
307     STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
308    
309 dgoldberg 1.2 IF (Gi.EQ.1 .AND. .NOT. STREAMICE_EW_periodic) THEN
310 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT WEST
311     IF ((y .gt. min_y_noflow_WEST) .AND.
312     & (y .le. max_y_noflow_WEST)) THEN
313     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
314     ENDIF
315     IF ((y .gt. min_y_noStress_WEST) .AND.
316     & (y .le. max_y_noStress_WEST)) THEN
317     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
318     ENDIF
319     IF ((y .gt. min_y_FluxBdry_WEST) .AND.
320     & (y .le. max_y_FluxBdry_WEST)) THEN
321     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
322     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_WEST
323     ENDIF
324     IF ((y .gt. min_y_Dirich_WEST) .AND.
325     & (y .le. max_y_Dirich_WEST)) THEN
326     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
327     u_bdry_values_SI (i,j,bi,bj) = 0.0
328     ENDIF
329     IF ((y .gt. min_y_CFBC_WEST) .AND.
330     & (y .le. max_y_CFBC_WEST)) THEN
331     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
332     ENDIF
333     ENDIF
334    
335 dgoldberg 1.2 IF (Gi.EQ.Nx .AND. .NOT. STREAMICE_EW_periodic) THEN
336 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT EAST
337     IF ((y .gt. min_y_noflow_EAST) .AND.
338     & (y .le. max_y_noflow_EAST)) THEN
339     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
340     ENDIF
341     IF ((y .gt. min_y_noStress_EAST) .AND.
342     & (y .le. max_y_noStress_EAST)) THEN
343     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
344     ENDIF
345     IF ((y .gt. min_y_FluxBdry_EAST) .AND.
346     & (y .le. max_y_FluxBdry_EAST)) THEN
347 dgoldberg 1.7 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
348 heimbach 1.1 u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_EAST
349     ENDIF
350     IF ((y .gt. min_y_Dirich_EAST) .AND.
351     & (y .le. max_y_Dirich_EAST)) THEN
352     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
353     u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
354     ENDIF
355     IF ((y .gt. min_y_CFBC_EAST) .AND.
356     & (y .le. max_y_CFBC_EAST)) THEN
357     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
358     ENDIF
359     ENDIF
360    
361 dgoldberg 1.2 IF (Gj.EQ.1 .AND. .NOT. STREAMICE_NS_periodic) THEN
362 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT SOUTH
363     IF ((x .gt. min_x_noflow_SOUTH) .AND.
364     & (x .le. max_x_noflow_SOUTH)) THEN
365     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
366     ENDIF
367     IF ((x .gt. min_x_noStress_SOUTH) .AND.
368     & (x .le. max_x_noStress_SOUTH)) THEN
369     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
370     ENDIF
371     IF ((x .gt. min_x_FluxBdry_SOUTH) .AND.
372     & (x .le. max_x_FluxBdry_SOUTH)) THEN
373     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
374     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_SOUTH
375     ENDIF
376     IF ((x .gt. min_x_Dirich_SOUTH) .AND.
377     & (x .le. max_x_Dirich_SOUTH)) THEN
378     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
379     u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
380     ENDIF
381     IF ((x .gt. min_x_CFBC_SOUTH) .AND.
382     & (x .le. max_x_CFBC_SOUTH)) THEN
383     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
384     ENDIF
385     ENDIF
386    
387 dgoldberg 1.2 IF (Gj.EQ.Ny .AND. .NOT. STREAMICE_NS_periodic) THEN
388 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT NORTH
389     IF ((x .gt. min_x_noflow_NORTH) .AND.
390     & (x .le. max_x_noflow_NORTH)) THEN
391     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0. _d 0
392     ENDIF
393     IF ((x .gt. min_x_noStress_NORTH) .AND.
394     & (x .le. max_x_noStress_NORTH)) THEN
395     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
396     ENDIF
397     IF ((x .gt. min_x_FluxBdry_NORTH) .AND.
398     & (x .le. max_x_FluxBdry_NORTH)) THEN
399     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
400     v_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_NORTH
401     ENDIF
402     IF ((x .gt. min_x_Dirich_NORTH) .AND.
403     & (x .le. max_x_Dirich_NORTH)) THEN
404     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
405     v_bdry_values_SI (i,j,bi,bj) = 0. _d 0
406     ENDIF
407     IF ((x .gt. min_x_CFBC_NORTH) .AND.
408     & (x .le. max_x_CFBC_NORTH)) THEN
409     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
410     ENDIF
411     ENDIF
412 dgoldberg 1.3
413 dgoldberg 1.6 #else /* ifndef STREAMICE_GEOM_FILE_SETUP */
414     ! BOUNDARY MASK CONFIGURED FROM FILES
415 dgoldberg 1.3
416 dgoldberg 1.7 IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
417     & temp_hmask(i,j,bi,bj).eq.0.0 .or.
418 dgoldberg 1.4 & temp_hmask(i-1,j,bi,bj).eq.1.0) THEN
419 dgoldberg 1.3
420     ! WEST FACE OF CELL
421     maskFlag=INT(temp_ufacemask(i,j,bi,bj))
422     IF (maskFlag.eq.2) THEN
423     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
424 dgoldberg 1.7 ELSEIF (maskflag.eq.4.0) THEN
425     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
426 dgoldberg 1.3 ELSEIF (maskFlag.eq.3) THEN
427     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
428     ELSEIF (maskFlag.eq.1) THEN
429     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
430 dgoldberg 1.7 ELSEIF ((maskFlag.eq.0) .or.
431 dgoldberg 1.3 & ((maskFlag.eq.-1) .and.
432     & (temp_hmask(i-1,j,bi,bj).eq.-1.0))) THEN
433     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
434 dgoldberg 1.7 ELSEIF (temp_hmask(i,j,bi,bj).eq.-1.0) THEN
435     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
436 dgoldberg 1.3 ELSE
437     STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
438     ENDIF
439    
440 dgoldberg 1.4 ENDIF
441    
442     IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
443     & temp_hmask(i,j,bi,bj).eq.0.0) THEN
444    
445 dgoldberg 1.3 ! EAST FACE OF CELL
446     maskFlag=INT(temp_ufacemask(i+1,j,bi,bj))
447     IF (maskFlag.eq.2) THEN
448     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 2.0
449 dgoldberg 1.7 ELSEIF (maskFlag.eq.4.0) THEN
450     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 4.0
451 dgoldberg 1.3 ELSEIF (maskFlag.eq.3) THEN
452     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 3.0
453     ELSEIF (maskFlag.eq.1) THEN
454     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 1.0
455 dgoldberg 1.7 ELSEIF ((maskFlag.eq.0) .or.
456 dgoldberg 1.3 & ((maskFlag.eq.-1) .and.
457     & (temp_hmask(i+1,j,bi,bj).eq.-1.0))) THEN
458     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 0.0
459     ELSE
460     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = -1.0
461     ENDIF
462    
463 dgoldberg 1.4 ENDIF
464    
465     IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
466     & temp_hmask(i,j,bi,bj).eq.0.0 .or.
467     & temp_hmask(i,j-1,bi,bj).eq.1.0) THEN
468    
469 dgoldberg 1.3 ! SOUTH FACE OF CELL
470     maskFlag=INT(temp_vfacemask(i,j,bi,bj))
471     IF (maskFlag.eq.2) THEN
472     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
473 dgoldberg 1.7 ELSEIF (maskFlag.eq.4.0) THEN
474     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
475 dgoldberg 1.3 ELSEIF (maskFlag.eq.3) THEN
476     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
477     ELSEIF (maskFlag.eq.1) THEN
478     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
479 dgoldberg 1.7 ELSEIF ((maskFlag.eq.0) .or.
480 dgoldberg 1.3 & ((maskFlag.eq.-1) .and.
481     & (temp_hmask(i,j-1,bi,bj).eq.-1.0))) THEN
482     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
483 dgoldberg 1.7 ELSEIF (temp_hmask(i,j,bi,bj).eq.-1.0) THEN
484     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
485 dgoldberg 1.3 ELSE
486     STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
487     ENDIF
488    
489 dgoldberg 1.4 ENDIF
490    
491     IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
492     & temp_hmask(i,j,bi,bj).eq.0.0) THEN
493    
494 dgoldberg 1.3 ! NORTH FACE OF CELL
495     maskFlag=INT(temp_vfacemask(i,j+1,bi,bj))
496     IF (maskFlag.eq.2) THEN
497     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 2.0
498 dgoldberg 1.7 ELSEIF (maskFlag.eq.4.0) THEN
499     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 4.0
500 dgoldberg 1.3 ELSEIF (maskFlag.eq.3) THEN
501     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 3.0
502     ELSEIF (maskFlag.eq.1) THEN
503     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 1.0
504 dgoldberg 1.7 ELSEIF ((maskFlag.eq.0) .or.
505 dgoldberg 1.3 & ((maskFlag.eq.-1) .and.
506     & (temp_hmask(i,j+1,bi,bj).eq.-1.0))) THEN
507     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 0.0
508     ELSE
509     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = -1.0
510     ENDIF
511    
512     ENDIF ! hmask==1 or hmask==0
513    
514     #endif
515 dgoldberg 1.7
516 heimbach 1.1 ENDDO
517     ENDDO
518     ENDDO
519     ENDDO
520    
521 dgoldberg 1.4 #ifdef ALLOW_CTRL
522     ! _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
523     CALL ACTIVE_WRITE_GEN_RS( 'maskCtrlL', STREAMICE_ctrl_mask,
524 dgoldberg 1.7 & 'XY', Nr, 1, .FALSE., 0, myThid, dummyRS )
525 dgoldberg 1.4 #endif
526    
527 dgoldberg 1.5 #ifdef ALLOW_COST
528     ! _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
529 dgoldberg 1.7 CALL WRITE_FLD_XY_RS ( 'maskCost', '',
530 dgoldberg 1.5 & STREAMICE_cost_mask, 0, myThid )
531     #endif
532    
533 dgoldberg 1.4
534 dgoldberg 1.7
535 heimbach 1.1 _EXCH_XY_RL(k1AtC_str, myThid )
536     _EXCH_XY_RL(k2AtC_str, myThid )
537 dgoldberg 1.7 _EXCH_XY_RS(STREAMICE_ufacemask_bdry, myThid )
538     _EXCH_XY_RS(STREAMICE_vfacemask_bdry, myThid )
539 heimbach 1.1 _EXCH_XY_RL(u_bdry_values_SI, myThid )
540     _EXCH_XY_RL(v_bdry_values_SI, myThid )
541     _EXCH_XY_RL(u_flux_bdry_SI, myThid )
542     _EXCH_XY_RL(v_flux_bdry_SI, myThid )
543    
544     Xquad (1) = .5 * (1.-1./sqrt(3.))
545     Xquad (2) = .5 * (1.+1./sqrt(3.))
546    
547     CALL STREAMICE_INIT_PHI( myThid )
548 dgoldberg 1.7
549 heimbach 1.1 #endif
550    
551     RETURN
552     END

  ViewVC Help
Powered by ViewVC 1.1.22