dallaston2015_glacier_boundary_mod Module

Provides a derived type which specifies the boundary conditions for the ice shelf model used by Dallaston et al. (2015). These are Dirichlet conditions at the lower bound of the first condition as well as, for thickness, the upper bound.


Uses

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

Used by

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

Contents


Interfaces

  • private pure function constructor(thickness, velocity, chi) result(this)

    Author
    Chris MacMackin
    Date
    November 2016

    Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015).

    Arguments

    Type IntentOptional AttributesName
    real(kind=r8), intent(in) :: thickness

    The ice thickness at the inflowing ice shelf boundary

    real(kind=r8), intent(in) :: velocity

    The longitudinal ice velocity at the inflowing ice shelf boundary

    real(kind=r8), intent(in) :: chi

    The dimensionless ratio $\chi \equiv \frac{\rho_igh_0x_x}{2\eta_0u_0}$

    Return Value type(dallaston2015_glacier_boundary)


Derived Types

A type with procedures for getting the boundary conditions of the ice shelf model used by Dallaston et al. (2015). These are Dirichlet conditions at the lower bound of the first condition as well as, for thickness, the upper bound.

Read more…

Components

TypeVisibility AttributesNameInitial
real(kind=r8), private :: thickness =1.0_r8

The thickness of the glacier at the inflowing boundary

real(kind=r8), private :: velocity =1.0_r8

The velocity of the glacier at the inflowing boundary

real(kind=r8), private :: chi =1.0_r8

The dimensionless ratio $\chi \equiv \frac{\rho_igh_0x_x}{2\eta_0u_0}$

Constructor

private pure function constructor(thickness, velocity, chi)

Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015).

Type-Bound Procedures

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 :: 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 => dallaston2015_lower_bound

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 :: velocity_lower_bound => dallaston2015_lower_bound

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 => dallaston2015_upper_bound

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 => dallaston2015_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 => dallaston2015_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 => dallaston2015_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 => dallaston2015_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.


Functions

private pure function constructor(thickness, velocity, chi) result(this)

Author
Chris MacMackin
Date
November 2016

Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015).

Arguments

Type IntentOptional AttributesName
real(kind=r8), intent(in) :: thickness

The ice thickness at the inflowing ice shelf boundary

real(kind=r8), intent(in) :: velocity

The longitudinal ice velocity at the inflowing ice shelf boundary

real(kind=r8), intent(in) :: chi

The dimensionless ratio $\chi \equiv \frac{\rho_igh_0x_x}{2\eta_0u_0}$

Return Value type(dallaston2015_glacier_boundary)

private pure function dallaston2015_lower_bound(this) result(bound_array)

Author
Chris MacMackin
Date
November 2016

Indicates that one layer of cells at the lower boundary in the first dimension should be omitted. This is appropriate for Dirichlet boundary conditions.

Arguments

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

Return Value integer, dimension(2)

private pure function dallaston2015_upper_bound(this) result(bound_array)

Author
Chris MacMackin
Date
November 2016

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.

Arguments

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

Return Value integer, dimension(2)

private pure function dallaston2015_lower_type(this) result(bound_type)

Author
Chris MacMackin
Date
January 2017

Specifies that the lower boundary in the first dimension has Dirichlet boundary conditions.

Arguments

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

Return Value integer, dimension(:), allocatable

private pure function dallaston2015_upper_type(this) result(bound_type)

Author
Chris MacMackin
Date
January 2017

Specifies that the upper boundary in the first dimension has Neumann boundary conditions.

Arguments

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

Return Value integer, dimension(:), allocatable

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

Author
Chris MacMackin
Date
November 2016

Returns the difference between the glacier conditions of the plume and the Dirichlet conditions prescribed in the model of Dallaston et al. (2015)

Arguments

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