mom_ice_shelf_dynamics module reference¶
Implements a crude placeholder for a later implementation of full ice shelf dynamics.
Data Types¶
The control structure for the ice shelf dynamics. |
|
A container for loop bounds. |
Functions/Subroutines¶
used for flux limiting in advective subroutines Van Leer limiter (source: Wikipedia) The return value is between 0 and 2 [nondim]. |
|
Calculate area of quadrilateral. |
|
This subroutine is used to register any fields related to the ice shelf dynamics that should be written to or read from the restart file. |
|
Initializes shelf model data, parameters and diagnostics. |
|
This function returns the global maximum advective timestep that can be taken based on the current ice velocities. |
|
This subroutine updates the ice shelf velocities, mass, stresses and properties due to the ice shelf dynamics. |
|
This subroutine takes the velocity (on the Bgrid) and timesteps h_t = - div (uh) once. |
|
Apply a very simple calving law using a minimum thickness rule. |
|
returns the diagonal entries of the matrix for a Jacobi preconditioning |
|
Update depth integrated viscosity, based on horizontal strain rates, and also update the nonlinear part of the basal traction. |
|
This subroutine calculates the gradients of bilinear basis elements that that are centered at the vertices of the cell. |
|
This subroutine calculates the gradients of bilinear basis elements that are centered at the vertices of the cell using a locally orthogoal MOM6 grid. |
|
Interpolate the ice shelf thickness from tracer point to nodal points, subject to a mask. |
|
Deallocates all memory associated with the ice shelf dynamics module. |
|
This subroutine updates the vertically averaged ice shelf temperature. |
|
Detailed Description¶
Implements a crude placeholder for a later implementation of full ice shelf dynamics.
Type Documentation¶
-
type
mom_ice_shelf_dynamics/ice_shelf_dyn_cs¶ The control structure for the ice shelf dynamics.
- Type fields
%id_u_shelf[integer] :: Diagnostic handles.%id_v_shelf[integer] :: Diagnostic handles.%id_t_shelf[integer] :: Diagnostic handles.%id_ground_frac[integer] :: Diagnostic handles.%id_col_thick[integer] :: Diagnostic handles.%id_od_av[integer] :: Diagnostic handles.%id_u_mask[integer] :: Diagnostic handles.%id_v_mask[integer] :: Diagnostic handles.%id_t_mask[integer] :: Diagnostic handles.%u_shelf[real(:,:),pointer] :: the zonal velocity of the ice shelf/sheet on q-points (B grid) [L T-1 ~> m s-1]%v_shelf[real(:,:),pointer] :: the meridional velocity of the ice shelf/sheet on q-points (B grid) [L T-1 ~> m s-1]%u_face_mask[real(:,:),pointer] :: 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)%v_face_mask[real(:,:),pointer] :: A mask for velocity boundary conditions on the C-grid v-face, with valued defined similarly to u_face_mask.%u_face_mask_bdry[real(:,:),pointer] :: A duplicate copy of u_face_mask?%v_face_mask_bdry[real(:,:),pointer] :: A duplicate copy of v_face_mask?%u_flux_bdry_val[real(:,:),pointer] :: The ice volume flux per unit face length into the cell through open boundary u-faces (where u_face_mask=4) [Z L T-1 ~> m2 s-1].%v_flux_bdry_val[real(:,:),pointer] :: The ice volume flux per unit face length into the cell through open boundary v-faces (where v_face_mask=4) [Z L T-1 ~> m2 s-1]??%umask[real(:,:),pointer] :: 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)%vmask[real(:,:),pointer] :: 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)%calve_mask[real(:,:),pointer] :: a mask to prevent the ice shelf front from advancing past its initial position (but it may retreat)%t_shelf[real(:,:),pointer] :: Vertically integrated temperature in the ice shelf/stream, on corner-points (B grid) [degC].%tmask[real(:,:),pointer] :: A mask on tracer points that is 1 where there is ice.%ice_visc[real(:,:),pointer] :: Glen’s law ice viscosity, often in [R L4 Z T-1 ~> kg m2 s-1].%thickness_bdry_val[real(:,:),pointer] :: The ice thickness at an inflowing boundary [Z ~> m].%u_bdry_val[real(:,:),pointer] :: The zonal ice velocity at inflowing boundaries [L yr-1 ~> m yr-1].%v_bdry_val[real(:,:),pointer] :: The meridional ice velocity at inflowing boundaries [L yr-1 ~> m yr-1].%h_bdry_val[real(:,:),pointer] :: The ice thickness at inflowing boundaries [m].%t_bdry_val[real(:,:),pointer] :: The ice temperature at inflowing boundaries [degC].%basal_traction[real(:,:),pointer] :: The area integrated nonlinear part of “linearized” basal stress [R Z L2 T-1 ~> kg s-1]. The exact form depends on basal law exponent and/or whether flow is “hybridized” a la Goldberg 2011.%od_rt[real(:,:),pointer] :: A running total for calculating OD_av.%ground_frac_rt[real(:,:),pointer] :: A running total for calculating ground_frac.%od_av[real(:,:),pointer] :: The time average open ocean depth [Z ~> m].%ground_frac[real(:,:),pointer] :: Fraction of the time a cell is “exposed”, i.e. the column thickness is below a threshold and interacting with the rock [nondim]. When this is 1, the ice-shelf is grounded.%od_rt_counter[integer] :: A counter of the number of contributions to OD_rt.%velocity_update_time_step[real] :: The time interval over which to update the ice shelf velocity using the nonlinear elliptic equation, or 0 to update every timestep [T ~> s].%elapsed_velocity_time[real] :: The elapsed time since the ice velocities were last updated [T ~> s].%g_earth[real] :: The gravitational acceleration [L2 Z-1 T-2 ~> m s-2].%density_ice[real] :: A typical density of ice [R ~> kg m-3].%gl_regularize[logical] :: Specifies whether to regularize the floatation condition at the grounding line as in Goldberg Holland Schoof 2009.%n_sub_regularize[integer] :: 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)%gl_couple[logical] :: 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)%cfl_factor[real] :: A factor used to limit subcycled advective timestep in uncoupled runs i.e. dt <= CFL_factor * min(dx / u)%a_glen_isothermal[real] :: Ice viscosity parameter in Glen’s Law, [Pa-3 s-1].%n_glen[real] :: Nonlinearity exponent in Glen’s Law.%eps_glen_min[real] :: Min. strain rate to avoid infinite Glen’s law viscosity, [year-1].%c_basal_friction[real] :: Coefficient in sliding law tau_b = C u^(n_basal_fric), in units= Pa (m yr-1)-(n_basal_fric)%n_basal_fric[real] :: Exponent in sliding law tau_b = C u^(m_slide)%density_ocean_avg[real] :: A typical ocean density [R ~> kg m-3]. 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).%thresh_float_col_depth[real] :: The water column depth over which the shelf if considered to be floating.%moving_shelf_front[logical] :: Specify whether to advance shelf front (and calve).%calve_to_mask[logical] :: If true, calve off the ice shelf when it passes the edge of a mask.%min_thickness_simple_calve[real] :: min. ice shelf thickness criteria for calving [Z ~> m].%cg_tolerance[real] :: The tolerance in the CG solver, relative to initial residual, that determines when to stop the conjugate gradient iterations.%nonlinear_tolerance[real] :: The fractional nonlinear tolerance, relative to the initial error, that sets when to stop the iterative velocity solver.%cg_max_iterations[integer] :: The maximum number of iterations that can be used in the CG solver.%nonlin_solve_err_mode[integer] :: 1: exit vel solve based on nonlin residual 2: exit based on “fixed point” metric (|u - u_last| / |u| < tol) where | | is infty-norm%debug[logical] :: If true, write verbose checksums for debugging purposes and use reproducible sums.%module_is_initialized[logical] :: True if this module has been initialized.%diag[type(diag_ctrl),pointer] :: A structure that is used to control diagnostic output.
-
type
mom_ice_shelf_dynamics/loop_bounds_type¶ A container for loop bounds.
- Type fields
%ish[integer,private] :: Loop bounds.%ieh[integer,private] :: Loop bounds.%jsh[integer,private] :: Loop bounds.%jeh[integer,private] :: Loop bounds.
Function/Subroutine Documentation¶
-
function
mom_ice_shelf_dynamics/slope_limiter(num, denom) [real]¶ used for flux limiting in advective subroutines Van Leer limiter (source: Wikipedia) The return value is between 0 and 2 [nondim].
- Parameters
num :: [in] The numerator of the ratio used in the Van Leer slope limiter
denom :: [in] The denominator of the ratio used in the Van Leer slope limiter
- Called from
ice_shelf_advect_temp_xice_shelf_advect_temp_yice_shelf_advect_thickness_xice_shelf_advect_thickness_y
-
function
mom_ice_shelf_dynamics/quad_area(X, Y) [real]¶ Calculate area of quadrilateral.
- Parameters
x :: [in] The x-positions of the vertices of the quadrilateral [L ~> m].
y :: [in] The y-positions of the vertices of the quadrilateral [L ~> m].
- Called from
-
subroutine
mom_ice_shelf_dynamics/register_ice_shelf_dyn_restarts(G, param_file, CS, restart_CS)¶ This subroutine is used to register any fields related to the ice shelf dynamics that should be written to or read from the restart file.
- Parameters
g :: [inout] The grid type describing the ice shelf grid.
param_file :: [in] A structure to parse for run-time parameters
cs :: A pointer to the ice shelf dynamics control structure
restart_cs :: A pointer to the restart control structure.
- Call to
-
subroutine
mom_ice_shelf_dynamics/initialize_ice_shelf_dyn(param_file, Time, ISS, CS, G, US, diag, new_sim, solo_ice_sheet_in)¶ Initializes shelf model data, parameters and diagnostics.
- Parameters
param_file :: [in] A structure to parse for run-time parameters
time :: [inout] The clock that that will indicate the model time
iss :: [in] A structure with elements that describe the ice-shelf state
cs :: A pointer to the ice shelf dynamics control structure
g :: [inout] The grid type describing the ice shelf grid.
us :: [in] A structure containing unit conversion factors
diag :: [in] A structure that is used to regulate the diagnostic output.
new_sim :: [in] If true this is a new simulation, otherwise has been started from a restart file.
solo_ice_sheet_in :: [in] If present, this indicates whether a solo ice-sheet driver.
- Call to
ice_shelf_solve_outermom_error_handler::mom_errormom_error_handler::mom_mesgmom_domains::to_allupdate_od_ffrac_uncoupledupdate_velocity_masks
-
subroutine
mom_ice_shelf_dynamics/initialize_diagnostic_fields(CS, ISS, G, US, Time)¶ - Parameters
cs :: [inout] A pointer to the ice shelf control structure
iss :: [in] A structure with elements that describe the ice-shelf state
g :: [inout] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
time :: [in] The current model time
- Call to
-
function
mom_ice_shelf_dynamics/ice_time_step_cfl(CS, ISS, G) [real]¶ This function returns the global maximum advective timestep that can be taken based on the current ice velocities. Because it involves finding a global minimum, it can be surprisingly expensive.
- Parameters
cs :: [inout] The ice shelf dynamics control structure
iss :: [inout] A structure with elements that describe the ice-shelf state
g :: [inout] The grid structure used by the ice shelf.
- Return
undefined :: The maximum permitted timestep based on the ice velocities [T ~> s].
- Called from
-
subroutine
mom_ice_shelf_dynamics/update_ice_shelf(CS, ISS, G, US, time_step, Time, ocean_mass, coupled_grounding, must_update_vel)¶ This subroutine updates the ice shelf velocities, mass, stresses and properties due to the ice shelf dynamics.
- Parameters
cs :: [inout] The ice shelf dynamics control structure
iss :: [inout] A structure with elements that describe the ice-shelf state
g :: [inout] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
time_step :: [in] time step [T ~> s]
time :: [in] The current model time
ocean_mass :: [in] If present this is the mass per unit area
coupled_grounding :: [in] If true, the grounding line is determined by coupled ice-ocean dynamics
must_update_vel :: [in] Always update the ice velocities if true.
- Call to
mom_diag_mediator::disable_averagingmom_diag_mediator::enable_averagesice_shelf_advectice_shelf_solve_outerice_shelf_tempupdate_od_ffracupdate_od_ffrac_uncoupled
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_advect(CS, ISS, G, time_step, Time)¶ This subroutine takes the velocity (on the Bgrid) and timesteps h_t = - div (uh) once. Additionally, it will update the volume of ice in partially-filled cells, and update hmask accordingly.
- Parameters
cs :: [inout] The ice shelf dynamics control structure
iss :: [inout] A structure with elements that describe the ice-shelf state
g :: [inout] The grid structure used by the ice shelf.
time_step :: [in] time step [T ~> s]
time :: [in] The current model time
- Call to
calve_to_maskice_shelf_advect_thickness_xice_shelf_advect_thickness_yice_shelf_min_thickness_calvemom_error_handler::mom_errorshelf_advance_frontupdate_velocity_masks- Called from
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_solve_outer(CS, ISS, G, US, u_shlf, v_shlf, iters, time)¶ - Parameters
cs :: [inout] The ice shelf dynamics control structure
iss :: [in] A structure with elements that describe the ice-shelf state
g :: [inout] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
u_shlf :: [inout] The zonal ice shelf velocity at vertices [L T-1 ~> m s-1]
v_shlf :: [inout] The meridional ice shelf velocity at vertices [L T-1 ~> m s-1]
iters :: [out] The number of iterations used in the solver.
time :: [in] The current model time
- Call to
apply_boundary_valuesbilinear_shape_fn_gridbilinear_shape_functions_subgridcalc_shelf_driving_stresscalc_shelf_visccg_actionice_shelf_solve_innerinterpolate_h_to_bmom_error_handler::mom_mesg- Called from
initialize_diagnostic_fieldsinitialize_ice_shelf_dynupdate_ice_shelf
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_solve_inner(CS, ISS, G, US, u_shlf, v_shlf, taudx, taudy, H_node, float_cond, hmask, conv_flag, iters, time, Phi, Phisub)¶ - Parameters
cs :: [in] A pointer to the ice shelf control structure
iss :: [in] A structure with elements that describe the ice-shelf state
g :: [inout] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
u_shlf :: [inout] The zonal ice shelf velocity at vertices [L T-1 ~> m s-1]
v_shlf :: [inout] The meridional ice shelf velocity at vertices [L T-1 ~> m s-1]
taudx :: [in] The x-direction driving stress [R L3 Z T-2 ~> kg m s-2]
taudy :: [in] The y-direction driving stress [R L3 Z T-2 ~> kg m s-2]
h_node :: [in] The ice shelf thickness at nodal (corner)
float_cond :: [in] An array indicating where the ice
hmask :: [in] A mask indicating which tracer points are
conv_flag :: [out] A flag indicating whether (1) or not (0) the iterations have converged to the specified tolerance
iters :: [out] The number of iterations used in the solver.
time :: [in] The current model time
phi :: [in] The gradients of bilinear basis elements at Gaussian
phisub :: [in] Quadrature structure weights at subgridscale
- Call to
apply_boundary_valuescg_actionmatrix_diagonalmom_domains::to_all- Called from
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_advect_thickness_x(CS, G, LB, time_step, hmask, h0, h_after_uflux, uh_ice)¶ - Parameters
cs :: [in] A pointer to the ice shelf control structure
g :: [in] The grid structure used by the ice shelf.
lb :: [in] Loop bounds structure.
time_step :: [in] The time step for this update [T ~> s].
hmask :: [inout] A mask indicating which tracer points are
h0 :: [in] The initial ice shelf thicknesses [Z ~> m].
h_after_uflux :: [inout] The ice shelf thicknesses after
uh_ice :: [inout] The accumulated zonal ice volume flux [Z L2 ~> m3]
- Call to
- Called from
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_advect_thickness_y(CS, G, LB, time_step, hmask, h0, h_after_vflux, vh_ice)¶ - Parameters
cs :: [in] A pointer to the ice shelf control structure
g :: [in] The grid structure used by the ice shelf.
lb :: [in] Loop bounds structure.
time_step :: [in] The time step for this update [T ~> s].
hmask :: [inout] A mask indicating which tracer points are
h0 :: [in] The initial ice shelf thicknesses [Z ~> m].
h_after_vflux :: [inout] The ice shelf thicknesses after
vh_ice :: [inout] The accumulated meridional ice volume flux [Z L2 ~> m3]
- Call to
- Called from
-
subroutine
mom_ice_shelf_dynamics/shelf_advance_front(CS, ISS, G, hmask, uh_ice, vh_ice)¶ - Parameters
cs :: [in] A pointer to the ice shelf control structure
iss :: [inout] A structure with elements that describe the ice-shelf state
g :: [in] The grid structure used by the ice shelf.
hmask :: [inout] A mask indicating which tracer points are
uh_ice :: [inout] The accumulated zonal ice volume flux [Z L2 ~> m3]
vh_ice :: [inout] The accumulated meridional ice volume flux [Z L2 ~> m3]
- Call to
- Called from
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_min_thickness_calve(G, h_shelf, area_shelf_h, hmask, thickness_calve, halo)¶ Apply a very simple calving law using a minimum thickness rule.
- Parameters
g :: [in] The grid structure used by the ice shelf.
h_shelf :: [inout] The ice shelf thickness [Z ~> m].
area_shelf_h :: [inout] The area per cell covered by the ice shelf [L2 ~> m2].
hmask :: [inout] A mask indicating which tracer points are partly or fully covered by an ice-shelf
thickness_calve :: [in] The thickness at which to trigger calving [Z ~> m].
halo :: [in] The number of halo points to use. If not present, work on the entire data domain.
- Called from
-
subroutine
mom_ice_shelf_dynamics/calve_to_mask(G, h_shelf, area_shelf_h, hmask, calve_mask)¶ - Parameters
g :: [in] The grid structure used by the ice shelf.
h_shelf :: [inout] The ice shelf thickness [Z ~> m].
area_shelf_h :: [inout] The area per cell covered by the ice shelf [L2 ~> m2].
hmask :: [inout] A mask indicating which tracer points are partly or fully covered by an ice-shelf
calve_mask :: [in] A mask that indicates where the ice shelf can exist, and where it will calve.
- Called from
-
subroutine
mom_ice_shelf_dynamics/calc_shelf_driving_stress(CS, ISS, G, US, taudx, taudy, OD)¶ - Parameters
cs :: [in] A pointer to the ice shelf control structure
iss :: [in] A structure with elements that describe the ice-shelf state
g :: [inout] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
od :: [in] ocean floor depth at tracer points [Z ~> m].
taudx :: [inout] X-direction driving stress at q-points [kg L s-2 ~> kg m s-2]
taudy :: [inout] Y-direction driving stress at q-points [kg L s-2 ~> kg m s-2]
- Called from
-
subroutine
mom_ice_shelf_dynamics/init_boundary_values(CS, G, time, hmask, input_flux, input_thick, new_sim)¶ - Parameters
cs :: [inout] A pointer to the ice shelf control structure
g :: [inout] The grid structure used by the ice shelf.
time :: [in] The current model time
hmask :: [in] A mask indicating which tracer points are
input_flux :: [in] The integrated inward ice thickness flux per unit face length [Z L T-1 ~> m2 s-1]
input_thick :: [in] The ice thickness at boundaries [Z ~> m].
new_sim :: [in] If present and false, this run is being restarted
-
subroutine
mom_ice_shelf_dynamics/cg_action(uret, vret, u_shlf, v_shlf, Phi, Phisub, umask, vmask, hmask, H_node, ice_visc, float_cond, bathyT, basal_trac, G, US, is, ie, js, je, dens_ratio)¶ - Parameters
g :: [in] The grid structure used by the ice shelf.
uret :: [inout] The retarding stresses working at u-points [R L3 Z T-2 ~> kg m s-2].
vret :: [inout] The retarding stresses working at v-points [R L3 Z T-2 ~> kg m s-2].
phi :: [in] The gradients of bilinear basis elements at Gaussian
phisub :: [in] Quadrature structure weights at subgridscale
u_shlf :: [in] The zonal ice shelf velocity at vertices [L T-1 ~> m s-1]
v_shlf :: [in] The meridional ice shelf velocity at vertices [L T-1 ~> m s-1]
umask :: [in] A coded mask indicating the nature of the
vmask :: [in] A coded mask indicating the nature of the
h_node :: [in] The ice shelf thickness at nodal (corner)
hmask :: [in] A mask indicating which tracer points are
ice_visc :: [in] A field related to the ice viscosity from Glen’s
float_cond :: [in] An array indicating where the ice
bathyt :: [in] The depth of ocean bathymetry at tracer points [Z ~> m].
basal_trac :: [in] A field related to the nonlinear part of the
dens_ratio :: [in] The density of ice divided by the density of seawater, nondimensional
us :: [in] A structure containing unit conversion factors
is :: [in] The starting i-index to work on
ie :: [in] The ending i-index to work on
js :: [in] The starting j-index to work on
je :: [in] The ending j-index to work on
- Call to
- Called from
-
subroutine
mom_ice_shelf_dynamics/cg_action_subgrid_basal(Phisub, H, U, V, bathyT, dens_ratio, Ucontr, Vcontr)¶ - Parameters
phisub :: [in] Quadrature structure weights at subgridscale
h :: [in] The ice shelf thickness at nodal (corner) points [Z ~> m].
u :: [in] The zonal ice shelf velocity at vertices [L T-1 ~> m s-1]
v :: [in] The meridional ice shelf velocity at vertices [L T-1 ~> m s-1]
bathyt :: [in] The depth of ocean bathymetry at tracer points [Z ~> m].
dens_ratio :: [in] The density of ice divided by the density of seawater [nondim]
ucontr :: [out] The areal average of u-velocities where the ice shelf is grounded, or 0 where it is floating [L T-1 ~> m s-1].
vcontr :: [out] The areal average of v-velocities where the ice shelf is grounded, or 0 where it is floating [L T-1 ~> m s-1].
- Called from
-
subroutine
mom_ice_shelf_dynamics/matrix_diagonal(CS, G, US, float_cond, H_node, ice_visc, basal_trac, hmask, dens_ratio, Phisub, u_diagonal, v_diagonal)¶ returns the diagonal entries of the matrix for a Jacobi preconditioning
- Parameters
cs :: [in] A pointer to the ice shelf control structure
g :: [in] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
float_cond :: [in] An array indicating where the ice
h_node :: [in] The ice shelf thickness at nodal
ice_visc :: [in] A field related to the ice viscosity from Glen’s
basal_trac :: [in] A field related to the nonlinear part of the
hmask :: [in] A mask indicating which tracer points are
dens_ratio :: [in] The density of ice divided by the density of seawater [nondim]
phisub :: [in] Quadrature structure weights at subgridscale locations for finite element calculations [nondim]
u_diagonal :: [inout] The diagonal elements of the u-velocity
v_diagonal :: [inout] The diagonal elements of the v-velocity
- Call to
- Called from
-
subroutine
mom_ice_shelf_dynamics/cg_diagonal_subgrid_basal(Phisub, H_node, bathyT, dens_ratio, sub_grnd)¶ - Parameters
phisub :: [in] Quadrature structure weights at subgridscale
h_node :: [in] The ice shelf thickness at nodal (corner) points [Z ~> m].
bathyt :: [in] The depth of ocean bathymetry at tracer points [Z ~> m].
dens_ratio :: [in] The density of ice divided by the density of seawater [nondim]
sub_grnd :: [out] The weighted fraction of the sub-cell where the ice shelf is grounded [nondim]
- Called from
-
subroutine
mom_ice_shelf_dynamics/apply_boundary_values(CS, ISS, G, US, time, Phisub, H_node, ice_visc, basal_trac, float_cond, dens_ratio, u_bdry_contr, v_bdry_contr)¶ - Parameters
cs :: [in] A pointer to the ice shelf control structure
iss :: [in] A structure with elements that describe the ice-shelf state
g :: [in] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
time :: [in] The current model time
phisub :: [in] Quadrature structure weights at subgridscale
h_node :: [in] The ice shelf thickness at nodal
ice_visc :: [in] A field related to the ice viscosity from Glen’s
basal_trac :: [in] A field related to the nonlinear part of the
float_cond :: [in] An array indicating where the ice
dens_ratio :: [in] The density of ice divided by the density of seawater, nondimensional
u_bdry_contr :: [inout] Zonal force contributions due to the
v_bdry_contr :: [inout] Meridional force contributions due to the
- Call to
- Called from
-
subroutine
mom_ice_shelf_dynamics/calc_shelf_visc(CS, ISS, G, US, u_shlf, v_shlf)¶ Update depth integrated viscosity, based on horizontal strain rates, and also update the nonlinear part of the basal traction.
- Parameters
cs :: [inout] A pointer to the ice shelf control structure
iss :: [in] A structure with elements that describe the ice-shelf state
g :: [in] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
u_shlf :: [inout] The zonal ice shelf velocity [L T-1 ~> m s-1].
v_shlf :: [inout] The meridional ice shelf velocity [L T-1 ~> m s-1].
- Called from
-
subroutine
mom_ice_shelf_dynamics/update_od_ffrac(CS, G, US, ocean_mass, find_avg)¶ - Parameters
cs :: [inout] A pointer to the ice shelf control structure
g :: [inout] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
ocean_mass :: [in] The mass per unit area of the ocean [kg m-2].
find_avg :: [in] If true, find the average of OD and ffrac, and reset the underlying running sums to 0.
- Called from
-
subroutine
mom_ice_shelf_dynamics/update_od_ffrac_uncoupled(CS, G, h_shelf)¶ - Parameters
cs :: [inout] A pointer to the ice shelf control structure
g :: [in] The grid structure used by the ice shelf.
h_shelf :: [in] the thickness of the ice shelf [Z ~> m].
- Called from
-
subroutine
mom_ice_shelf_dynamics/bilinear_shape_functions(X, Y, Phi, area)¶ This subroutine calculates the gradients of bilinear basis elements that that are centered at the vertices of the cell. Values are calculated at points of gaussian quadrature.
- Parameters
x :: [in] The x-positions of the vertices of the quadrilateral [L ~> m].
y :: [in] The y-positions of the vertices of the quadrilateral [L ~> m].
phi :: [inout] The gradients of bilinear basis elements at Gaussian quadrature points surrounding the cell vertices [L-1 ~> m-1].
area :: [out] The quadrilateral cell area [L2 ~> m2].
- Call to
-
subroutine
mom_ice_shelf_dynamics/bilinear_shape_fn_grid(G, i, j, Phi)¶ This subroutine calculates the gradients of bilinear basis elements that are centered at the vertices of the cell using a locally orthogoal MOM6 grid. Values are calculated at points of gaussian quadrature.
- Parameters
g :: [in] The grid structure used by the ice shelf.
i :: [in] The i-index in the grid to work on.
j :: [in] The j-index in the grid to work on.
phi :: [inout] The gradients of bilinear basis elements at Gaussian quadrature points surrounding the cell vertices [L-1 ~> m-1].
- Called from
-
subroutine
mom_ice_shelf_dynamics/bilinear_shape_functions_subgrid(Phisub, nsub)¶ - Parameters
phisub :: [inout] Quadrature structure weights at subgridscale
nsub :: [in] The number of subgridscale quadrature locations in each direction
- Called from
-
subroutine
mom_ice_shelf_dynamics/update_velocity_masks(CS, G, hmask, umask, vmask, u_face_mask, v_face_mask)¶ - Parameters
cs :: [in] A pointer to the ice shelf dynamics control structure
g :: [inout] The grid structure used by the ice shelf.
hmask :: [in] A mask indicating which tracer points are
umask :: [out] A coded mask indicating the nature of the
vmask :: [out] A coded mask indicating the nature of the
u_face_mask :: [out] A coded mask for velocities at the C-grid u-face
v_face_mask :: [out] A coded mask for velocities at the C-grid v-face
- Call to
mom_domains::to_all- Called from
-
subroutine
mom_ice_shelf_dynamics/interpolate_h_to_b(G, h_shelf, hmask, H_node)¶ Interpolate the ice shelf thickness from tracer point to nodal points, subject to a mask.
- Parameters
g :: [inout] The grid structure used by the ice shelf.
h_shelf :: [in] The ice shelf thickness at tracer points [Z ~> m].
hmask :: [in] A mask indicating which tracer points are
h_node :: [inout] The ice shelf thickness at nodal (corner)
- Called from
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_dyn_end(CS)¶ Deallocates all memory associated with the ice shelf dynamics module.
- Parameters
cs :: A pointer to the ice shelf dynamics control structure
- Called from
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_temp(CS, ISS, G, US, time_step, melt_rate, Time)¶ This subroutine updates the vertically averaged ice shelf temperature.
- Parameters
cs :: [inout] A pointer to the ice shelf control structure
iss :: [in] A structure with elements that describe the ice-shelf state
g :: [inout] The grid structure used by the ice shelf.
us :: [in] A structure containing unit conversion factors
time_step :: [in] The time step for this update [T ~> s].
melt_rate :: [in] basal melt rate [R Z T-1 ~> kg m-2 s-1]
time :: [in] The current model time
- Call to
- Called from
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_advect_temp_x(CS, G, time_step, hmask, h0, h_after_uflux)¶ - Parameters
cs :: [in] A pointer to the ice shelf control structure
g :: [inout] The grid structure used by the ice shelf.
time_step :: [in] The time step for this update [T ~> s].
hmask :: [in] A mask indicating which tracer points are
h0 :: [in] The initial ice shelf thicknesses [Z ~> m].
h_after_uflux :: [inout] The ice shelf thicknesses after
- Call to
- Called from
-
subroutine
mom_ice_shelf_dynamics/ice_shelf_advect_temp_y(CS, G, time_step, hmask, h_after_uflux, h_after_vflux)¶ - Parameters
cs :: [in] A pointer to the ice shelf control structure
g :: [in] The grid structure used by the ice shelf.
time_step :: [in] The time step for this update [T ~> s].
hmask :: [in] A mask indicating which tracer points are
h_after_uflux :: [in] The ice shelf thicknesses after
h_after_vflux :: [inout] The ice shelf thicknesses after
- Call to
- Called from