Provides an abstract derived type which can be subtyped in order to specify the boundary conditions for glacier types.
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.
procedure, public :: thickness_lower_bound => bound_array | Returns a 1D array which should be passed as the
|
procedure, public :: thickness_upper_bound => bound_array | Returns a 1D array which should be passed as the
|
procedure, public :: velocity_lower_bound => bound_array | Returns a 1D array which should be passed as the
|
procedure, public :: velocity_upper_bound => bound_array | Returns a 1D array which should be passed as the
|
procedure, public :: thickness_lower_type => bound_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 :: 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 :: velocity_lower_type => bound_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 => bound_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 | Returns an array consisting of the difference between the required boundary values and those which actually exist. The order in which these are listed is as follows: lower thickness boundary, upper thickness boundary, lower velocity boundary, and upper velocity boundary. |
Default implementation of the method getting lower and upper boundary information, which is then passed to the methods for getting and setting raw representations of fields. It returns a 1D array of length 2, indicating free boundaries (the raw data should represent all cells contained in the field, not excluding any near the boundaries).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(glacier_boundary), | intent(in) | :: | this |
Default implementation of the boundary_residuals method. It returns a zero-length array, effectively indicating free boundaries.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(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.
Default implementation of the methods getting the boundary types for a glacier. It returns an array which indicates free boundaries.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(glacier_boundary), | intent(in) | :: | this |