eos_object Derived Type

type, public, abstract :: eos_object

Equation of State (EOS) object class.

Inherited By

type~~eos_object~~InheritedByGraph type~eos_object eos_object type~eos_compressible eos_compressible type~eos_object->type~eos_compressible type~riemann_pattern_compressible_pvl riemann_pattern_compressible_pvl type~eos_compressible->type~riemann_pattern_compressible_pvl eos_1, eos_4 type~riemann_pattern_compressible_object riemann_pattern_compressible_object type~eos_compressible->type~riemann_pattern_compressible_object eos_1, eos_4 type~euler_1d euler_1d type~eos_compressible->type~euler_1d eos type~riemann_pattern_compressible_object->type~riemann_pattern_compressible_pvl
Help

Source Code


Type-Bound Procedures

procedure(scalar_interface), public, deferred, pass(self) :: R

Return fluid constant R=cp-cv.

  • elemental function scalar_interface(self) result(scalar_) Prototype

    Return a scalar real value by only self data.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    Return Value real(kind=R8P)

    Scalar value.

generic, public :: assignment(=) => eos_assign_eos

Overload =.

  • private pure subroutine eos_assign_eos(lhs, rhs)

    Operator =.

    Arguments

    Type IntentOptional AttributesName
    class(eos_compressible), intent(inout) :: lhs

    Left hand side.

    class(eos_object), intent(in) :: rhs

    Right hand side.

procedure(scalar_interface), public, deferred, pass(self) :: cp

Return specific heat at constant pressure.

  • elemental function scalar_interface(self) result(scalar_) Prototype

    Return a scalar real value by only self data.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    Return Value real(kind=R8P)

    Scalar value.

procedure(scalar_interface), public, deferred, pass(self) :: cv

Return specific heat at constant volume.

  • elemental function scalar_interface(self) result(scalar_) Prototype

    Return a scalar real value by only self data.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    Return Value real(kind=R8P)

    Scalar value.

procedure(scalar_interface), public, deferred, pass(self) :: delta

Return (gamma - 1) / 2.

  • elemental function scalar_interface(self) result(scalar_) Prototype

    Return a scalar real value by only self data.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    Return Value real(kind=R8P)

    Scalar value.

procedure(density_interface), public, deferred, pass(self) :: density

Return density.

  • elemental function density_interface(self, energy, pressure, speed_of_sound, temperature) result(density_) Prototype

    Return density.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    real(kind=R8P), intent(in), optional :: energy

    Specific internal energy value.

    real(kind=R8P), intent(in), optional :: pressure

    Pressure value.

    real(kind=R8P), intent(in), optional :: speed_of_sound

    Speed of sound value.

    real(kind=R8P), intent(in), optional :: temperature

    Temperature value.

    Return Value real(kind=R8P)

    Density value.

procedure(description_interface), public, deferred, pass(self) :: description

Return pretty-printed object description.

  • pure function description_interface(self, prefix) result(desc) Prototype

    Return a pretty-formatted object description.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    character(len=*), intent(in), optional :: prefix

    Prefixing string.

    Return Value character(len=:), allocatable

    Description.

procedure(energy_interface), public, deferred, pass(self) :: energy

Return specific internal energy.

  • elemental function energy_interface(self, density, pressure, temperature) result(energy_) Prototype

    Return specific internal energy.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    real(kind=R8P), intent(in), optional :: density

    Density value.

    real(kind=R8P), intent(in), optional :: pressure

    Pressure value.

    real(kind=R8P), intent(in), optional :: temperature

    Temperature value.

    Return Value real(kind=R8P)

    Energy value.

procedure(assignment_interface), public, deferred, pass(lhs) :: eos_assign_eos

Operator =.

  • pure subroutine assignment_interface(lhs, rhs) Prototype

    Operator =.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(inout) :: lhs

    Left hand side.

    class(eos_object), intent(in) :: rhs

    Right hand side.

procedure(scalar_interface), public, deferred, pass(self) :: eta

Return 2 * gamma / (gamma - 1).

  • elemental function scalar_interface(self) result(scalar_) Prototype

    Return a scalar real value by only self data.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    Return Value real(kind=R8P)

    Scalar value.

