Type | Location | Extends | Description |
---|---|---|---|
abstract_entrainment | entrainment_mod | None | An abstract data type for calculating entrainment of ambient ocean water into a vertically integrated plume. |
abstract_melt_relationship | melt_relationship_mod | None | An abstract data type for calculating melting of an ice shelf into a vertically integrated plume. The melt rate, as well as effect on termperature and salinity, are calculated by calling solve_for_melt and then accessed using melt_rate, heat_equation_terms, salt_equation_terms. |
abstract_viscosity | viscosity_mod | None | An abstract data type for calculating viscosity of a vertically integrated glacier. |
ambient_conditions | ambient_mod | None | An abstract type to which procedures for getting the ambient ocean conditions are to be specified. The descendent types can contain whatever data is needed to compute the result. |
asym_plume | asymmetric_plume_mod | basal_surface | A concrete implementation of the basal_surface abstract data type, representing the buoyant plume beneath an ice shelf, which has been horizontally integrated over width in the y-direction. Transverse variation is assumed to be seperable, with variables having the form , . The shape of the transverse functions are described using the plume_shape type. |
ave_linear_eos | ave_linear_eos_mod | equation_of_state | A linearised implementation of the equation of state which has been horizontally-integrated. The basic equation of stateis |
ave_one_equation_melt | ave_one_equation_melt_mod | abstract_melt_relationship | A parameterisation of melting into a plume which comes from heavily simplifying the 3 equation model. It can work with horizontally-integrated plume models, taking account of the plume's transverse profile. It is taken from Dallaston, Hewitt, and Wells (2015), prior to the their dropping some terms based on scaling arguments. The melt rate, as well as effect on termperature and salinity, are calculated by calling solve_for_melt and then accessed using melt_rate, heat_equation_terms, salt_equation_terms. |
basal_surface | basal_surface_mod | None | An abstract data type which represents whatever lies below a glacier. This could be the ground, a plume, or a fully dynamic ocean model. Methods are available to provide the coupling information between the glacier and the basal surface. |
coriolis_block | coriolis_block_mod | None | A data type representing a matrix operator for the momentum components of the linear parts plume equations, with the Coriolis force. It can be useful when preconditioning a the plume solver. It is inherently 1-D in its implementation, but has a transverse velocity component. |
cryosphere | cryosphere_mod | None | A data structure representing glaciers, either as ice shelves or (eventually) ice sheets. It will allow coupled systems of glaciers as well as different basal couplings with the ocean or ground. This type is a subclass of the FOODIE integrand, allowing it to take advantage of that set of integration libraries for evolution in time. |
dallaston2015_glacier_boundary | dallaston2015_glacier_boundary_mod | glacier_boundary | A type with procedures for getting the boundary conditions of the ice shelf model used by Dallaston et al. (2015). These are Dirichlet conditions at the lower bound of the first condition as well as, for thickness, the upper bound. |
dallaston2015_melt | dallaston2015_melt_mod | abstract_melt_relationship | A parameterisation of melting into a plume which comes from heavily simplifying the 3 equation model. It is taken from Dallaston, Hewitt, and Wells (2015). The melt rate, as well as effect on termperature and salinity, are calculated by calling solve_for_melt and then accessed using melt_rate, heat_equation_terms, salt_equation_terms. |
dallaston2015_seasonal_boundary | dallaston2015_seasonal_mod | plume_boundary | A type with procedures for getting the boundary conditions of the plume model. It represents the case where subglacial discharge is varying in time, altering the boundary conditions for velocity and salinity using scalings similar to those in Dallaston et al. (2015). Dirichlet boundary conditions are used at the grounding line. In order to approximate an outflow condition, the derivatives of velocity, temperature, and salinity are set to 0 at the end of the domain. Plume thickness is left free there, as only a single boundary condition is needed for it. |
equation_of_state | equation_of_state_mod | None | An abstract type with a procedure for calculating water density from its temperature and salinity. |
fin_diff_block | finite_difference_block_mod | None | A data type representing a matrix finite difference operator. It can be useful when preconditioning systems which use a spectral discretisation. It is inherently 1-D in its implementation. Note that multiplication of a field will simply call that field's differentiation operator, which may or may not use a finite difference method. |
glacier | glacier_mod | None | An abstract data type which represents large masses of ice, such as ice shelves and ice sheets. |
glacier_boundary | glacier_boundary_mod | None | A type in which procedures for getting the boundary conditions of glaciers are to be specified. The descendent types can contain whatever data is needed to compute the result. It provides the routine boundary_residuals to return an array with the residuals representing deviation from satisfying the conditions. This can then be appended to a glacier's residual array. |
glens_law_viscosity | glens_law_mod | abstract_viscosity | An implementation of Glen's flow law to describe glacier viscosity. It takes the form where is the second invarient of the strain rate Here, is treated as a constant, although it may be parameterised as a function of temperature. |
ground | ground_mod | basal_surface | A concrete implementation of the basal_surface abstract data type, representing the ground beneath an ice sheet. At the moment this doesn't actually do anything. |
ice_sheet | ice_sheet_mod | glacier | A concrete implementation of the glacier type, using a vertically integrated model of an ice sheet. This model is 1-dimensional only. |
ice_shelf | ice_shelf_mod | glacier | A concrete implementation of the glacier type, using a vertically integrated model of an ice shelf. This model is 1-dimensional only. |
jacobian_block | jacobian_block_mod | None | A data type representing a submatrix of a Jacobian. Specifically, it represents the commonly occurring operation where is the differentiation operator in the -direction. Optionally, there can be an additional differentiation operator on the right-hand-side of this. |
jenkins1991_entrainment | jenkins1991_entrainment_mod | abstract_entrainment | A parameterisation of entrainment () as described by Jenkins (1991): Here, is a coefficient typically taken to be 0.036 (the default value), is the velocity of the plume, is the angle of slope of the ice shelf base, and is the basal depth of the ice shelf. |
kochergin1987_entrainment | kochergin1987_entrainment_mod | abstract_entrainment | A parameterisation of entrainment () as described by Kochergin (1987): Here, is an entrainment coefficient, is the velocity of the plume, is the reduced gravity, and is the turbulent Schmidt number. The latter-most can be expressed as , where is the Richardson number. |
linear_eos | linear_eos_mod | equation_of_state | A linearised implementation of the equation of state, of the form |
newtonian_viscosity | newtonian_viscosity_mod | abstract_viscosity | An implementation of Newtonian (constant) viscosity for a glacier. |
one_equation_melt | one_equation_melt_mod | abstract_melt_relationship | A parameterisation of melting into a plume which comes from heavily simplifying the 3 equation model. It is taken from Dallaston, Hewitt, and Wells (2015), prior to the their dropping some terms based on scaling arguments. The melt rate, as well as effect on termperature and salinity, are calculated by calling solve_for_melt and then accessed using melt_rate, heat_equation_terms, salt_equation_terms. |
plume | plume_mod | basal_surface | A concrete implementation of the basal_surface abstract data type, representing the buoyant plume beneath an ice shelf. |
plume_boundary | plume_boundary_mod | None | A type in which procedures for getting the boundary conditions of plumes are to be specified. The descendent types can contain whatever data is needed to compute the result. |
plume_shape | asymmetric_plume_mod | None | A type containing the data necessary to specify the transverse shape of the plume. All variables in the plume are assumed to be seperable with the form , , etc. The magnitude of the velocity does not necessary take the form and is treated as an independent seperable variable . The transverse functions , , etc. have all been normalised over the integration width to . |
preconditioner | preconditioner_mod | None | Uses Picard iterations to apply the inverse Jacobian of a system to a vector, to low accuracy. Rather than directly computing the inverse Jacobian, it is more efficient to approximate it. If is the vector being preconditioned, and is the result of applying the preconditioner, then Thus, the preconditioner can be applied by approximately solving this system for . Linearising , this system can be solved efficiently using Picard iteration. |
prescribed_eos | prescribed_eos_mod | equation_of_state | An equation of state, depending only on salinity, where the salinity is prescribed such that for some specified thickness . The salinity is related to the density by the haline contraction coefficient . The only real use for this is testing and debugging the plume model. |
pseudospec_block | pseudospectral_block_mod | None | A data type representing a matrix pseudospectral differentiation operator. It can be useful when preconditioning systems which use a spectral discretisation, if higher accuracy than finite difference is needed. It is inherently 1-D in its implementation. Note that multiplication of a field will simply call that field's differentiation operator, which may or may not use a pseudospectral method. |
rk_comm_real_1d | rksuite_90 | None | |
seasonal_glacier_boundary | seasonal_glacier_boundary_mod | glacier_boundary | A type with procedures for getting the boundary conditions of the ice shelf model used by Dallaston et al. (2015), but with the ice flux at the grounding line varying sinusoidally in time. There are Dirichlet conditions at the lower bound of the first condition as well as, for thickness, the upper bound. |
simple_plume_boundary | simple_plume_boundary_mod | plume_boundary | A type with procedures for getting the boundary conditions of the plume model. Dirichlet boundary conditions are used at the grounding line. In order to approximate an outflow condition, the derivatives of velocity, temperature, and salinity are set to 0 at the end of the domain. Plume thickness is left free there, as only a single boundary condition is needed for it. |
static_plume | static_plume_mod | basal_surface | A concrete implementation of the basal_surface abstract data type, representing the buoyant plume beneath an ice shelf, but unchanging in time. It keeps the values assigned at creation or with the write_data method. It is useful if you want to uncouple the ice shelf from the plume. |
uniform_ambient_conditions | uniform_ambient_mod | ambient_conditions | An derived type with procedures for getting the ambient ocean conditions. This implementation takes these conditions to be everywhere uniform. |
uniform_gradient_field | uniform_gradient_field_mod | uniform_scalar_field | A type of uniform field which also has a uniform gradient. Of course, this is impossible in practice, but it can be useful for tricking certain routines into working properly. Ideally a whole new derived type would be created which just holds the value and gradient at a single point, but the emphasis is on getting something quickly. Note that the gradient is not propagated across operations--the result of all overloaded operators is just a normal uniform field with no gradient. |
upstream_plume_boundary | upstream_plume_mod | plume_boundary | A type with procedures for getting the boundary conditions of the plume model. For given boundary conditions, it integrates the plume upstream slightly and then returns these when asked for boundary values. This allows boundary layers, which can cause numerical difficulties, to be avoided. Inflow boundaries must be Dirichlet, while outflow boundaries for velocity, salinity, and temperature are set to have a gradient of zero. |