glens_law_mod Module

Provides a concrete implementation for the abstract_viscosity type using Glen's flow law.


Uses

  • module~~glens_law_mod~~UsesGraph module~glens_law_mod glens_law_mod module~viscosity_mod viscosity_mod module~glens_law_mod->module~viscosity_mod factual_mod factual_mod module~glens_law_mod->factual_mod iso_fortran_env iso_fortran_env module~glens_law_mod->iso_fortran_env module~viscosity_mod->factual_mod module~viscosity_mod->iso_fortran_env

Contents


Interfaces

public interface glens_law_viscosity

  • private pure function constructor(b_val, index) result(this)

    Author
    Christopher MacMackin
    Date
    April 2017

    Instantiates an instance of a viscosity object implementing Glen's flow law.

    Arguments

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

    The coefficient, , in Glen's flow law.

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

    The index, , in the exponent of Glen's flow law.

    Return Value type(glens_law_viscosity)

    The viscosity object being created.


Derived Types

type, public, extends(abstract_viscosity) :: glens_law_viscosity

An implementation of Glen's flow law to describe glacier viscosity. It takes the form where is the second invarient of the strain rate Here, is treated as a constant, although it may be parameterised as a function of temperature.

Components

TypeVisibility AttributesNameInitial
real(kind=r8), private :: b_val =1.0_r8
real(kind=r8), private :: index =3._r8

Constructor

private pure function constructor(b_val, index)

Instantiates an instance of a viscosity object implementing Glen's flow law.

Type-Bound Procedures

procedure, public :: ice_viscosity => glens_ice_viscosity

Returns the viscosity for the ice.


Functions

private pure function constructor(b_val, index) result(this)

Author
Christopher MacMackin
Date
April 2017

Instantiates an instance of a viscosity object implementing Glen's flow law.

Arguments

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

The coefficient, , in Glen's flow law.

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

The index, , in the exponent of Glen's flow law.

Return Value type(glens_law_viscosity)

The viscosity object being created.

private function glens_ice_viscosity(this, velocity, temperature, time) result(viscosity)

Author
Christopher MacMackin
Date
April 2017

Calculates the viscosity of ice using Glen's flow law. See the documentation of the glens_law_viscosity object for a description of this parameterisation.

Arguments

Type IntentOptional AttributesName
class(glens_law_viscosity), intent(in) :: this
class(vector_field), intent(in) :: velocity

The velocity field of the ice for which the velocity is being calculated

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

The temperature of the ice for which viscosity is being calculated.

real(kind=r8), intent(in), optional :: time

The time at which the viscosity is being calculated. If not present then assumed to be same as previous value passed.

Return Value class(scalar_field), pointer

The value of the viscosity