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.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=r8), | private | :: | thickness | = | 0.1_r8 | The thickness of the plume at the inflowing boundary |
|
real(kind=r8), | private | :: | frequency | = | 1.0_r8 | The angular frequency of the oscillations in discharge |
|
real(kind=r8), | private | :: | amplitude | = | 1.0_r8 | The amplitude of the oscillations in discharge |
|
real(kind=r8), | private | :: | mean | = | 1.0_r8 | The time-average of the discharge, about which it oscillates |
|
real(kind=r8), | private | :: | discharge | = | 1.0_r8 | The current discharge value |
|
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), but with seasonal variations in subglacial discharge.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in), | optional | :: | thickness | The plume thickness at the inflowing plume boundary, defaults to 0.1 |
|
real(kind=r8), | intent(in), | optional | :: | frequency | The angular frequency of the oscillations in discharge, defaults to 1.0 |
|
real(kind=r8), | intent(in), | optional | :: | amplitude | The amplitude of the oscillations in discharge, defaults to 1.0 |
|
real(kind=r8), | intent(in), | optional | :: | mean | The time-average of the discharge, about which it oscillates, defaulting to 1.0 |
|
real(kind=r8), | intent(in), | optional | :: | temperature | The water temperature at the inflowing plume boundary, defaults to 0.0 |
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(dallaston2015_seasonal_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(dallaston2015_seasonal_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(dallaston2015_seasonal_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(dallaston2015_seasonal_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(dallaston2015_seasonal_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(dallaston2015_seasonal_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(dallaston2015_seasonal_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(dallaston2015_seasonal_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
|
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(dallaston2015_seasonal_boundary), | intent(inout) | :: | this | |||
real(kind=r8), | intent(in) | :: | time |
type, extends(plume_boundary), public :: dallaston2015_seasonal_boundary
!* Author: Chris MacMackin
! Date: May 2017
!
! 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.
!
private
real(r8) :: thickness = 0.1_r8
!! The thickness of the plume at the inflowing boundary
real(r8) :: frequency = 1.0_r8
!! The angular frequency of the oscillations in discharge
real(r8) :: amplitude = 1.0_r8
!! The amplitude of the oscillations in discharge
real(r8) :: mean = 1.0_r8
!! The time-average of the discharge, about which it oscillates
real(r8) :: discharge = 1.0_r8
!! The current discharge value
real(r8) :: temperature = 0.0_r8
!! The tempreature of the plume at the inflowing boundary
contains
procedure :: thickness_bound_info => seasonal_thickness_info
!! Indicates the type and depth of the thickness boundary at
!! different locations.
procedure :: velocity_bound_info => seasonal_info
!! Indicates the type and depth of the thickness boundary at
!! different locations.
procedure :: temperature_bound_info => seasonal_info
!! Indicates the type and depth of the thickness boundary at
!! different locations.
procedure :: salinity_bound_info => seasonal_info
!! Indicates the type and depth of the thickness boundary at
!! different locations.
procedure :: thickness_bound => seasonal_thickness_bound
!! Produces a field containing the boundary conditions for plume
!! thickness at the specified location.
procedure :: velocity_bound => seasonal_velocity_bound
!! Produces a field containing the boundary conditions for plume
!! velocity at the specified location.
procedure :: temperature_bound => seasonal_temperature_bound
!! Produces a field containing the boundary conditions for plume
!! temperature at the specified location.
procedure :: salinity_bound => seasonal_salinity_bound
!! Produces a field containing the boundary conditions for plume
!! salinity at the specified location.
procedure :: set_time => seasonal_set_time
!! Specifies the time at which to calculate the boundary
!! conditions.
end type dallaston2015_seasonal_boundary