glacier_boundary_mod Module

Provides an abstract derived type which can be subtyped in order to specify the boundary conditions for glacier types.


Uses

  • module~~glacier_boundary_mod~~UsesGraph module~glacier_boundary_mod glacier_boundary_mod factual_mod factual_mod module~glacier_boundary_mod->factual_mod iso_fortran_env iso_fortran_env module~glacier_boundary_mod->iso_fortran_env module~boundary_types_mod boundary_types_mod module~glacier_boundary_mod->module~boundary_types_mod

Used by

  • module~~glacier_boundary_mod~~UsedByGraph module~glacier_boundary_mod glacier_boundary_mod module~ice_shelf_mod ice_shelf_mod module~ice_shelf_mod->module~glacier_boundary_mod module~dallaston2015_glacier_boundary_mod dallaston2015_glacier_boundary_mod module~ice_shelf_mod->module~dallaston2015_glacier_boundary_mod module~dallaston2015_glacier_boundary_mod->module~glacier_boundary_mod module~seasonal_glacier_boundary_mod seasonal_glacier_boundary_mod module~seasonal_glacier_boundary_mod->module~glacier_boundary_mod

Contents


Derived Types

type, public :: glacier_boundary

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.

Read more…

Type-Bound Procedures

procedure, public :: thickness_lower_bound => bound_array

Returns a 1D array which should be passed as the exclude_lower_bound/provide_lower_bound argument when getting or setting the raw representation of the thickness field.

procedure, public :: thickness_upper_bound => bound_array

Returns a 1D array which should be passed as the exclude_upper_bound/provide_upper_bound argument when getting or setting the raw representation of the thickness field.

procedure, public :: velocity_lower_bound => bound_array

Returns a 1D array which should be passed as the exclude_lower_bound/provide_lower_bound argument when getting or setting the raw representation of the velocity field.

procedure, public :: velocity_upper_bound => bound_array

Returns a 1D array which should be passed as the exclude_upper_bound/provide_upper_bound argument when getting or setting the raw representation of the velocity field.

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.


Functions

private pure function bound_array(this)

Author
Chris MacMackin
Date
September 2016

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).

Arguments

Type IntentOptional AttributesName
class(glacier_boundary), intent(in) :: this

Return Value integer, dimension(2)

private function boundary_residuals(this, thickness, velocity, viscosity, t) result(residuals)

Author
Chris MacMackin
Date
September 2016

Default implementation of the boundary_residuals method. It returns a zero-length array, effectively indicating free boundaries.

Arguments

Type IntentOptional AttributesName
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.

Return Value real(kind=r8), allocatable, dimension(:)

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.

private pure function bound_type(this)

Author
Chris MacMackin
Date
January 2017

Default implementation of the methods getting the boundary types for a glacier. It returns an array which indicates free boundaries.

Arguments

Type IntentOptional AttributesName
class(glacier_boundary), intent(in) :: this

Return Value integer, dimension(:), allocatable