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

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

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


Revision 1.19 - (hide annotations) (download)
Thu Mar 7 15:23:19 2013 UTC (12 years, 4 months ago) by dgoldberg
Branch: MAIN
Changes since 1.18: +21 -8 lines
File MIME type: text/plain
bug fixes, GL smoothing, changes for controlling bathym with const surf elev

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

  ViewVC Help
Powered by ViewVC 1.1.22