eos_compressible Derived Type

type, public, extends(eos_object) :: eos_compressible

type~~eos_compressible~~InheritsGraph type~eos_compressible eos_compressible type~eos_object eos_object type~eos_object->type~eos_compressible
Help


Equation of state (EOS) of ideal compressible object class.

Inherited By

type~~eos_compressible~~InheritedByGraph type~eos_compressible 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


Components

TypeVisibility AttributesNameInitial
real(kind=R8P), public :: R_ =0._R8P

Fluid constant R = cp - cv.

real(kind=R8P), public :: cp_ =0._R8P

Specific heat at constant pressure cp.

real(kind=R8P), public :: cv_ =0._R8P

Specific heat at constant volume cv.

real(kind=R8P), public :: delta_ =0._R8P

(gamma - 1) / 2.

real(kind=R8P), public :: eta_ =0._R8P

2 * gamma / (gamma - 1).

real(kind=R8P), public :: g_ =0._R8P

Specific heats ratio gamma = cp / cv.

real(kind=R8P), public :: gm1_ =0._R8P

gamma - 1.

real(kind=R8P), public :: gp1_ =0._R8P

gamma + 1.


Constructor

public interface eos_compressible

Overload eos_compressible name with its constructor.

  • private elemental function eos_compressible_instance(cp, cv, gam, R) result(instance)

    Return and instance of eos_compressible.

    Arguments

    Type IntentOptional AttributesName
    real(kind=R8P), intent(in), optional :: cp

    Specific heat at constant pressure cp value.

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

    Specific heat at constant volume cv value.

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

    Specific heats ratio gamma=cp/cv value.

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

    Fluid constant R=cp-cv value.

    Return Value type(eos_compressible)

    Instance of eos_compressible.


Type-Bound Procedures

procedure, public, pass(self) :: R

Return fluid constant R=cp-cv.

  • private elemental function R(self) result(R_)

    Return fluid constant R=cp-cv.

    Arguments

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

    Equation of state.

    Return Value real(kind=R8P)

    Fluid constant 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, public, pass(self) :: compute_derivate

Compute derivate quantities (from cp and cv).

  • private elemental subroutine compute_derivate(self)

    Compute derivate quantities (from cp and cv).

    Arguments

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

    Equation of state.

procedure, public, pass(self) :: cp

Return specific heat at constant pressure.

  • private elemental function cp(self) result(cp_)

    Return specific heat at constant pressure.

    Arguments

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

    Equation of state.

    Return Value real(kind=R8P)

    cp value.

procedure, public, pass(self) :: cv

Return specific heat at constant volume.

  • private elemental function cv(self) result(cv_)

    Return specific heat at constant volume.

    Arguments

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

    Equation of state.

    Return Value real(kind=R8P)

    cv value.

procedure, public, pass(self) :: delta

Return (gamma - 1) / 2.

  • private elemental function delta(self) result(delta_)

    Return (gamma - 1) / 2.

    Arguments

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

    Equation of state.

    Return Value real(kind=R8P)

    (gamma - 1) / 2 value.

procedure, public, pass(self) :: density

Return density.

  • private elemental function density(self, energy, pressure, speed_of_sound, temperature) result(density_)

    Return density.

    Arguments

    Type IntentOptional AttributesName
    class(eos_compressible), 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, public, pass(self) :: description

Return pretty-printed object description.

  • private pure function description(self, prefix) result(desc)

    Return a pretty-formatted object description.

    Arguments

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

    Equation of state.

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

    Prefixing string.

    Return Value character(len=:), allocatable

    Description.

procedure, public, pass(self) :: energy

Return specific internal energy.

  • private elemental function energy(self, density, pressure, temperature) result(energy_)

    Return specific internal energy.

    Arguments

    Type IntentOptional AttributesName
    class(eos_compressible), 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, public, pass(lhs) :: eos_assign_eos

Operator =.

  • 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, public, pass(self) :: eta

