Derived Types

TypeLocationExtendsDescription
abstract_entrainmententrainment_modNone

An abstract data type for calculating entrainment of ambient ocean water into a vertically integrated plume.

abstract_melt_relationshipmelt_relationship_modNone

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_viscosityviscosity_modNone

An abstract data type for calculating viscosity of a vertically integrated glacier.

ambient_conditionsambient_modNone

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_plumeasymmetric_plume_modbasal_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_eosave_linear_eos_modequation_of_state

A linearised implementation of the equation of state which has been horizontally-integrated. The basic equation of stateis

ave_one_equation_meltave_one_equation_melt_modabstract_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_surfacebasal_surface_modNone

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_blockcoriolis_block_modNone

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.

Read more…
cryospherecryosphere_modNone

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_boundarydallaston2015_glacier_boundary_modglacier_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.

Read more…
dallaston2015_meltdallaston2015_melt_modabstract_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_boundarydallaston2015_seasonal_modplume_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_stateequation_of_state_modNone

An abstract type with a procedure for calculating water density from its temperature and salinity.

fin_diff_blockfinite_difference_block_modNone

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.

Read more…
glacierglacier_modNone

An abstract data type which represents large masses of ice, such as ice shelves and ice sheets.

glacier_boundaryglacier_boundary_modNone

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.

Read more…
glens_law_viscosityglens_law_modabstract_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.

groundground_modbasal_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_sheetice_sheet_modglacier

A concrete implementation of the glacier type, using a vertically integrated model of an ice sheet. This model is 1-dimensional only.

ice_shelfice_shelf_modglacier

A concrete implementation of the glacier type, using a vertically integrated model of an ice shelf. This model is 1-dimensional only.

jacobian_blockjacobian_block_modNone

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.

Read more…
jenkins1991_entrainmentjenkins1991_entrainment_modabstract_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_entrainmentkochergin1987_entrainment_modabstract_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_eoslinear_eos_modequation_of_state

A linearised implementation of the equation of state, of the form

newtonian_viscositynewtonian_viscosity_modabstract_viscosity

An implementation of Newtonian (constant) viscosity for a glacier.

one_equation_meltone_equation_melt_modabstract_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.

plumeplume_modbasal_surface

A concrete implementation of the basal_surface abstract data type, representing the buoyant plume beneath an ice shelf.

plume_boundaryplume_boundary_modNone

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.

Read more…
plume_shapeasymmetric_plume_modNone

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 .

Read more…
preconditionerpreconditioner_modNone

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.

Read more…
prescribed_eosprescribed_eos_modequation_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_blockpseudospectral_block_modNone

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_1drksuite_90None
seasonal_glacier_boundaryseasonal_glacier_boundary_modglacier_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_boundarysimple_plume_boundary_modplume_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_plumestatic_plume_modbasal_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_conditionsuniform_ambient_modambient_conditions

An derived type with procedures for getting the ambient ocean conditions. This implementation takes these conditions to be everywhere uniform.

uniform_gradient_fielduniform_gradient_field_moduniform_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_boundaryupstream_plume_modplume_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.

