Provides a derived type which specifies the boundary conditions for a 1-D plume model. Dirichlet boundary conditions are used at the grounding line, while an outflow condition is used at the end of the domain.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(uniform_scalar_field), | private | :: | dummy |
Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in) | :: | thickness | The water thickness at the inflowing plume boundary |
||
real(kind=r8), | intent(in), | dimension(2) | :: | velocity | The longitudinal water velocity at the inflowing plume boundary |
|
real(kind=r8), | intent(in) | :: | temperature | The water temperature at the inflowing plume boundary |
||
real(kind=r8), | intent(in) | :: | salinity | The water salinity at the inflowing 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.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=r8), | private | :: | thickness | = | 0.0_r8 | The thickness of the plume at the inflowing boundary |
|
real(kind=r8), | private, | dimension(2) | :: | velocity | = | 1.0_r8 | The velocity of the plume at the inflowing boundary |
real(kind=r8), | private | :: | salinity | = | 0.0_r8 | The salinity of the plume at the inflowing boundary |
|
real(kind=r8), | private | :: | temperature | = | 0.0_r8 | The tempreature of the plume at the inflowing boundary |
private pure function constructor(thickness, velocity, temperature, salinity) | Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015). |
procedure, public :: set_time | Specifies the time at which to calculate the boundary conditions. |
procedure, public :: thickness_bound_info => simple_thickness_info | Indicates the type and depth of the thickness boundary at different locations. |
procedure, public :: velocity_bound_info => simple_info | Indicates the type and depth of the thickness boundary at different locations. |
procedure, public :: temperature_bound_info => simple_info | Indicates the type and depth of the thickness boundary at different locations. |
procedure, public :: salinity_bound_info => simple_info | Indicates the type and depth of the thickness boundary at different locations. |
procedure, public :: thickness_bound => simple_thickness_bound | Produces a field containing the boundary conditions for plume thickness at the specified location. |
procedure, public :: velocity_bound => simple_velocity_bound | Produces a field containing the boundary conditions for plume velocity at the specified location. |
procedure, public :: temperature_bound => simple_temperature_bound | Produces a field containing the boundary conditions for plume temperature at the specified location. |
procedure, public :: salinity_bound => simple_salinity_bound | Produces a field containing the boundary conditions for plume salinity at the specified location. |
Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in) | :: | thickness | The water thickness at the inflowing plume boundary |
||
real(kind=r8), | intent(in), | dimension(2) | :: | velocity | The longitudinal water velocity at the inflowing plume boundary |
|
real(kind=r8), | intent(in) | :: | temperature | The water temperature at the inflowing plume boundary |
||
real(kind=r8), | intent(in) | :: | salinity | The water salinity at the inflowing plume boundary |
Returns a field containing the thickness boundary values for the specified boundary location.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(simple_plume_boundary), | intent(in) | :: | this | |||
integer, | intent(in) | :: | location | Which boundary information is to be provided for. The
boundary will be the one normal to dimension of number
|
Returns a field containing the velocity boundary values for the specified boundary location.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(simple_plume_boundary), | intent(in) | :: | this | |||
integer, | intent(in) | :: | location | Which boundary information is to be provided for. The
boundary will be the one normal to dimension of number
|
Returns a field containing the temperature boundary values for the specified boundary location.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(simple_plume_boundary), | intent(in) | :: | this | |||
integer, | intent(in) | :: | location | Which boundary information is to be provided for. The
boundary will be the one normal to dimension of number
|
Returns a field containing the salinity boundary values for the specified boundary location.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(simple_plume_boundary), | intent(in) | :: | this | |||
integer, | intent(in) | :: | location | Which boundary information is to be provided for. The
boundary will be the one normal to dimension of number
|
Indicates that the lower boundary is Dirichlet and the upper boundary is free.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(simple_plume_boundary), | intent(in) | :: | this | |||
integer, | intent(in) | :: | location | Which boundary information is to be provided for. The
boundary will be the one normal to dimension of number
|
||
integer, | intent(out) | :: | bound_type | An integer representing what sort of boundary condition is used. The integer value corresponding to each boundary type is specified in the boundary_types_mod. |
||
integer, | intent(out) | :: | bound_depth | The number of layers of data-points needed to specify the boundary condition. |
Indicates that the lower boundary is Dirichlet and the upper boundary is Neumann.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(simple_plume_boundary), | intent(in) | :: | this | |||
integer, | intent(in) | :: | location | Which boundary information is to be provided for. The
boundary will be the one normal to dimension of number
|
||
integer, | intent(out) | :: | bound_type | An integer representing what sort of boundary condition is used. The integer value corresponding to each boundary type is specified in the boundary_types_mod. |
||
integer, | intent(out) | :: | bound_depth | The number of layers of data-points needed to specify the boundary condition. |