/[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.21 - (hide 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 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.21 CHARACTER*(MAX_LEN_FNAM) STREAMICEBdotConfig
89 dgoldberg 1.7 CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracFile
90 dgoldberg 1.18 CHARACTER*(MAX_LEN_FNAM) STREAMICEGlenConstFile
91 dgoldberg 1.21 CHARACTER*(MAX_LEN_FNAM) STREAMICEBdotFile
92 dgoldberg 1.7 CHARACTER*(MAX_LEN_FNAM) STREAMICEvelOptimFile
93 dgoldberg 1.19 CHARACTER*(MAX_LEN_FNAM) STREAMICEtopogFile
94     CHARACTER*(MAX_LEN_FNAM) STREAMICEcostMaskFile
95 dgoldberg 1.18
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 dgoldberg 1.20
104     ! CHARACTER PARAMS FOR PETSC
105     CHARACTER*(MAX_LEN_FNAM) PETSC_SOLVER_TYPE
106     CHARACTER*(MAX_LEN_FNAM) PETSC_PRECOND_TYPE
107 dgoldberg 1.18
108    
109 heimbach 1.1 COMMON /STREAMICE_PARM_C/
110     & STREAMICEthickInit,
111     & STREAMICEthickFile,
112 dgoldberg 1.7 & STREAMICEcalveMaskFile,
113     & STREAMICEsigcoordInit,
114     & STREAMICEsigcoordFile,
115     & STREAMICEdelsigFile,
116     & STREAMICEbasalTracConfig,
117     & STREAMICEbasalTracFile,
118 dgoldberg 1.18 & STREAMICEvelOptimFile,
119 dgoldberg 1.19 & STREAMICEtopogFile,
120 dgoldberg 1.18 & STREAMICEhmaskFile,
121     & STREAMICEuFaceBdryFile,
122     & STREAMICEvFaceBdryFile,
123     & STREAMICEuDirichValsFile,
124     & STREAMICEvDirichValsFile,
125     & STREAMICEGlenConstFile,
126 dgoldberg 1.19 & STREAMICEGlenConstConfig,
127 dgoldberg 1.21 & STREAMICEBdotFile,
128     & STREAMICEBdotConfig,
129 dgoldberg 1.19 & STREAMICEcostMaskFile
130 dgoldberg 1.20
131     COMMON /PETSC_PARM_C/
132     & PETSC_SOLVER_TYPE,
133     & PETSC_PRECOND_TYPE
134 heimbach 1.1
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 heimbach 1.3 LOGICAL STREAMICE_construct_matrix
145 heimbach 1.1 LOGICAL STREAMICE_lower_cg_tol
146 dgoldberg 1.7 LOGICAL STREAMICE_diagnostic_only
147 dgoldberg 1.9 LOGICAL STREAMICE_ppm_driving_stress
148 dgoldberg 1.8 LOGICAL STREAMICE_h_ctrl_const_surf
149 dgoldberg 1.7
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 heimbach 1.1 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 heimbach 1.3 & STREAMICE_construct_matrix,
166 dgoldberg 1.7 & STREAMICE_lower_cg_tol,
167     & STREAMICE_NS_periodic, STREAMICE_EW_periodic,
168 dgoldberg 1.9 & STREAMICE_diagnostic_only,
169     & STREAMICE_ppm_driving_stress,
170     & STREAMICE_h_ctrl_const_surf
171 heimbach 1.1
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 dgoldberg 1.17 & STREAMICE_calve_mask,
217 dgoldberg 1.19 & STREAMICE_ctrl_mask,
218     & STREAMICE_cost_mask
219 heimbach 1.1 _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 dgoldberg 1.17 _RS STREAMICE_ctrl_mask
235 dgoldberg 1.19 & (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 heimbach 1.1
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 dgoldberg 1.6 & C_basal_friction,
266 dgoldberg 1.19 ! & A_glen,
267     & B_glen,
268 dgoldberg 1.18 & BDOT_streamice, ADOT_streamice, ! mass balances in meters per year
269 dgoldberg 1.16 & streamice_sigma_coord, streamice_delsigma,
270     & H_streamice_prev
271    
272     #ifdef STREAMICE_HYBRID_STRESS
273     COMMON /STREAMICE_HYBRID/
274 dgoldberg 1.7 & streamice_taubx, streamice_tauby,
275     & streamice_u_surf, streamice_v_surf,
276     & visc_streamice_full, streamice_omega, streamice_basal_geom,
277 dgoldberg 1.16 & streamice_vert_shear_uz, streamice_vert_shear_vz
278     #endif
279 dgoldberg 1.14
280 dgoldberg 1.9 #ifdef USE_ALT_RLOW
281 dgoldberg 1.14 COMMON /STREAMICE_RLOW/
282 dgoldberg 1.15 & R_low_si
283 dgoldberg 1.9 #endif
284 heimbach 1.10
285 dgoldberg 1.11
286 heimbach 1.1 _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 dgoldberg 1.19 ! _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 dgoldberg 1.16 _RL streamice_sigma_coord (Nr)
305     _RL streamice_delsigma (Nr)
306    
307 dgoldberg 1.9 #ifdef USE_ALT_RLOW
308     _RL R_low_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
309     #endif
310    
311 dgoldberg 1.16 C The following arrays are used for the hybrid stress balance
312     #ifdef STREAMICE_HYBRID_STRESS
313 dgoldberg 1.7 _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 dgoldberg 1.16 #endif
325    
326 dgoldberg 1.7
327 dgoldberg 1.18 _RL ADOT_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
328 dgoldberg 1.6 !! 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 dgoldberg 1.13 _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 heimbach 1.1
334    
335 dgoldberg 1.11
336     COMMON /STREAMICE_COST_RL/
337     & cost_func1_streamice
338     _RL cost_func1_streamice(nSx,nSy)
339    
340 heimbach 1.1 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 dgoldberg 1.20
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 heimbach 1.1
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