Read more…
type~~graph~~TypeGraph type~coriolis_block coriolis_block type~pseudospec_block pseudospec_block type~coriolis_block->type~pseudospec_block integrator cheb1d_scalar_field cheb1d_scalar_field type~coriolis_block->cheb1d_scalar_field emDxVinv_r, emDxVinv_i, eDx_r, eDx_i type~asym_plume asym_plume type~asym_plume->type~coriolis_block vel_precond type~plume_boundary plume_boundary type~asym_plume->type~plume_boundary boundaries type~basal_surface basal_surface type~asym_plume->type~basal_surface type~equation_of_state equation_of_state type~asym_plume->type~equation_of_state eos type~ambient_conditions ambient_conditions type~asym_plume->type~ambient_conditions ambient_conds type~plume_shape plume_shape type~asym_plume->type~plume_shape shape type~abstract_entrainment abstract_entrainment type~asym_plume->type~abstract_entrainment entrainment_formulation type~abstract_melt_relationship abstract_melt_relationship type~asym_plume->type~abstract_melt_relationship melt_formulation type~asym_plume->type~pseudospec_block precond type~asym_plume->cheb1d_scalar_field thickness, temperature, temperature_dx, salinity, salinity_dx cheb1d_vector_field cheb1d_vector_field type~asym_plume->cheb1d_vector_field velocity, velocity_dx type~glacier_boundary glacier_boundary type~rk_comm_real_1d rk_comm_real_1d type~upstream_plume_boundary upstream_plume_boundary type~upstream_plume_boundary->type~plume_boundary type~ground ground type~ground->type~basal_surface type~ice_sheet ice_sheet type~abstract_viscosity abstract_viscosity type~ice_sheet->type~abstract_viscosity viscosity_law type~glacier glacier type~ice_sheet->type~glacier type~ice_sheet->cheb1d_scalar_field thickness type~ice_sheet->cheb1d_vector_field velocity type~glens_law_viscosity glens_law_viscosity type~glens_law_viscosity->type~abstract_viscosity type~one_equation_melt one_equation_melt type~one_equation_melt->type~abstract_melt_relationship scalar_field scalar_field type~one_equation_melt->scalar_field forcing_values type~newtonian_viscosity newtonian_viscosity type~newtonian_viscosity->type~abstract_viscosity type~ave_one_equation_melt ave_one_equation_melt type~ave_one_equation_melt->type~abstract_melt_relationship type~ave_one_equation_melt->scalar_field forcing_values type~uniform_ambient_conditions uniform_ambient_conditions type~uniform_ambient_conditions->type~ambient_conditions uniform_scalar_field uniform_scalar_field type~uniform_ambient_conditions->uniform_scalar_field temperature, salinity type~plume plume type~plume->type~plume_boundary boundaries type~plume->type~basal_surface type~plume->type~equation_of_state eos type~plume->type~ambient_conditions ambient_conds type~plume->type~abstract_entrainment entrainment_formulation type~plume->type~abstract_melt_relationship melt_formulation type~plume->type~pseudospec_block precond type~plume->cheb1d_scalar_field thickness, temperature, temperature_dx, salinity, salinity_dx type~plume->cheb1d_vector_field velocity, velocity_dx type~uniform_gradient_field uniform_gradient_field type~uniform_gradient_field->uniform_scalar_field type~simple_plume_boundary simple_plume_boundary type~simple_plume_boundary->type~plume_boundary type~ave_linear_eos ave_linear_eos type~ave_linear_eos->type~equation_of_state type~seasonal_glacier_boundary seasonal_glacier_boundary type~seasonal_glacier_boundary->type~glacier_boundary type~cryosphere cryosphere type~cryosphere->type~basal_surface sub_ice type~cryosphere->type~glacier ice type~kochergin1987_entrainment kochergin1987_entrainment type~kochergin1987_entrainment->type~abstract_entrainment type~jacobian_block jacobian_block type~jacobian_block->type~jacobian_block block_increment type~jacobian_block->scalar_field contents, derivative, field_increment type~dallaston2015_melt dallaston2015_melt type~dallaston2015_melt->type~abstract_melt_relationship type~dallaston2015_melt->scalar_field melt_values type~ice_shelf ice_shelf type~ice_shelf->type~glacier_boundary boundaries type~ice_shelf->type~abstract_viscosity viscosity_law type~ice_shelf->type~jacobian_block thickness_jacobian, velocity_jacobian type~ice_shelf->type~glacier type~ice_shelf->cheb1d_scalar_field thickness, eta, kappa type~ice_shelf->cheb1d_vector_field velocity type~linear_eos linear_eos type~linear_eos->type~equation_of_state type~dallaston2015_glacier_boundary dallaston2015_glacier_boundary type~dallaston2015_glacier_boundary->type~glacier_boundary type~preconditioner preconditioner type~static_plume static_plume type~static_plume->type~plume_boundary boundaries type~static_plume->type~basal_surface type~static_plume->type~equation_of_state eos type~static_plume->type~ambient_conditions ambient_conds type~static_plume->type~abstract_entrainment entrainment_formulation type~static_plume->type~abstract_melt_relationship melt_formulation type~static_plume->type~pseudospec_block precond type~static_plume->cheb1d_scalar_field thickness, temperature, temperature_dx, salinity, salinity_dx type~static_plume->cheb1d_vector_field velocity, velocity_dx type~prescribed_eos prescribed_eos type~prescribed_eos->type~equation_of_state type~prescribed_eos->scalar_field density type~fin_diff_block fin_diff_block type~jenkins1991_entrainment jenkins1991_entrainment type~jenkins1991_entrainment->type~abstract_entrainment type~dallaston2015_seasonal_boundary dallaston2015_seasonal_boundary type~dallaston2015_seasonal_boundary->type~plume_boundary
Help