/[MITgcm]/MITgcm/pkg/streamice/streamice_init_fixed.F
ViewVC logotype

Contents of /MITgcm/pkg/streamice/streamice_init_fixed.F

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


Revision 1.12 - (show annotations) (download)
Mon Jun 15 14:35:14 2015 UTC (9 years ago) by dgoldberg
Branch: MAIN
CVS Tags: checkpoint65n, checkpoint65o
Changes since 1.11: +9 -1 lines
variables used to persist petsc matrix

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

  ViewVC Help
Powered by ViewVC 1.1.22