MOM6
|
The control structure for the ice shelf dynamics.
Definition at line 41 of file MOM_ice_shelf_dynamics.F90.
Public variables and constants | |
real, dimension(:,:), pointer | u_shelf => NULL() |
the zonal (?) velocity of the ice shelf/sheet on q-points (B grid) [m s-1]?? | |
real, dimension(:,:), pointer | v_shelf => NULL() |
the meridional velocity of the ice shelf/sheet on q-points (B grid) [m s-1]?? | |
real, dimension(:,:), pointer | u_face_mask => NULL() |
mask for velocity boundary conditions on the C-grid u-face - this is because the FEM cares about FACES THAT GET INTEGRATED OVER, not vertices. Will represent boundary conditions on computational boundary (or permanent boundary between fast-moving and near-stagnant ice FOR NOW: 1=interior bdry, 0=no-flow boundary, 2=stress bdry condition, 3=inhomogeneous dirichlet boundary, 4=flux boundary: at these faces a flux will be specified which will override velocities; a homogeneous velocity condition will be specified (this seems to give the solver less difficulty) | |
real, dimension(:,:), pointer | v_face_mask => NULL() |
A mask for velocity boundary conditions on the C-grid v-face, with valued defined similarly to u_face_mask. | |
real, dimension(:,:), pointer | u_face_mask_bdry => NULL() |
A duplicate copy of u_face_mask? | |
real, dimension(:,:), pointer | v_face_mask_bdry => NULL() |
A duplicate copy of v_face_mask? | |
real, dimension(:,:), pointer | u_flux_bdry_val => NULL() |
The ice volume flux into the cell through open boundary u-faces (where u_face_mask=4) [Z m2 s-1 ~> m3 s-1]?? | |
real, dimension(:,:), pointer | v_flux_bdry_val => NULL() |
The ice volume flux into the cell through open boundary v-faces (where v_face_mask=4) [Z m2 s-1 ~> m3 s-1]?? | |
real, dimension(:,:), pointer | umask => NULL() |
u-mask on the actual degrees of freedom (B grid) 1=normal node, 3=inhomogeneous boundary node, 0 - no flow node (will also get ice-free nodes) | |
real, dimension(:,:), pointer | vmask => NULL() |
v-mask on the actual degrees of freedom (B grid) 1=normal node, 3=inhomogeneous boundary node, 0 - no flow node (will also get ice-free nodes) | |
real, dimension(:,:), pointer | calve_mask => NULL() |
a mask to prevent the ice shelf front from advancing past its initial position (but it may retreat) | |
real, dimension(:,:), pointer | t_shelf => NULL() |
Veritcally integrated temperature in the ice shelf/stream, on corner-points (B grid) [degC]. | |
real, dimension(:,:), pointer | tmask => NULL() |
A mask on tracer points that is 1 where there is ice. | |
real, dimension(:,:), pointer | ice_visc => NULL() |
Glen's law ice viscosity, perhaps in [m]. | |
real, dimension(:,:), pointer | thickness_bdry_val => NULL() |
The ice thickness at an inflowing boundary [Z ~> m]. | |
real, dimension(:,:), pointer | u_bdry_val => NULL() |
The zonal ice velocity at inflowing boundaries [m s-1]?? | |
real, dimension(:,:), pointer | v_bdry_val => NULL() |
The meridional ice velocity at inflowing boundaries [m s-1]?? | |
real, dimension(:,:), pointer | h_bdry_val => NULL() |
The ice thickness at inflowing boundaries [m]. | |
real, dimension(:,:), pointer | t_bdry_val => NULL() |
The ice temperature at inflowing boundaries [degC]. | |
real, dimension(:,:), pointer | taub_beta_eff => NULL() |
nonlinear part of "linearized" basal stress. The exact form depends on basal law exponent and/or whether flow is "hybridized" a la Goldberg 2011 | |
real, dimension(:,:), pointer | od_rt => NULL() |
A running total for calculating OD_av. | |
real, dimension(:,:), pointer | float_frac_rt => NULL() |
A running total for calculating float_frac. | |
real, dimension(:,:), pointer | od_av => NULL() |
The time average open ocean depth [Z ~> m]. | |
real, dimension(:,:), pointer | float_frac => NULL() |
Fraction of the time a cell is "exposed", i.e. the column thickness is below a threshold. | |
integer | od_rt_counter = 0 |
A counter of the number of contributions to OD_rt. | |
real | velocity_update_time_step |
The time interval over which to update the ice shelf velocity using the nonlinear elliptic equation, or 0 to update every timestep [s]. | |
real | elapsed_velocity_time |
The elapsed time since the ice velocies were last udated [s]. | |
real | g_earth |
The gravitational acceleration [m s-2]. | |
real | density_ice |
A typical density of ice [kg m-3]. | |
logical | gl_regularize |
Specifies whether to regularize the floatation condition at the grounding line as in Goldberg Holland Schoof 2009. | |
integer | n_sub_regularize |
partition of cell over which to integrate for interpolated grounding line the (rectangular) is divided into nxn equally-sized rectangles, over which basal contribution is integrated (iterative quadrature) | |
logical | gl_couple |
whether to let the floatation condition be determined by ocean column thickness means update_OD_ffrac will be called (note: GL_regularize and GL_couple should be exclusive) | |
real | cfl_factor |
A factor used to limit subcycled advective timestep in uncoupled runs i.e. dt <= CFL_factor * min(dx / u) | |
real | a_glen_isothermal |
Ice viscosity parameter in Glen's Lawa, [Pa-1/3 year]. | |
real | n_glen |
Nonlinearity exponent in Glen's Law. | |
real | eps_glen_min |
Min. strain rate to avoid infinite Glen's law viscosity, [year-1]. | |
real | c_basal_friction |
Ceofficient in sliding law tau_b = C u^(n_basal_friction), in units="Pa (m-a)-(n_basal_friction) | |
real | n_basal_friction |
Exponent in sliding law tau_b = C u^(m_slide) | |
real | density_ocean_avg |
This does not affect ocean circulation or thermodynamics. It is used to estimate the gravitational driving force at the shelf front (until we think of a better way to do it, but any difference will be negligible). | |
real | thresh_float_col_depth |
The water column depth over which the shelf if considered to be floating. | |
logical | moving_shelf_front |
Specify whether to advance shelf front (and calve). | |
logical | calve_to_mask |
If true, calve off the ice shelf when it passes the edge of a mask. | |
real | min_thickness_simple_calve |
min. ice shelf thickness criteria for calving [Z ~> m]. | |
real | cg_tolerance |
The tolerance in the CG solver, relative to initial residual, that deterimnes when to stop the conguage gradient iterations. | |
real | nonlinear_tolerance |
The fractional nonlinear tolerance, relative to the initial error, that sets when to stop the iterative velocity solver. | |
integer | cg_max_iterations |
The maximum number of iterations that can be used in the CG solver. | |
integer | nonlin_solve_err_mode |
1: exit vel solve based on nonlin residual 2: exit based on "fixed point" metric (|u - u_last| / |u| < tol where | | is infty-norm | |
logical | use_reproducing_sums |
Use reproducing global sums. | |
logical | debug |
If true, write verbose checksums for debugging purposes and use reproducible sums. | |
logical | module_is_initialized = .false. |
True if this module has been initialized. | |
integer | id_u_shelf = -1 |
Diagnostic handles. | |
integer | id_v_shelf = -1 |
Diagnostic handles. | |
integer | id_t_shelf = -1 |
Diagnostic handles. | |
integer | id_float_frac = -1 |
Diagnostic handles. | |
integer | id_col_thick = -1 |
Diagnostic handles. | |
integer | id_od_av = -1 |
Diagnostic handles. | |
integer | id_u_mask = -1 |
Diagnostic handles. | |
integer | id_v_mask = -1 |
Diagnostic handles. | |
integer | id_t_mask = -1 |
Diagnostic handles. | |
type(diag_ctrl), pointer | diag => NULL() |
A structure that is used to control diagnostic output. | |