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 |
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 |
Specifies the time at which to calculate the boundary conditions.
Sets the time at which boundary conditions are to be calculated.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(plume_boundary), | intent(inout) | :: | this | |||
real(kind=r8), | intent(in) | :: | time |
Indicates the type and depth of the thickness boundary at different locations.
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 the type and depth of the thickness boundary at different locations.
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. |
Indicates the type and depth of the thickness boundary at different locations.
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. |
Indicates the type and depth of the thickness boundary at different locations.
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. |
Produces a field containing the boundary conditions for plume thickness at the specified location.
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
|
Produces a field containing the boundary conditions for plume velocity at the specified location.
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
|
Produces a field containing the boundary conditions for plume temperature at the specified location.
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
|
Produces a field containing the boundary conditions for plume salinity at the specified location.
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
|
type, extends(plume_boundary), public :: simple_plume_boundary
!* Author: Chris MacMackin
! Date: March 2017
!
! 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.
!
private
real(r8) :: thickness = 0.0_r8
!! The thickness of the plume at the inflowing boundary
real(r8), dimension(2) :: velocity = 1.0_r8
!! The velocity of the plume at the inflowing boundary
real(r8) :: salinity = 0.0_r8
!! The salinity of the plume at the inflowing boundary
real(r8) :: temperature = 0.0_r8
!! The tempreature of the plume at the inflowing boundary
contains
procedure :: thickness_bound_info => simple_thickness_info
!! Indicates the type and depth of the thickness boundary at
!! different locations.
procedure :: velocity_bound_info => simple_info
!! Indicates the type and depth of the thickness boundary at
!! different locations.
procedure :: temperature_bound_info => simple_info
!! Indicates the type and depth of the thickness boundary at
!! different locations.
procedure :: salinity_bound_info => simple_info
!! Indicates the type and depth of the thickness boundary at
!! different locations.
procedure :: thickness_bound => simple_thickness_bound
!! Produces a field containing the boundary conditions for plume
!! thickness at the specified location.
procedure :: velocity_bound => simple_velocity_bound
!! Produces a field containing the boundary conditions for plume
!! velocity at the specified location.
procedure :: temperature_bound => simple_temperature_bound
!! Produces a field containing the boundary conditions for plume
!! temperature at the specified location.
procedure :: salinity_bound => simple_salinity_bound
!! Produces a field containing the boundary conditions for plume
!! salinity at the specified location.
end type simple_plume_boundary