procedure(scalar_interface), public, deferred, pass(self) :: g

Return specific heats ratio gamma=cp/cv.

  • elemental function scalar_interface(self) result(scalar_) Prototype

    Return a scalar real value by only self data.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    Return Value real(kind=R8P)

    Scalar value.

procedure(scalar_interface), public, deferred, pass(self) :: gm1

Return gamma - 1.

  • elemental function scalar_interface(self) result(scalar_) Prototype

    Return a scalar real value by only self data.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    Return Value real(kind=R8P)

    Scalar value.

procedure(scalar_interface), public, deferred, pass(self) :: gp1

Return gamma + 1.

  • elemental function scalar_interface(self) result(scalar_) Prototype

    Return a scalar real value by only self data.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    Return Value real(kind=R8P)

    Scalar value.

procedure(pressure_interface), public, deferred, pass(self) :: pressure

Return pressure.

  • elemental function pressure_interface(self, density, energy, temperature) result(pressure_) Prototype

    Return pressure.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    real(kind=R8P), intent(in), optional :: density

    Density value.

    real(kind=R8P), intent(in), optional :: energy

    Specific internal energy value.

    real(kind=R8P), intent(in), optional :: temperature

    Temperature value.

    Return Value real(kind=R8P)

    Pressure value.

procedure(speed_of_sound_interface), public, deferred, pass(self) :: speed_of_sound

Return speed of sound.

  • elemental function speed_of_sound_interface(self, density, pressure) result(speed_of_sound_) Prototype

    Return speed of sound.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    real(kind=R8P), intent(in) :: density

    Density value.

    real(kind=R8P), intent(in) :: pressure

    Pressure value.

    Return Value real(kind=R8P)

    Speed of sound value.

procedure(temperature_interface), public, deferred, pass(self) :: temperature

Return temperature.

  • elemental function temperature_interface(self, density, energy, pressure) result(temperature_) Prototype

    Return temperature.

    Arguments

    Type IntentOptional AttributesName
    class(eos_object), intent(in) :: self

    Equation of state.

    real(kind=R8P), intent(in), optional :: density

    Density value.

    real(kind=R8P), intent(in), optional :: energy

    Specific internal energy value.

    real(kind=R8P), intent(in), optional :: pressure

    Pressure value.

    Return Value real(kind=R8P)

    Temperature value.

Source Code

type, abstract :: eos_object
   !< Equation of State (EOS) object class.
   contains
      ! deferred methods
      procedure(scalar_interface),         pass(self), deferred :: cp             !< Return specific heat at constant pressure.
      procedure(scalar_interface),         pass(self), deferred :: cv             !< Return specific heat at constant volume.
      procedure(density_interface),        pass(self), deferred :: density        !< Return density.
      procedure(scalar_interface),         pass(self), deferred :: delta          !< Return `(gamma - 1) / 2`.
      procedure(description_interface),    pass(self), deferred :: description    !< Return pretty-printed object description.
      procedure(energy_interface),         pass(self), deferred :: energy         !< Return specific internal energy.
      procedure(assignment_interface),     pass(lhs),  deferred :: eos_assign_eos !< Operator `=`.
      procedure(scalar_interface),         pass(self), deferred :: eta            !< Return `2 * gamma / (gamma - 1)`.
      procedure(scalar_interface),         pass(self), deferred :: g              !< Return specific heats ratio `gamma=cp/cv`.
      procedure(scalar_interface),         pass(self), deferred :: gm1            !< Return `gamma - 1`.
      procedure(scalar_interface),         pass(self), deferred :: gp1            !< Return `gamma + 1`.
      procedure(pressure_interface),       pass(self), deferred :: pressure       !< Return pressure.
      procedure(scalar_interface),         pass(self), deferred :: R              !< Return fluid constant `R=cp-cv`.
      procedure(speed_of_sound_interface), pass(self), deferred :: speed_of_sound !< Return speed of sound.
      procedure(temperature_interface),    pass(self), deferred :: temperature    !< Return temperature.
      ! operators
      generic :: assignment(=) => eos_assign_eos !< Overload `=`.
endtype eos_object