/[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.6 - (hide annotations) (download)
Sat Jun 8 22:15:33 2013 UTC (12 years, 1 month ago) by dgoldberg
Branch: MAIN
Changes since 1.5: +71 -5 lines
new advected scalar; new advection scheme for thickness update; corresponding TAF directives

1 dgoldberg 1.6 C $Header: /u/gcmpack/MITgcm_contrib/dgoldberg/streamice/streamice_init_fixed.F,v 1.5 2013/03/07 15:23:19 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     CALL READ_FLD_XY_RL( 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 dgoldberg 1.2
79     ! INITIALIZE SIGMA COORD
80     IF (STREAMICEsigcoordInit.eq.'FILE') THEN
81     WRITE(msgBuf,'(A)') 'SIG FROM FILE - NOT IMPLENTED'
82     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
83     & SQUEEZE_RIGHT , 1)
84     ELSEIF (STREAMICEsigcoordInit.eq.'UNIFORM') THEN
85     do m=1,Nr
86     streamice_sigma_coord (m) = 1./Nr * (m-0.5)
87     streamice_delsigma (m) = 1./Nr
88     enddo
89     ELSE
90     WRITE(msgBuf,'(A)') 'SIG COORD INIT - NOT IMPLENTED'
91     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
92     & SQUEEZE_RIGHT , 1)
93     ENDIF
94 dgoldberg 1.3
95 dgoldberg 1.5
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 dgoldberg 1.3 ! READ IN FILES FOR BOUNDARY MASKS AND DIRICH VALUES
122     #ifdef STREAMICE_GEOM_FILE_SETUP
123    
124     IF ( STREAMICEuFaceBdryFile .NE. ' ') THEN
125     _BARRIER
126     CALL READ_FLD_XY_RS ( STREAMICEuFaceBdryFile, ' ',
127     & temp_ufacemask, 0, myThid )
128     ELSE
129     WRITE(msgBuf,'(A)') 'U FACE MASK - NOT SET'
130     CALL PRINT_ERROR( msgBuf, myThid)
131     ENDIF
132    
133     IF ( STREAMICEvFaceBdryFile .NE. ' ') THEN
134     _BARRIER
135     CALL READ_FLD_XY_RS ( STREAMICEvFaceBdryFile, ' ',
136     & temp_vfacemask, 0, myThid )
137     ELSE
138     WRITE(msgBuf,'(A)') 'V FACE MASK - NOT SET'
139     CALL PRINT_ERROR( msgBuf, myThid)
140     ENDIF
141    
142 dgoldberg 1.4 _EXCH_XY_RS(temp_ufacemask,myThid)
143     _EXCH_XY_RS(temp_ufacemask,myThid)
144    
145 dgoldberg 1.3 IF ( STREAMICEuDirichValsFile .NE. ' ') THEN
146     _BARRIER
147     CALL READ_FLD_XY_RL ( STREAMICEuDirichValsFile, ' ',
148 dgoldberg 1.6 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
149     & u_bdry_values_SI_base, 0, myThid )
150     #else
151 dgoldberg 1.3 & u_bdry_values_SI, 0, myThid )
152 dgoldberg 1.6 #endif
153 dgoldberg 1.3 ELSE
154     WRITE(msgBuf,'(A)') 'U DIRICH VALS - NOT SET'
155     CALL PRINT_ERROR( msgBuf, myThid)
156     ENDIF
157    
158     IF ( STREAMICEvDirichValsFile .NE. ' ') THEN
159     _BARRIER
160     CALL READ_FLD_XY_RL ( STREAMICEvDirichValsFile, ' ',
161 dgoldberg 1.6 #ifdef ALLOW_STREAMICE_FLUX_CONTROL
162     & v_bdry_values_SI_base, 0, myThid )
163     #else
164 dgoldberg 1.3 & v_bdry_values_SI, 0, myThid )
165 dgoldberg 1.6 #endif
166 dgoldberg 1.3 ELSE
167     WRITE(msgBuf,'(A)') 'V DIRICH VALS - NOT SET'
168     CALL PRINT_ERROR( msgBuf, myThid)
169     ENDIF
170    
171 dgoldberg 1.6 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 dgoldberg 1.3 ! 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
214     ! could potentially change due to ice shelf front advance and calving
215     ! (POTENTIAL PROBLEMS WITH TAF?????? USE TEMP FIELD HERE AND SET HMASK IN INIT_VARIA??)
216    
217     IF ( STREAMICEhMaskFile .NE. ' ') THEN
218     _BARRIER
219     CALL READ_FLD_XY_RS ( STREAMICEhMaskFile, ' ',
220     & temp_hmask, 0, myThid )
221     ELSE
222     WRITE(msgBuf,'(A)') 'H MASK FILE - NOT SET'
223     CALL PRINT_ERROR( msgBuf, myThid)
224     ENDIF
225 dgoldberg 1.4
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 dgoldberg 1.3
245 dgoldberg 1.6 #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 /* STREAMICE_GEOM_FILE_SETUP */
261 dgoldberg 1.3
262    
263 dgoldberg 1.2 !!!!!!!!!!!!!!!!!!!!!!!!!
264    
265 heimbach 1.1 C- fill in the overlap (+ BARRIER):
266     _EXCH_XY_RL(STREAMICE_calve_mask, myThid )
267    
268     DO bj = myByLo(myThid), myByHi(myThid)
269     DO bi = myBxLo(myThid), myBxHi(myThid)
270     DO j=1,sNy
271     DO i=1,sNx
272    
273     C INIT VALUES FOR METRIC TERMS
274    
275     k1AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
276     & (dxG(i+1,j,bi,bj)-dxG(i,j,bi,bj))
277     k2AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
278     & (dyG(i,j+1,bi,bj)-dyG(i,j,bi,bj))
279    
280 dgoldberg 1.2 #ifdef STREAMICE_HYBRID_STRESS
281     streamice_basal_geom (i,j,bi,bj) = 1.0
282     #endif
283    
284 heimbach 1.1 C INIT BDRY CONDITIONS
285    
286 dgoldberg 1.3 #ifndef STREAMICE_GEOM_FILE_SETUP
287    
288 heimbach 1.1 Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
289     Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
290     x = xC(i,j,bi,bj)
291     y = yC(i,j,bi,bj)
292    
293     STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
294     STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
295    
296 dgoldberg 1.2 IF (Gi.EQ.1 .AND. .NOT. STREAMICE_EW_periodic) THEN
297 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT WEST
298     IF ((y .gt. min_y_noflow_WEST) .AND.
299     & (y .le. max_y_noflow_WEST)) THEN
300     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
301     ENDIF
302     IF ((y .gt. min_y_noStress_WEST) .AND.
303     & (y .le. max_y_noStress_WEST)) THEN
304     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
305     ENDIF
306     IF ((y .gt. min_y_FluxBdry_WEST) .AND.
307     & (y .le. max_y_FluxBdry_WEST)) THEN
308     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
309     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_WEST
310     ENDIF
311     IF ((y .gt. min_y_Dirich_WEST) .AND.
312     & (y .le. max_y_Dirich_WEST)) THEN
313     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
314     u_bdry_values_SI (i,j,bi,bj) = 0.0
315     ENDIF
316     IF ((y .gt. min_y_CFBC_WEST) .AND.
317     & (y .le. max_y_CFBC_WEST)) THEN
318     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
319     ENDIF
320     ENDIF
321    
322 dgoldberg 1.2 IF (Gi.EQ.Nx .AND. .NOT. STREAMICE_EW_periodic) THEN
323 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT EAST
324     IF ((y .gt. min_y_noflow_EAST) .AND.
325     & (y .le. max_y_noflow_EAST)) THEN
326     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
327     ENDIF
328     IF ((y .gt. min_y_noStress_EAST) .AND.
329     & (y .le. max_y_noStress_EAST)) THEN
330     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
331     ENDIF
332     IF ((y .gt. min_y_FluxBdry_EAST) .AND.
333     & (y .le. max_y_FluxBdry_EAST)) THEN
334     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
335     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_EAST
336     ENDIF
337     IF ((y .gt. min_y_Dirich_EAST) .AND.
338     & (y .le. max_y_Dirich_EAST)) THEN
339     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
340     u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
341     ENDIF
342     IF ((y .gt. min_y_CFBC_EAST) .AND.
343     & (y .le. max_y_CFBC_EAST)) THEN
344     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
345     ENDIF
346     ENDIF
347    
348 dgoldberg 1.2 IF (Gj.EQ.1 .AND. .NOT. STREAMICE_NS_periodic) THEN
349 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT SOUTH
350     IF ((x .gt. min_x_noflow_SOUTH) .AND.
351     & (x .le. max_x_noflow_SOUTH)) THEN
352     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
353     ENDIF
354     IF ((x .gt. min_x_noStress_SOUTH) .AND.
355     & (x .le. max_x_noStress_SOUTH)) THEN
356     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
357     ENDIF
358     IF ((x .gt. min_x_FluxBdry_SOUTH) .AND.
359     & (x .le. max_x_FluxBdry_SOUTH)) THEN
360     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
361     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_SOUTH
362     ENDIF
363     IF ((x .gt. min_x_Dirich_SOUTH) .AND.
364     & (x .le. max_x_Dirich_SOUTH)) THEN
365     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
366     u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
367     ENDIF
368     IF ((x .gt. min_x_CFBC_SOUTH) .AND.
369     & (x .le. max_x_CFBC_SOUTH)) THEN
370     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
371     ENDIF
372     ENDIF
373    
374 dgoldberg 1.2 IF (Gj.EQ.Ny .AND. .NOT. STREAMICE_NS_periodic) THEN
375 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT NORTH
376     IF ((x .gt. min_x_noflow_NORTH) .AND.
377     & (x .le. max_x_noflow_NORTH)) THEN
378     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0. _d 0
379     ENDIF
380     IF ((x .gt. min_x_noStress_NORTH) .AND.
381     & (x .le. max_x_noStress_NORTH)) THEN
382     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
383     ENDIF
384     IF ((x .gt. min_x_FluxBdry_NORTH) .AND.
385     & (x .le. max_x_FluxBdry_NORTH)) THEN
386     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
387     v_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_NORTH
388     ENDIF
389     IF ((x .gt. min_x_Dirich_NORTH) .AND.
390     & (x .le. max_x_Dirich_NORTH)) THEN
391     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
392     v_bdry_values_SI (i,j,bi,bj) = 0. _d 0
393     ENDIF
394     IF ((x .gt. min_x_CFBC_NORTH) .AND.
395     & (x .le. max_x_CFBC_NORTH)) THEN
396     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
397     ENDIF
398     ENDIF
399 dgoldberg 1.3
400 dgoldberg 1.6 #else /* ifndef STREAMICE_GEOM_FILE_SETUP */
401     ! BOUNDARY MASK CONFIGURED FROM FILES
402 dgoldberg 1.3
403 dgoldberg 1.4
404 dgoldberg 1.3 IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
405 dgoldberg 1.4 & temp_hmask(i,j,bi,bj).eq.0.0 .or.
406     & temp_hmask(i-1,j,bi,bj).eq.1.0) THEN
407 dgoldberg 1.3
408     ! WEST FACE OF CELL
409     maskFlag=INT(temp_ufacemask(i,j,bi,bj))
410     IF (maskFlag.eq.2) THEN
411     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
412     ELSEIF (maskFlag.eq.3) THEN
413     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
414     ELSEIF (maskFlag.eq.1) THEN
415     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
416     ELSEIF ((maskFlag.eq.0) .or.
417     & ((maskFlag.eq.-1) .and.
418     & (temp_hmask(i-1,j,bi,bj).eq.-1.0))) THEN
419     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
420     ELSE
421     STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
422     ENDIF
423    
424 dgoldberg 1.4 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 dgoldberg 1.3 ! EAST FACE OF CELL
430     maskFlag=INT(temp_ufacemask(i+1,j,bi,bj))
431     IF (maskFlag.eq.2) THEN
432     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 2.0
433     ELSEIF (maskFlag.eq.3) THEN
434     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 3.0
435     ELSEIF (maskFlag.eq.1) THEN
436     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 1.0
437     ELSEIF ((maskFlag.eq.0) .or.
438     & ((maskFlag.eq.-1) .and.
439     & (temp_hmask(i+1,j,bi,bj).eq.-1.0))) THEN
440     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 0.0
441     ELSE
442     STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = -1.0
443     ENDIF
444    
445 dgoldberg 1.4 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 dgoldberg 1.3 ! SOUTH FACE OF CELL
452     maskFlag=INT(temp_vfacemask(i,j,bi,bj))
453     IF (maskFlag.eq.2) THEN
454     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
455     ELSEIF (maskFlag.eq.3) THEN
456     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
457     ELSEIF (maskFlag.eq.1) THEN
458     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
459     ELSEIF ((maskFlag.eq.0) .or.
460     & ((maskFlag.eq.-1) .and.
461     & (temp_hmask(i,j-1,bi,bj).eq.-1.0))) THEN
462     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
463     ELSE
464     STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
465     ENDIF
466    
467 dgoldberg 1.4 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 dgoldberg 1.3 ! NORTH FACE OF CELL
474     maskFlag=INT(temp_vfacemask(i,j+1,bi,bj))
475     IF (maskFlag.eq.2) THEN
476     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 2.0
477     ELSEIF (maskFlag.eq.3) THEN
478     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 3.0
479     ELSEIF (maskFlag.eq.1) THEN
480     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 1.0
481     ELSEIF ((maskFlag.eq.0) .or.
482     & ((maskFlag.eq.-1) .and.
483     & (temp_hmask(i,j+1,bi,bj).eq.-1.0))) THEN
484     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 0.0
485     ELSE
486     STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = -1.0
487     ENDIF
488    
489     ENDIF ! hmask==1 or hmask==0
490    
491     #endif
492 heimbach 1.1
493     ENDDO
494     ENDDO
495     ENDDO
496     ENDDO
497    
498 dgoldberg 1.4 #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 dgoldberg 1.5 #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 dgoldberg 1.4
511 heimbach 1.1 _EXCH_XY_RL(k1AtC_str, myThid )
512     _EXCH_XY_RL(k2AtC_str, myThid )
513     _EXCH_XY_RL(STREAMICE_ufacemask_bdry, myThid )
514     _EXCH_XY_RL(STREAMICE_vfacemask_bdry, myThid )
515     _EXCH_XY_RL(u_bdry_values_SI, myThid )
516     _EXCH_XY_RL(v_bdry_values_SI, myThid )
517     _EXCH_XY_RL(u_flux_bdry_SI, myThid )
518     _EXCH_XY_RL(v_flux_bdry_SI, myThid )
519    
520     Xquad (1) = .5 * (1.-1./sqrt(3.))
521     Xquad (2) = .5 * (1.+1./sqrt(3.))
522    
523     CALL STREAMICE_INIT_PHI( myThid )
524    
525     #endif
526    
527     RETURN
528     END
529    

  ViewVC Help
Powered by ViewVC 1.1.22