/[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.2 - (show annotations) (download)
Tue Sep 18 17:06:48 2012 UTC (12 years, 10 months ago) by dgoldberg
Branch: MAIN
Changes since 1.1: +28 -6 lines
changes for periodic boundary conds and hybrid stress balance

1 C $Header: /u/gcmpack/MITgcm_contrib/dgoldberg/streamice/streamice_init_fixed.F,v 1.1 2012/03/29 15:59:21 heimbach 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
26 C myThid :: my Thread Id number
27 INTEGER myThid
28 CEOP
29
30 C !LOCAL VARIABLES:
31 C === Local variables ===
32 INTEGER bi, bj, i, j, Gi, Gj, m
33 _RL x, y
34 CHARACTER*(MAX_LEN_MBUF) msgBuf
35
36 #ifdef ALLOW_STREAMICE
37
38 #ifdef ALLOW_MNC
39
40 IF ( useMNC .AND. (streamice_tave_mnc.OR.streamice_dump_mnc)
41 & ) THEN
42 C CALL STREAMICE_MNC_INIT( myThid )
43 ENDIF
44 #endif /* ALLOW_MNC */
45
46 #ifdef ALLOW_DIAGNOSTICS
47 IF ( useDiagnostics ) THEN
48 CALL STREAMICE_INIT_DIAGNOSTICS( myThid )
49 ENDIF
50 #endif
51
52 IF ( STREAMICE_calve_to_mask ) THEN
53 IF ( STREAMICEcalveMaskFile .NE. ' ') THEN
54 _BARRIER
55 C The 0 is the "iteration" argument. The ' ' is an empty suffix
56 CALL READ_FLD_XY_RL( STREAMICEcalveMaskFile, ' ',
57 & STREAMICE_calve_mask, 0, myThid )
58 ELSE
59 WRITE(msgBuf,'(A)') 'INIT CALVE MASK - NOT IMPLENTED'
60 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
61 & SQUEEZE_RIGHT , 1)
62 ENDIF
63 ENDIF
64
65
66 ! INITIALIZE SIGMA COORD
67 IF (STREAMICEsigcoordInit.eq.'FILE') THEN
68 WRITE(msgBuf,'(A)') 'SIG FROM FILE - NOT IMPLENTED'
69 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
70 & SQUEEZE_RIGHT , 1)
71 ELSEIF (STREAMICEsigcoordInit.eq.'UNIFORM') THEN
72 do m=1,Nr
73 streamice_sigma_coord (m) = 1./Nr * (m-0.5)
74 streamice_delsigma (m) = 1./Nr
75 enddo
76 ELSE
77 WRITE(msgBuf,'(A)') 'SIG COORD INIT - NOT IMPLENTED'
78 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
79 & SQUEEZE_RIGHT , 1)
80 ENDIF
81 !!!!!!!!!!!!!!!!!!!!!!!!!
82
83 C- fill in the overlap (+ BARRIER):
84 _EXCH_XY_RL(STREAMICE_calve_mask, myThid )
85
86 DO bj = myByLo(myThid), myByHi(myThid)
87 DO bi = myBxLo(myThid), myBxHi(myThid)
88 DO j=1,sNy
89 DO i=1,sNx
90
91 C INIT VALUES FOR METRIC TERMS
92
93 k1AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
94 & (dxG(i+1,j,bi,bj)-dxG(i,j,bi,bj))
95 k2AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
96 & (dyG(i,j+1,bi,bj)-dyG(i,j,bi,bj))
97
98 #ifdef STREAMICE_HYBRID_STRESS
99 streamice_basal_geom (i,j,bi,bj) = 1.0
100 #endif
101
102 C INIT BDRY CONDITIONS
103
104 Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
105 Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
106 x = xC(i,j,bi,bj)
107 y = yC(i,j,bi,bj)
108
109 STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
110 STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
111
112 IF (Gi.EQ.1 .AND. .NOT. STREAMICE_EW_periodic) THEN
113 C INITIALIZE BOUNDARY CONDS AT WEST
114 IF ((y .gt. min_y_noflow_WEST) .AND.
115 & (y .le. max_y_noflow_WEST)) THEN
116 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
117 ENDIF
118 IF ((y .gt. min_y_noStress_WEST) .AND.
119 & (y .le. max_y_noStress_WEST)) THEN
120 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
121 ENDIF
122 IF ((y .gt. min_y_FluxBdry_WEST) .AND.
123 & (y .le. max_y_FluxBdry_WEST)) THEN
124 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
125 u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_WEST
126 ENDIF
127 IF ((y .gt. min_y_Dirich_WEST) .AND.
128 & (y .le. max_y_Dirich_WEST)) THEN
129 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
130 u_bdry_values_SI (i,j,bi,bj) = 0.0
131 ENDIF
132 IF ((y .gt. min_y_CFBC_WEST) .AND.
133 & (y .le. max_y_CFBC_WEST)) THEN
134 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
135 ENDIF
136 ENDIF
137
138 IF (Gi.EQ.Nx .AND. .NOT. STREAMICE_EW_periodic) THEN
139 C INITIALIZE BOUNDARY CONDS AT EAST
140 IF ((y .gt. min_y_noflow_EAST) .AND.
141 & (y .le. max_y_noflow_EAST)) THEN
142 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
143 ENDIF
144 IF ((y .gt. min_y_noStress_EAST) .AND.
145 & (y .le. max_y_noStress_EAST)) THEN
146 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
147 ENDIF
148 IF ((y .gt. min_y_FluxBdry_EAST) .AND.
149 & (y .le. max_y_FluxBdry_EAST)) THEN
150 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
151 u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_EAST
152 ENDIF
153 IF ((y .gt. min_y_Dirich_EAST) .AND.
154 & (y .le. max_y_Dirich_EAST)) THEN
155 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
156 u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
157 ENDIF
158 IF ((y .gt. min_y_CFBC_EAST) .AND.
159 & (y .le. max_y_CFBC_EAST)) THEN
160 STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
161 ENDIF
162 ENDIF
163
164 IF (Gj.EQ.1 .AND. .NOT. STREAMICE_NS_periodic) THEN
165 C INITIALIZE BOUNDARY CONDS AT SOUTH
166 IF ((x .gt. min_x_noflow_SOUTH) .AND.
167 & (x .le. max_x_noflow_SOUTH)) THEN
168 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
169 ENDIF
170 IF ((x .gt. min_x_noStress_SOUTH) .AND.
171 & (x .le. max_x_noStress_SOUTH)) THEN
172 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
173 ENDIF
174 IF ((x .gt. min_x_FluxBdry_SOUTH) .AND.
175 & (x .le. max_x_FluxBdry_SOUTH)) THEN
176 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
177 u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_SOUTH
178 ENDIF
179 IF ((x .gt. min_x_Dirich_SOUTH) .AND.
180 & (x .le. max_x_Dirich_SOUTH)) THEN
181 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
182 u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
183 ENDIF
184 IF ((x .gt. min_x_CFBC_SOUTH) .AND.
185 & (x .le. max_x_CFBC_SOUTH)) THEN
186 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
187 ENDIF
188 ENDIF
189
190 IF (Gj.EQ.Ny .AND. .NOT. STREAMICE_NS_periodic) THEN
191 C INITIALIZE BOUNDARY CONDS AT NORTH
192 IF ((x .gt. min_x_noflow_NORTH) .AND.
193 & (x .le. max_x_noflow_NORTH)) THEN
194 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0. _d 0
195 ENDIF
196 IF ((x .gt. min_x_noStress_NORTH) .AND.
197 & (x .le. max_x_noStress_NORTH)) THEN
198 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
199 ENDIF
200 IF ((x .gt. min_x_FluxBdry_NORTH) .AND.
201 & (x .le. max_x_FluxBdry_NORTH)) THEN
202 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
203 v_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_NORTH
204 ENDIF
205 IF ((x .gt. min_x_Dirich_NORTH) .AND.
206 & (x .le. max_x_Dirich_NORTH)) THEN
207 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
208 v_bdry_values_SI (i,j,bi,bj) = 0. _d 0
209 ENDIF
210 IF ((x .gt. min_x_CFBC_NORTH) .AND.
211 & (x .le. max_x_CFBC_NORTH)) THEN
212 STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
213 ENDIF
214 ENDIF
215
216 ENDDO
217 ENDDO
218 ENDDO
219 ENDDO
220
221 _EXCH_XY_RL(k1AtC_str, myThid )
222 _EXCH_XY_RL(k2AtC_str, myThid )
223 _EXCH_XY_RL(STREAMICE_ufacemask_bdry, myThid )
224 _EXCH_XY_RL(STREAMICE_vfacemask_bdry, myThid )
225 _EXCH_XY_RL(u_bdry_values_SI, myThid )
226 _EXCH_XY_RL(v_bdry_values_SI, myThid )
227 _EXCH_XY_RL(u_flux_bdry_SI, myThid )
228 _EXCH_XY_RL(v_flux_bdry_SI, myThid )
229
230 Xquad (1) = .5 * (1.-1./sqrt(3.))
231 Xquad (2) = .5 * (1.+1./sqrt(3.))
232
233 CALL STREAMICE_INIT_PHI( myThid )
234
235
236
237 #endif
238
239 RETURN
240 END
241

  ViewVC Help
Powered by ViewVC 1.1.22