kochergin1987_entrainment Derived Type

type, public, extends(abstract_entrainment) :: kochergin1987_entrainment

A parameterisation of entrainment () as described by Kochergin (1987): Here, is an entrainment coefficient, is the velocity of the plume, is the reduced gravity, and is the turbulent Schmidt number. The latter-most can be expressed as , where is the Richardson number.


Inherits

type~~kochergin1987_entrainment~~InheritsGraph type~kochergin1987_entrainment kochergin1987_entrainment type~abstract_entrainment abstract_entrainment type~kochergin1987_entrainment->type~abstract_entrainment

Contents


Components

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

The entrainment coefficient

real(kind=r8), private :: delta =0.036_r8

The ratio


Constructor

public interface kochergin1987_entrainment

  • private pure function constructor(coefficient, delta) result(this)

    Arguments

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

    The entrainment coefficient

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

    The ratio

    Return Value type(kochergin1987_entrainment)

    A new entrainment object


Type-Bound Procedures

procedure, public :: entrainment_rate => kochergin1987_rate

Returns the entrainment rate for ambient water into the plume.

  • private function kochergin1987_rate(this, velocity, thickness, depth, density_diff, time) result(entrainment)

    Author
    Christopher MacMackin
    Date
    Feburary 2018

    Here, is an entrainment coefficient, is the velocity of the plume, is the reduced gravity, and is the turbulent Schmidt number. The Schmidt number is a function of the Richardson number :

    Arguments

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

    The velocity field of the plume into which fluid is being entrained.

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

    The thickness of the plume into which fluid is being entrained

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

    The depth of the upper surface of the plume into which fluid is being entrained

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

    The difference between the ambient density and the density of the plume into which the ambient fluid is being entrained.

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

    The time at which the entrainment 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 entrainment

Source Code

  type, extends(abstract_entrainment), public :: kochergin1987_entrainment
    !* Author: Christopher MacMackin
    !  Date: Feburary 2018
    !
    ! A parameterisation of entrainment (\(e\)) as described by
    ! Kochergin (1987): $$e =
    ! \frac{c_L^2}{S_m}\sqrt{|\vec{U}|^2+\frac{g'D}{S_m}}.$$ Here,
    ! \(c_L\) is an entrainment coefficient, \(\vec{U}\) is the
    ! velocity of the plume, \(g'\) is the reduced gravity, and
    ! \(S_m\) is the turbulent Schmidt number. The latter-most can be
    ! expressed as $$ S_m = \frac{Ri}{0.0725(Ri + 0.186 -
    ! \sqrt{Ri^2 - 0.316Ri + 0.0346})} $$, where \(Ri =
    ! g'D/|\vec{U}|^2\) is the Richardson number.
    !
    private
    real(r8) :: coefficient = 1.0_r8
      !! The entrainment coefficient \(c_L^2x_0/D_0\)
    real(r8) :: delta = 0.036_r8
      !! The ratio \(D_0/h_0\)
  contains
    procedure :: entrainment_rate => kochergin1987_rate
      !! Returns the entrainment rate for ambient water into the plume.
  end type kochergin1987_entrainment