Provides a derived type which specifies the boundary conditions for the ice shelf model used by Dallaston et al. (2015), except that the ice flux at the grounding line varies sinusoidally in time. There are Dirichlet conditions at the lower bound of the first condition as well as, for thickness, the upper bound.
Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015), but with the ice flux at the grounding line varying in time.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in), | optional | :: | thickness | The ice thickness at the inflowing ice shelf boundary, defaults to 1.0 |
|
real(kind=r8), | intent(in), | optional | :: | frequency | The angular frequency of the oscillations in ice flux, defaults to 0.5 |
|
real(kind=r8), | intent(in), | optional | :: | amplitude | The amplitude of the oscillations in ice flux, 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 | :: | chi | The dimensionless ratio , defaults to 1.0 |
|
logical, | intent(in), | optional | :: | square | If present and true, produce a square wave. Otherwise produce a sinusoid. |
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.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=r8), | private | :: | thickness | = | 1.0_r8 | The thickness of the glacier at the inflowing boundary |
|
real(kind=r8), | private | :: | frequency | = | 1.0_r8 | The angular frequency of the oscillations in ice flux |
|
real(kind=r8), | private | :: | amplitude | = | 0.5_r8 | The amplitude of the oscillations in ice flux |
|
real(kind=r8), | private | :: | mean | = | 1.0_r8 | The time-average of the ice flux, about which it oscillates |
|
real(kind=r8), | private | :: | chi | = | 1.0_r8 | The dimensionless ratio $\chi \equiv \frac{\rho_igh_0x_x}{2\eta_0u_0}$ |
|
logical, | private | :: | square | = | .false. | If true, produce a square wave, otherwise produce a sinusoid |
private pure function constructor(thickness, frequency, amplitude, mean, chi, square) | Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015), but with the ice flux at the grounding line varying in time. |
procedure, public :: thickness_upper_bound => bound_array | Returns a 1D array which should be passed as the
|
procedure, public :: thickness_upper_type => bound_type | Returns an array indicating what type of boundary conditions apply for thickness at the upper boundary of each dimension. The types are specified using the parameters in [boundary_types_mod]. |
procedure, public :: thickness_lower_bound => seasonal_lower_bound | Returns a 1D array which should be passed as the
|
procedure, public :: velocity_lower_bound => seasonal_lower_bound | Returns a 1D array which should be passed as the
|
procedure, public :: velocity_upper_bound => seasonal_upper_bound | Returns a 1D array which should be passed as the
|
procedure, public :: thickness_lower_type => seasonal_lower_type | Returns an array indicating what type of boundary conditions apply for thickness at the lower boundary of each dimension. The types are specified using the parameters in [boundary_types_mod]. |
procedure, public :: velocity_lower_type => seasonal_lower_type | Returns an array indicating what type of boundary conditions apply for velocity at the lower boundary of each dimension. The types are specified using the parameters in [boundary_types_mod]. |
procedure, public :: velocity_upper_type => seasonal_upper_type | Returns an array indicating what type of boundary conditions apply for velocity at the upper boundary of each dimension. The types are specified using the parameters in [boundary_types_mod]. |
procedure, public :: boundary_residuals => seasonal_residuals | Returns an array consisting of the difference between the required boundary values and those which actually exist. This can then be appended to a glacier's state vector. The order in which these are listed is as follows: lower thickness boundary, upper thickness boundary, lower velocity boundary, and upper velocity boundary. |
Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015), but with the ice flux at the grounding line varying in time.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in), | optional | :: | thickness | The ice thickness at the inflowing ice shelf boundary, defaults to 1.0 |
|
real(kind=r8), | intent(in), | optional | :: | frequency | The angular frequency of the oscillations in ice flux, defaults to 0.5 |
|
real(kind=r8), | intent(in), | optional | :: | amplitude | The amplitude of the oscillations in ice flux, 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 | :: | chi | The dimensionless ratio , defaults to 1.0 |
|
logical, | intent(in), | optional | :: | square | If present and true, produce a square wave. Otherwise produce a sinusoid. |
Indicates that one layer of cells at the lower boundary in the first dimension should be omitted. This is appropriate for Dirichlet boundary conditions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(seasonal_glacier_boundary), | intent(in) | :: | this |
Indicates that one layer of cells at the upper boundary in the first dimension should be omitted for thickness. This is appropriate for Dirichlet boundary conditions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(seasonal_glacier_boundary), | intent(in) | :: | this |
Specifies that the lower boundary in the first dimension has Dirichlet boundary conditions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(seasonal_glacier_boundary), | intent(in) | :: | this |
Specifies that the upper boundary in the first dimension has Neumann boundary conditions.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(seasonal_glacier_boundary), | intent(in) | :: | this |
Returns the difference between the glacier conditions of the plume and the Dirichlet conditions prescribed in the model of Dallaston et al. (2015)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(seasonal_glacier_boundary), | intent(in) | :: | this | |||
class(scalar_field), | intent(in) | :: | thickness | A field containing the thickness of the glacier |
||
class(vector_field), | intent(in) | :: | velocity | A field containing the flow velocity of the glacier |
||
class(scalar_field), | intent(in) | :: | viscosity | A field containing the viscosity of the ice in the glacier. |
||
real(kind=r8), | intent(in) | :: | t | The time at which the boundary conditions are to be calculated. |
An array containing the difference between the required boundary values and those which are actually present. They are stored in the order: lower thickness boundary, upper thickness boundary, lower velocity boundary, and upper velocity boundary.