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

Contents 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 - (show 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 C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_init_fixed.F,v 1.8 2014/04/24 12:01:50 dgoldberg Exp $
2 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 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
26 #include "STREAMICE_CTRL_FLUX.h"
27 #endif
28
29 C myThid :: my Thread Id number
30 INTEGER myThid
31 CEOP
32
33 C !LOCAL VARIABLES:
34 C === Local variables ===
35 INTEGER bi, bj, i, j, Gi, Gj, m, k
36 INTEGER maskFlag, hmaskFlag
37 _RL x, y
38 _RS dummyRS
39 CHARACTER*(MAX_LEN_MBUF) msgBuf
40
41 #ifdef ALLOW_STREAMICE
42
43 #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 #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 ! CALVING MASK - LIMIT OF ICE SHELF FRONT ADVANCE
64
65 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 CALL READ_FLD_XY_RS( STREAMICEcalveMaskFile, ' ',
70 & 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 ! 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
94 #ifdef ALLOW_COST
95 IF ( STREAMICEcostMaskFile .NE. ' ') THEN
96 _BARRIER
97 C The 0 is the "iteration" argument. The ' ' is an empty suffix
98 CALL READ_FLD_XY_RS( STREAMICEcostMaskFile, ' ',
99 & 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 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 ENDDO
112 ENDDO
113 ENDDO
114
115 ENDIF
116 #endif
117
118 ! READ IN FILES FOR BOUNDARY MASKS AND DIRICH VALUES
119 #ifdef STREAMICE_GEOM_FILE_SETUP
120
121 IF ( STREAMICEuFaceBdryFile .NE. ' ') THEN
122 _BARRIER
123 CALL READ_FLD_XY_RS ( STREAMICEuFaceBdryFile, ' ',
124 & 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 CALL READ_FLD_XY_RS ( STREAMICEvFaceBdryFile, ' ',
133 & 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 _EXCH_XY_RS(temp_ufacemask,myThid)
140 _EXCH_XY_RS(temp_vfacemask,myThid)
141
142 IF ( STREAMICEuDirichValsFile .NE. ' ') THEN
143 _BARRIER
144 CALL READ_FLD_XY_RL ( STREAMICEuDirichValsFile, ' ',
145 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
146 & u_bdry_values_SI_base, 0, myThid )
147 #else
148 & u_bdry_values_SI, 0, myThid )
149 #endif
150 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 CALL READ_FLD_XY_RL ( STREAMICEvDirichValsFile, ' ',
158 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
159 & v_bdry_values_SI_base, 0, myThid )
160 #else
161 & v_bdry_values_SI, 0, myThid )
162 #endif
163 ELSE
164 WRITE(msgBuf,'(A)') 'V DIRICH VALS - NOT SET'
165 CALL PRINT_ERROR( msgBuf, myThid)
166 ENDIF
167
168 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
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 #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 ! 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 ! (POTENTIAL PROBLEMS WITH TAF ? USE TEMP FIELD HERE AND SET HMASK IN INIT_VARIA ?)
231
232 IF ( STREAMICEhMaskFile .NE. ' ') THEN
233 _BARRIER
234 CALL READ_FLD_XY_RS ( STREAMICEhMaskFile, ' ',
235 & temp_hmask, 0, myThid )
236 ELSE
237 WRITE(msgBuf,'(A)') 'H MASK FILE - NOT SET'
238 CALL PRINT_ERROR( msgBuf, myThid)
239 ENDIF
240
241 _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
259 #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
276 !!!!!!!!!!!!!!!!!!!!!!!!!
277
278 C- fill in the overlap (+ BARRIER):
279 _EXCH_XY_RS(STREAMICE_calve_mask, myThid )
280
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 k1AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
289 & (dxG(i+1,j,bi,bj)-dxG(i,j,bi,bj))
290 k2AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
291 & (dyG(i,j+1,bi,bj)-dyG(i,j,bi,bj))
292
293 #ifdef STREAMICE_HYBRID_STRESS
294 streamice_basal_geom (i,j,bi,bj) = 1.0
295 #endif
296
297 C INIT BDRY CONDITIONS
298
299 #ifndef STREAMICE_GEOM_FILE_SETUP
300
301 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 IF (Gi.EQ.1 .AND. .NOT. STREAMICE_EW_periodic) THEN
310 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 IF (Gi.EQ.Nx .AND. .NOT. STREAMICE_EW_periodic) THEN
336 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 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
348 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 IF (Gj.EQ.1 .AND. .NOT. STREAMICE_NS_periodic) THEN
362 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 IF (Gj.EQ.Ny .AND. .NOT. STREAMICE_NS_periodic) THEN
388 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
413 #else /* ifndef STREAMICE_GEOM_FILE_SETUP */
414 ! BOUNDARY MASK CONFIGURED FROM FILES
415
416 IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
417 & temp_hmask(i,j,bi,bj).eq.0.0 .or.
418 & temp_hmask(i-1,j,bi,bj).eq.1.0) THEN
419
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 ELSEIF (maskflag.eq.4.0) THEN
425 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
426 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 ELSEIF ((maskFlag.eq.0) .or.
431 & ((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 ELSEIF (temp_hmask(i,j,bi,bj).eq.-1.0) THEN
435 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
436 ELSE
437 STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
438 ENDIF
439
440 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 ! 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 ELSEIF (maskFlag.eq.4.0) THEN
450 STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 4.0
451 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 ELSEIF ((maskFlag.eq.0) .or.
456 & ((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 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 ! 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 ELSEIF (maskFlag.eq.4.0) THEN
474 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
475 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 ELSEIF ((maskFlag.eq.0) .or.
480 & ((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 ELSEIF (temp_hmask(i,j,bi,bj).eq.-1.0) THEN
484 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
485 ELSE
486 STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
487 ENDIF
488
489 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 ! 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 ELSEIF (maskFlag.eq.4.0) THEN
499 STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 4.0
500 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 ELSEIF ((maskFlag.eq.0) .or.
505 & ((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
516 ENDDO
517 ENDDO
518 ENDDO
519 ENDDO
520
521 #ifdef ALLOW_CTRL
522 ! _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
523 CALL ACTIVE_WRITE_GEN_RS( 'maskCtrlL', STREAMICE_ctrl_mask,
524 & 'XY', Nr, 1, .FALSE., 0, myThid, dummyRS )
525 #endif
526
527 #ifdef ALLOW_COST
528 ! _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
529 CALL WRITE_FLD_XY_RS ( 'maskCost', '',
530 & STREAMICE_cost_mask, 0, myThid )
531 #endif
532
533
534
535 _EXCH_XY_RL(k1AtC_str, myThid )
536 _EXCH_XY_RL(k2AtC_str, myThid )
537 _EXCH_XY_RS(STREAMICE_ufacemask_bdry, myThid )
538 _EXCH_XY_RS(STREAMICE_vfacemask_bdry, myThid )
539 _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
549 #endif
550
551 RETURN
552 END

  ViewVC Help
Powered by ViewVC 1.1.22