abstract_melt_relationship Derived Type

type, public, abstract :: abstract_melt_relationship

An abstract data type for calculating melting of an ice shelf into a vertically integrated plume. The melt rate, as well as effect on termperature and salinity, are calculated by calling solve_for_melt and then accessed using melt_rate, heat_equation_terms, salt_equation_terms.


Inherited by

type~~abstract_melt_relationship~~InheritedByGraph type~abstract_melt_relationship abstract_melt_relationship type~asym_plume asym_plume type~asym_plume->type~abstract_melt_relationship melt_formulation type~ave_one_equation_melt ave_one_equation_melt type~ave_one_equation_melt->type~abstract_melt_relationship type~one_equation_melt one_equation_melt type~one_equation_melt->type~abstract_melt_relationship type~dallaston2015_melt dallaston2015_melt type~dallaston2015_melt->type~abstract_melt_relationship type~static_plume static_plume type~static_plume->type~abstract_melt_relationship melt_formulation type~plume plume type~plume->type~abstract_melt_relationship melt_formulation

Contents


Type-Bound Procedures

procedure(solve), public, deferred :: solve_for_melt

  • subroutine solve(this, velocity, pressure, temperature, salinity, plume_thickness, time) Prototype

    Arguments

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

    The velocity field of the plume into which fluid is melting.

    class(scalar_field), intent(in) :: pressure

    The water pressure at the interface where the melting occurs.

    class(scalar_field), intent(in) :: temperature

    The temperature of the plume into which fluid is melting.

    class(scalar_field), intent(in) :: salinity

    The salinity of the plume into which fluid is melting.

    class(scalar_field), intent(in) :: plume_thickness

    The thickness of the plume into which fluid is melting.

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

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

procedure(get_scalar), public, deferred :: salt_equation_terms

Returns the terms this melt formulation contributes to the salt equation, after they have been solved for using solve_for_melt.

  • function get_scalar(this) result(property) Prototype

    Arguments

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

    Return Value class(scalar_field), pointer

    The value of whatever property is being returned.

procedure(get_scalar), public, deferred :: heat_equation_terms

Returns the terms this melt formulation contributes to the heat equation, after they have been solved for using solve_for_melt.

  • function get_scalar(this) result(property) Prototype

    Arguments

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

    Return Value class(scalar_field), pointer

    The value of whatever property is being returned.

procedure(get_scalar), public, deferred :: melt_rate

Returns the melt rate calculated using this formulation, after it has been solved for using solve_for_melt.

  • function get_scalar(this) result(property) Prototype

    Arguments

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

    Return Value class(scalar_field), pointer

    The value of whatever property is being returned.

procedure(has_terms), public, deferred :: has_heat_terms

Whether this formulation of melting contributes any terms to a plume's heat equation.

  • pure function has_terms(this) Prototype

    Arguments

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

    Return Value logical

    Whether this formulation of melting contributes terms to the heat or salinity equations.

procedure(has_terms), public, deferred :: has_salt_terms

Whether this formulation of melting contributes any terms to a plume's salinity equation.

  • pure function has_terms(this) Prototype

    Arguments

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

    Return Value logical

    Whether this formulation of melting contributes terms to the heat or salinity equations.

Source Code

  type, abstract, public :: abstract_melt_relationship
    !* Author: Christopher MacMackin
    !  Date: October 2016
    !
    ! An abstract data type for calculating melting of an ice shelf into
    ! a vertically integrated [[plume(type)]]. The melt rate, as well as
    ! effect on termperature and salinity, are calculated by calling
    ! [[abstract_melt_relationship(type):solve_for_melt]] and then accessed
    ! using [[abstract_melt_relationship(type):melt_rate]],
    ! [[abstract_melt_relationship(type):heat_equation_terms]],
    ! [[abstract_melt_relationship(type):salt_equation_terms]]. 
    ! 
  contains
    procedure(solve), deferred      :: solve_for_melt
    procedure(get_scalar), deferred :: salt_equation_terms
      !! Returns the terms this melt formulation contributes to the
      !! salt equation, after they have been solved for using
      !! [[abstract_melt_relationship(type):solve_for_melt]].
    procedure(get_scalar), deferred :: heat_equation_terms
      !! Returns the terms this melt formulation contributes to the
      !! heat equation, after they have been solved for using
      !! [[abstract_melt_relationship(type):solve_for_melt]]. 
    procedure(get_scalar), deferred :: melt_rate
      !! Returns the melt rate calculated using this formulation,
      !! after it has been solved for using 
      !! [[abstract_melt_relationship(type):solve_for_melt]]. 
    procedure(has_terms), deferred  :: has_heat_terms
      !! Whether this formulation of melting contributes any terms to
      !! a plume's heat equation.
    procedure(has_terms), deferred  :: has_salt_terms
      !! Whether this formulation of melting contributes any terms to
      !! a plume's salinity equation.
 end type abstract_melt_relationship