Return 2 * gamma / (gamma - 1).

  • private elemental function eta(self) result(eta_)

    Return 2 * gamma / (gamma - 1).

    Arguments

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

    Equation of state.

    Return Value real(kind=R8P)

    2 * gamma / (gamma - 1) value.

procedure, public, pass(self) :: g

Return specific heats ratio gamma=cp/cv.

  • private elemental function g(self) result(g_)

    Return specific heats ratio gamma=cp/cv.

    Arguments

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

    Equation of state.

    Return Value real(kind=R8P)

    Specific heats ratio value.

procedure, public, pass(self) :: gm1

Return gamma - 1.

  • private elemental function gm1(self) result(gm1_)

    Return gamma - 1.

    Arguments

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

    Equation of state.

    Return Value real(kind=R8P)

    gamma - 1 value.

procedure, public, pass(self) :: gp1

Return gamma + 1.

  • private elemental function gp1(self) result(gp1_)

    Return gamma + 1.

    Arguments

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

    Equation of state.

    Return Value real(kind=R8P)

    gamma + 1 value.

procedure, public, pass(self) :: pressure

Return pressure.

  • private elemental function pressure(self, density, energy, temperature) result(pressure_)

    Return pressure.

    Arguments

    Type IntentOptional AttributesName
    class(eos_compressible), 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, public, pass(self) :: speed_of_sound

Return speed of sound.

  • private elemental function speed_of_sound(self, density, pressure) result(speed_of_sound_)

    Return speed of sound.

    Arguments

    Type IntentOptional AttributesName
    class(eos_compressible), 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, public, pass(self) :: temperature

Return temperature.

  • private elemental function temperature(self, density, energy, pressure) result(temperature_)

    Return temperature.

    Arguments

    Type IntentOptional AttributesName
    class(eos_compressible), 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, extends(eos_object) :: eos_compressible
   !< Equation of state (EOS) of ideal compressible object class.
   real(R8P) :: cp_=0._R8P    !< Specific heat at constant pressure `cp`.
   real(R8P) :: cv_=0._R8P    !< Specific heat at constant volume `cv`.
   real(R8P) :: g_=0._R8P     !< Specific heats ratio `gamma = cp / cv`.
   real(R8P) :: R_=0._R8P     !< Fluid constant `R = cp - cv`.
   real(R8P) :: gm1_=0._R8P   !< `gamma - 1`.
   real(R8P) :: gp1_=0._R8P   !< `gamma + 1`.
   real(R8P) :: delta_=0._R8P !< `(gamma - 1) / 2`.
   real(R8P) :: eta_=0._R8P   !< `2 * gamma / (gamma - 1)`.
   contains
      ! public methods
      procedure, pass(self) :: compute_derivate !< Compute derivate quantities (from `cp` and `cv`).
      ! deferred methods
      procedure, pass(self) :: cp             !< Return specific heat at constant pressure.
      procedure, pass(self) :: cv             !< Return specific heat at constant volume.
      procedure, pass(self) :: delta          !< Return `(gamma - 1) / 2`.
      procedure, pass(self) :: density        !< Return density.
      procedure, pass(self) :: description    !< Return pretty-printed object description.
      procedure, pass(self) :: energy         !< Return specific internal energy.
      procedure, pass(lhs)  :: eos_assign_eos !< Operator `=`.
      procedure, pass(self) :: eta            !< Return `2 * gamma / (gamma - 1)`.
      procedure, pass(self) :: g              !< Return specific heats ratio `gamma=cp/cv`.
      procedure, pass(self) :: gm1            !< Return `gamma - 1`.
      procedure, pass(self) :: gp1            !< Return `gamma + 1`.
      procedure, pass(self) :: pressure       !< Return pressure.
      procedure, pass(self) :: R              !< Return fluid constant `R=cp-cv`.
      procedure, pass(self) :: speed_of_sound !< Return speed of sound.
      procedure, pass(self) :: temperature    !< Return temperature.
endtype eos_compressible