/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/STREAMICE.h
ViewVC logotype

Contents of /MITgcm_contrib/dgoldberg/streamice/STREAMICE.h

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


Revision 1.21 - (show annotations) (download)
Thu May 23 22:12:33 2013 UTC (12 years, 2 months ago) by dgoldberg
Branch: MAIN
Changes since 1.20: +4 -0 lines
File MIME type: text/plain
specify melt rate field

1 C---+----1--+-+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
2
3 #ifdef ALLOW_STREAMICE
4
5 C -------------------------- REAL PARAMS ---------------------------------------------------
6
7 COMMON /STREAMICE_PARMS_R/
8 & streamice_density, streamice_density_ocean_avg,
9 ! & A_glen_isothermal, n_glen, eps_glen_min, eps_u_min,
10 & B_glen_isothermal, n_glen, eps_glen_min, eps_u_min,
11 & C_basal_fric_const, n_basal_friction, streamice_input_flux_unif,
12 & streamice_vel_update, streamice_cg_tol, streamice_nonlin_tol,
13 & streamice_nonlin_tol_fp,
14 & streamice_CFL_factor, streamice_adjDump,
15 & streamice_bg_surf_slope_x, streamice_bg_surf_slope_y,
16 & streamice_kx_b_init, streamice_ky_b_init,
17 & streamice_wgt_drift, streamice_wgt_surf,
18 & streamice_wgt_avthick, streamice_wgt_vel,
19 & streamice_wgt_tikh,
20 & streamice_addl_backstress,
21 & streamice_smooth_gl_width
22 _RL streamice_density, streamice_density_ocean_avg
23 ! _RL A_glen_isothermal, n_glen, eps_glen_min, eps_u_min
24 _RL B_glen_isothermal, n_glen, eps_glen_min, eps_u_min
25 _RL C_basal_fric_const
26 _RL n_basal_friction
27 _RL streamice_input_flux_unif
28 _RL streamice_vel_update
29 _RL streamice_cg_tol, streamice_nonlin_tol
30 _RL streamice_nonlin_tol_fp
31 _RL streamice_CFL_factor
32 _RL streamice_adjDump
33 _RL streamice_bg_surf_slope_x, streamice_bg_surf_slope_y
34 _RL streamice_kx_b_init, streamice_ky_b_init
35 _RL streamice_wgt_drift, streamice_wgt_surf
36 _RL streamice_wgt_avthick, streamice_wgt_vel
37 _RL streamice_wgt_tikh
38 _RL streamice_addl_backstress
39 _RL streamice_smooth_gl_width
40
41
42 C parms for parameterized initial thickness
43 C SHELF_MAX_DRAFT: max thickness of ice in m
44 C SHELF_MIN_DRAFT: min thickness of ice in m
45 C SHELF_EDGE_POS: extent of ice shelf in (km?)
46 C SHELF_SLOPE_SCALE: dist over which shelf slopes (km?)
47 C SHELF_FLAT_WIDTH: width of flat shelf (km?)
48 C also must be aware of units (m for cartesian, deg for curvilinear, m/deg for CYLINDRICAL POLAR)
49 C FLOW_DIR: 1.0=west, 2.0=east, 3.0=south, 4.0=north
50
51 COMMON /STREAMICE_H_INIT_R/
52 & shelf_max_draft,
53 & shelf_min_draft,
54 & shelf_edge_pos,
55 & shelf_slope_scale,
56 & shelf_flat_width,
57 & flow_dir
58 _RL shelf_max_draft
59 _RL shelf_min_draft
60 _RL shelf_edge_pos
61 _RL shelf_slope_scale
62 _RL shelf_flat_width
63 _RL flow_dir
64
65 C -------------------------- INT PARAMS ---------------------------------------------------
66
67 INTEGER streamice_max_nl
68 PARAMETER ( streamice_max_nl = 100 )
69
70 COMMON /STREAMICE_PARMS_I/
71 & streamice_max_cg_iter, streamice_max_nl_iter,
72 & streamice_vel_upd_counter, streamice_nstep_velocity,
73 & streamice_n_sub_regularize
74 INTEGER streamice_max_cg_iter, streamice_max_nl_iter
75 INTEGER streamice_vel_upd_counter, streamice_nstep_velocity
76 INTEGER streamice_n_sub_regularize
77
78 C -------------------------- CHAR PARAMS ---------------------------------------------------
79
80 CHARACTER*(MAX_LEN_FNAM) STREAMICEthickFile
81 CHARACTER*(MAX_LEN_FNAM) STREAMICEthickInit
82 CHARACTER*(MAX_LEN_FNAM) STREAMICEcalveMaskFile
83 CHARACTER*(MAX_LEN_FNAM) STREAMICEsigcoordInit
84 CHARACTER*(MAX_LEN_FNAM) STREAMICEsigcoordFile
85 CHARACTER*(MAX_LEN_FNAM) STREAMICEdelsigFile
86 CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracConfig
87 CHARACTER*(MAX_LEN_FNAM) STREAMICEGlenConstConfig
88 CHARACTER*(MAX_LEN_FNAM) STREAMICEBdotConfig
89 CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracFile
90 CHARACTER*(MAX_LEN_FNAM) STREAMICEGlenConstFile
91 CHARACTER*(MAX_LEN_FNAM) STREAMICEBdotFile
92 CHARACTER*(MAX_LEN_FNAM) STREAMICEvelOptimFile
93 CHARACTER*(MAX_LEN_FNAM) STREAMICEtopogFile
94 CHARACTER*(MAX_LEN_FNAM) STREAMICEcostMaskFile
95
96 ! THE FOLLOWING FILENAMES ARE FOR SPECIFYING IRREGULAR DOMAIN GEOMETRIES
97 ! (i.e. boundaries that do not conform with rectangular walls)
98 CHARACTER*(MAX_LEN_FNAM) STREAMICEhmaskFile
99 CHARACTER*(MAX_LEN_FNAM) STREAMICEuFaceBdryFile
100 CHARACTER*(MAX_LEN_FNAM) STREAMICEvFaceBdryFile
101 CHARACTER*(MAX_LEN_FNAM) STREAMICEuDirichValsFile
102 CHARACTER*(MAX_LEN_FNAM) STREAMICEvDirichValsFile
103
104 ! CHARACTER PARAMS FOR PETSC
105 CHARACTER*(MAX_LEN_FNAM) PETSC_SOLVER_TYPE
106 CHARACTER*(MAX_LEN_FNAM) PETSC_PRECOND_TYPE
107
108
109 COMMON /STREAMICE_PARM_C/
110 & STREAMICEthickInit,
111 & STREAMICEthickFile,
112 & STREAMICEcalveMaskFile,
113 & STREAMICEsigcoordInit,
114 & STREAMICEsigcoordFile,
115 & STREAMICEdelsigFile,
116 & STREAMICEbasalTracConfig,
117 & STREAMICEbasalTracFile,
118 & STREAMICEvelOptimFile,
119 & STREAMICEtopogFile,
120 & STREAMICEhmaskFile,
121 & STREAMICEuFaceBdryFile,
122 & STREAMICEvFaceBdryFile,
123 & STREAMICEuDirichValsFile,
124 & STREAMICEvDirichValsFile,
125 & STREAMICEGlenConstFile,
126 & STREAMICEGlenConstConfig,
127 & STREAMICEBdotFile,
128 & STREAMICEBdotConfig,
129 & STREAMICEcostMaskFile
130
131 COMMON /PETSC_PARM_C/
132 & PETSC_SOLVER_TYPE,
133 & PETSC_PRECOND_TYPE
134
135 C -------------------------- LOGICAL PARAMS ---------------------------------------------------
136
137 LOGICAL STREAMICEison
138 LOGICAL STREAMICE_dump_mdsio
139 LOGICAL STREAMICE_tave_mdsio
140 LOGICAL STREAMICE_dump_mnc
141 LOGICAL STREAMICE_tave_mnc
142 LOGICAL STREAMICE_GL_regularize, STREAMICE_move_front
143 LOGICAL STREAMICE_calve_to_mask
144 LOGICAL STREAMICE_construct_matrix
145 LOGICAL STREAMICE_lower_cg_tol
146 LOGICAL STREAMICE_diagnostic_only
147 LOGICAL STREAMICE_ppm_driving_stress
148 LOGICAL STREAMICE_h_ctrl_const_surf
149
150 C The following parameters specify periodic boundary conditions.
151 C For now this will completely override all other boundary conditions
152 C and apply to the entire boundary
153
154 LOGICAL STREAMICE_NS_periodic
155 LOGICAL STREAMICE_EW_periodic
156
157 C LOGICAL STREAMICE_hybrid_stress
158
159 COMMON /STREAMICE_PARM_L/
160 & STREAMICEison,
161 & STREAMICE_dump_mdsio, STREAMICE_tave_mdsio,
162 & STREAMICE_dump_mnc, STREAMICE_tave_mnc,
163 & STREAMICE_GL_regularize, STREAMICE_move_front,
164 & STREAMICE_calve_to_mask,
165 & STREAMICE_construct_matrix,
166 & STREAMICE_lower_cg_tol,
167 & STREAMICE_NS_periodic, STREAMICE_EW_periodic,
168 & STREAMICE_diagnostic_only,
169 & STREAMICE_ppm_driving_stress,
170 & STREAMICE_h_ctrl_const_surf
171
172 C -------------------------- AND NOW ARRAYS ---------------------------------------------------
173
174 C EXPLANATION OF MASKS
175
176 C STREAMICE_hmask VALUES 1=ice-covered cell
177 C 2=partially ice-covered cell (no dynamics)
178 C 0=ice-free cell (for now, it means the cell
179 C is treated as an open-ocean cell
180 C that ice shelf can flow into)
181 C -1=outside computational domain; will not change
182 C
183 C STREAMICE_umask VALUES 1=degree of freedom;
184 C 0=homogeneous dirich condition
185 C 3=inhomogeneous dirich condition
186
187 C STREAMICE_vmask similar to umask
188
189 C STREAMICE_ufacemask VALUES -1=unset,
190 C 0=no-flow boundary,
191 C 1=no-stress bdry
192 C 2=stress bdry condition,
193 C 3=inhomogeneous dirichlet boundary,
194 C 4=flux boundary: at these faces a flux will be specified by u_flux_bdry_SI
195 C
196 C STREAMICE_vfacemask similar to ufacemask
197 C STREAMICE_ufacemask_bdry field initialized at the beginning of simulation
198 C specified all ufacemask values except for calving front
199 C CONSTANT FOR A SIMULATION (ie not changes after streamice_init_fixed)
200 C STREAMICE_vfacemask_bdry CONSTANT FOR A SIMULATION
201 C STREAMICE_calve_mask specified allowed extent of ice shelf
202 C (should be integer, but don't know howvi sre to read ints from file)
203 C not necessarily used, but CONSTANT FOR A SIMULATION
204 C STREAMICE_float_cond will only be used if partial floatation is implemented
205
206 C Short arrays (e.g. masks)
207 COMMON /STREAMICE_FIELDS_RS/
208 & STREAMICE_hmask,
209 & STREAMICE_umask,
210 & STREAMICE_vmask,
211 & STREAMICE_ufacemask,
212 & STREAMICE_vfacemask,
213 & STREAMICE_ufacemask_bdry,
214 & STREAMICE_vfacemask_bdry,
215 & STREAMICE_float_cond,
216 & STREAMICE_calve_mask,
217 & STREAMICE_ctrl_mask,
218 & STREAMICE_cost_mask
219 _RS STREAMICE_hmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
220 _RS STREAMICE_umask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
221 _RS STREAMICE_vmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
222 _RS STREAMICE_ufacemask
223 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
224 _RS STREAMICE_vfacemask
225 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
226 _RS STREAMICE_ufacemask_bdry
227 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
228 _RS STREAMICE_vfacemask_bdry
229 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
230 _RS STREAMICE_float_cond
231 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
232 _RS STREAMICE_calve_mask
233 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
234 _RS STREAMICE_ctrl_mask
235 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
236 _RS STREAMICE_cost_mask
237 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
238
239 C NOTES :
240 C STREAMICE_ufacemask_bdry, STREAMICE_vfacemask_bdry ARE CONSTANT (FIXED)
241 C STREAMICE_hmask IS PART OF **STATE**
242 C All other masks are updated within a timestep BASED ON STREAMICE_hmask
243
244 C Number of quadrature points are hardcoded.. could turn into a CPP macro
245
246 C REAL ARRAYS
247
248 COMMON /STREAMICE_FIELDS_RL/
249 & H_streamice,
250 & U_streamice,
251 & V_streamice,
252 & visc_streamice,
253 & tau_beta_eff_streamice,
254 & float_frac_streamice,
255 & base_el_streamice,
256 & surf_el_streamice,
257 & area_shelf_streamice,
258 & mass_ice_streamice,
259 & u_flux_bdry_SI,
260 & v_flux_bdry_SI,
261 & h_bdry_values_SI,
262 & u_bdry_values_SI,
263 & v_bdry_values_SI,
264 & STREAMICE_dummy_array,
265 & C_basal_friction,
266 ! & A_glen,
267 & B_glen,
268 & BDOT_streamice, ADOT_streamice, ! mass balances in meters per year
269 & streamice_sigma_coord, streamice_delsigma,
270 & H_streamice_prev
271
272 #ifdef STREAMICE_HYBRID_STRESS
273 COMMON /STREAMICE_HYBRID/
274 & streamice_taubx, streamice_tauby,
275 & streamice_u_surf, streamice_v_surf,
276 & visc_streamice_full, streamice_omega, streamice_basal_geom,
277 & streamice_vert_shear_uz, streamice_vert_shear_vz
278 #endif
279
280 #ifdef USE_ALT_RLOW
281 COMMON /STREAMICE_RLOW/
282 & R_low_si
283 #endif
284
285
286 _RL H_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
287 _RL U_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
288 _RL V_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
289 _RL visc_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
290 _RL tau_beta_eff_streamice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
291 _RL float_frac_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
292 _RL surf_el_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
293 _RL base_el_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
294 _RL area_shelf_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
295 _RL mass_ice_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
296 _RL u_flux_bdry_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
297 _RL v_flux_bdry_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
298 _RL h_bdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
299 _RL u_bdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
300 _RL v_bdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
301 _RL C_basal_friction (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
302 ! _RL A_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
303 _RL B_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
304 _RL streamice_sigma_coord (Nr)
305 _RL streamice_delsigma (Nr)
306
307 #ifdef USE_ALT_RLOW
308 _RL R_low_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
309 #endif
310
311 C The following arrays are used for the hybrid stress balance
312 #ifdef STREAMICE_HYBRID_STRESS
313 _RL streamice_taubx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
314 _RL streamice_tauby (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
315 _RL streamice_u_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
316 _RL streamice_v_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
317 _RL streamice_omega (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
318 _RL streamice_basal_geom
319 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
320 _RL visc_streamice_full
321 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
322 _RL streamice_vert_shear_uz (Nr)
323 _RL streamice_vert_shear_vz (Nr)
324 #endif
325
326
327 _RL ADOT_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
328 !! IMPORTANT: MELT RATE IN METERS PER YEAR
329 !! POSITIVE WHERE MELTING
330 _RL BDOT_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
331 _RL H_streamice_prev (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
332 _RL STREAMICE_dummy_array (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
333
334
335
336 COMMON /STREAMICE_COST_RL/
337 & cost_func1_streamice
338 _RL cost_func1_streamice(nSx,nSy)
339
340 C NOTES :
341 C REAL ARRAYS THAT COMPRISE "STATE":
342 C H_streamice,
343 C U_streamice,
344 C V_streamice,
345 C visc_streamice,
346 C tau_beta_eff_streamice,
347 C area_shelf_streamice
348 C (and don't forget STREAMICE_hmask)
349 C
350 C visc & tau are now calculated based on U,V in streamice_vel_solve
351 C but with Hybdrid stress formulation they will become part of
352 C velocity initial guess, so they are kept
353
354 #ifdef ALLOW_PETSC
355 COMMON /STREAMICE_PETSC_DOFS_COMMON/
356 & streamice_petsc_dofs_u,
357 & streamice_petsc_dofs_v,
358 & n_dofs_process
359 _RS streamice_petsc_dofs_u
360 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
361 _RS streamice_petsc_dofs_v
362 & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
363 INTEGER n_dofs_process (0:nPx*nPy-1)
364 #endif
365
366
367 #endif /* ALLOW_STREAMICE */
368
369 CEH3 ;;; Local Variables: ***
370 CEH3 ;;; mode:fortran ***
371 CEH3 ;;; End: ***

  ViewVC Help
Powered by ViewVC 1.1.22