abstract_viscosity Derived Type

type, public, abstract :: abstract_viscosity

An abstract data type for calculating viscosity of a vertically integrated glacier.


Inherited by

type~~abstract_viscosity~~InheritedByGraph type~abstract_viscosity abstract_viscosity type~newtonian_viscosity newtonian_viscosity type~newtonian_viscosity->type~abstract_viscosity type~ice_sheet ice_sheet type~ice_sheet->type~abstract_viscosity viscosity_law type~ice_shelf ice_shelf type~ice_shelf->type~abstract_viscosity viscosity_law type~glens_law_viscosity glens_law_viscosity type~glens_law_viscosity->type~abstract_viscosity

Contents

Source Code


Type-Bound Procedures

procedure(get_viscosity), public, deferred :: ice_viscosity

Returns the viscosity for the ice.

  • function get_viscosity(this, velocity, temperature, time) result(property) Prototype

    Arguments

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

Source Code

  type, abstract, public :: abstract_viscosity
    !* Author: Christopher MacMackin
    !  Date: October 2016
    !
    ! An abstract data type for calculating viscosity of a vertically
    ! integrated [[glacier(type)]]. 
    !
  contains
    procedure(get_viscosity), deferred   :: ice_viscosity
      !! Returns the viscosity for the ice.
  end type abstract_viscosity