foreseer_primitive_compressible Module

module~~foreseer_primitive_compressible~~UsesGraph module~foreseer_primitive_compressible foreseer_primitive_compressible module~foreseer_primitive_object foreseer_primitive_object module~foreseer_primitive_object->module~foreseer_primitive_compressible vecfor vecfor vecfor->module~foreseer_primitive_compressible vecfor->module~foreseer_primitive_object penf penf penf->module~foreseer_primitive_compressible penf->module~foreseer_primitive_object module~foreseer_eos_object foreseer_eos_object penf->module~foreseer_eos_object iso_fortran_env iso_fortran_env iso_fortran_env->module~foreseer_primitive_compressible module~foreseer_eos_object->module~foreseer_primitive_compressible module~foreseer_eos_object->module~foreseer_primitive_object
Help

Define the abstract primitive compressible state of a Riemann Problem for FORESEER library.

Used By

module~~foreseer_primitive_compressible~~UsedByGraph module~foreseer_primitive_compressible foreseer_primitive_compressible module~foreseer_compressible_transformations foreseer_compressible_transformations module~foreseer_primitive_compressible->module~foreseer_compressible_transformations module~foreseer foreseer module~foreseer_primitive_compressible->module~foreseer module~foreseer_compressible_transformations->module~foreseer program~foreseer_test_riemann_solver_compressible_pvl foreseer_test_riemann_solver_compressible_pvl module~foreseer->program~foreseer_test_riemann_solver_compressible_pvl module~foreseer_euler_1d foreseer_euler_1d module~foreseer->module~foreseer_euler_1d program~foreseer_test_conservative_compressible foreseer_test_conservative_compressible module~foreseer->program~foreseer_test_conservative_compressible program~foreseer_test_riemann_solver_compressible_hllc~2 foreseer_test_riemann_solver_compressible_hllc module~foreseer->program~foreseer_test_riemann_solver_compressible_hllc~2 program~foreseer_test_eos_compressible foreseer_test_eos_compressible module~foreseer->program~foreseer_test_eos_compressible program~foreseer_test_shock_tube foreseer_test_shock_tube module~foreseer->program~foreseer_test_shock_tube program~foreseer_test_riemann_solver_compressible_llf foreseer_test_riemann_solver_compressible_llf module~foreseer->program~foreseer_test_riemann_solver_compressible_llf program~foreseer_test_compressible_transformations foreseer_test_compressible_transformations module~foreseer->program~foreseer_test_compressible_transformations program~foreseer_test_riemann_solver_compressible_hllc foreseer_test_riemann_solver_compressible_hllc module~foreseer->program~foreseer_test_riemann_solver_compressible_hllc program~foreseer_test_primitive_compressible foreseer_test_primitive_compressible module~foreseer->program~foreseer_test_primitive_compressible program~foreseer_test_riemann_solver_compressible_roe foreseer_test_riemann_solver_compressible_roe module~foreseer->program~foreseer_test_riemann_solver_compressible_roe module~foreseer_euler_1d->program~foreseer_test_shock_tube
Help


Interfaces

public interface primitive_compressible

Overload primitive_compressible name with its constructor.


Derived Types

type, public, extends(primitive_object) :: primitive_compressible

Convervative compressible object class.

Components

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

Density, rho.

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

Pressure, p.

type(vector), public :: velocity

Velocity, v.

Constructor

Overload primitive_compressible name with its constructor.

private elemental function primitive_compressible_instance(density, velocity, pressure)

Return and instance of primitive_compressible.

Type-Bound Procedures

procedure, public, pass(lhs) :: add

Operator +.

procedure, public, pass(self) :: array

Return serialized array of primitive.

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

Overload =.

procedure, public, pass(self) :: description

Return pretty-printed object description.

procedure, public, pass(self) :: destroy

Destroy primitive.

procedure, public, pass(self) :: energy

Return energy value.

procedure, public, pass(self) :: initialize

Initialize primitive.

procedure, public, pass(self) :: left_eigenvectors

Return the left eigenvectors matrix L as dF/dP = A = R ^ L.

procedure, public, pass(self) :: momentum

Return momentum vector.

procedure, public, pass(self) :: negative

Unary operator - prim.

generic, public :: operator(*) => prim_multiply_prim, prim_multiply_real, real_multiply_prim

Overload *.

generic, public :: operator(+) => add, positive

Overload +.

generic, public :: operator(-) => sub, negative

Overload -.

generic, public :: operator(/) => prim_divide_real

Overload /.

procedure, public, pass(self) :: positive

Unary operator + prim.

procedure, public, pass(lhs) :: prim_assign_prim

Operator =.

procedure, public, pass(lhs) :: prim_divide_real

Operator prim / real.

procedure, public, pass(lhs) :: prim_multiply_prim

Operator *.

procedure, public, pass(lhs) :: prim_multiply_real

Operator prim * real.

procedure, public, pass(rhs) :: real_multiply_prim

Operator real * prim.

procedure, public, pass(self) :: right_eigenvectors

Return the right eigenvectors matrix R as dF/dP = A = R ^ L.

procedure, public, pass(lhs) :: sub

Operator -.


Functions

private function add(lhs, rhs) result(operator_result)

Operator +.

Arguments

Type IntentOptional AttributesName
class(primitive_compressible), intent(in) :: lhs

Left hand side.

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

Right hand side.

Return Value class(primitive_object), allocatable

Operator result.

private pure function array(self) result(array_)

Return serialized array of primitive.

Arguments

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

Primitive.

Return Value real(kind=R8P), allocatable, (:)

Serialized array of primitive.

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

Return a pretty-formatted object description.

Arguments

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

Primitive.

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

Prefixing string.

Return Value character(len=:), allocatable

Description.

private elemental function energy(self, eos) result(energy_)

Return energy value.

Arguments

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

Primitive.

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

Equation of state.

Return Value real(kind=R8P)

Energy value.

private pure function left_eigenvectors(self, eos) result(eig)

Return the left eigenvectors matrix L as dF/dP = A = R ^ L.

Arguments

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

Primitive.

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

Equation of state.

Return Value real(kind=R8P) (1:3,1:3)

Eigenvectors.

private elemental function momentum(self) result(momentum_)

Return momentum vector.

Arguments

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

Primitive.

Return Value type(vector)

Momentum vector.

private function negative(self) result(operator_result)

Unary operator - prim.

Arguments

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

Primitive.

Return Value class(primitive_object), allocatable

Operator result.

private function positive(self) result(operator_result)

Unary operator + prim.

Arguments

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

Primitive.

Return Value class(primitive_object), allocatable

Operator result.

private function prim_divide_real(lhs, rhs) result(operator_result)

Operator prim / real.

Arguments

Type IntentOptional AttributesName
class(primitive_compressible), intent(in) :: lhs

Left hand side.

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

Right hand side.

Return Value class(primitive_object), allocatable

Operator result.

private function prim_multiply_prim(lhs, rhs) result(operator_result)

Operator *.

Arguments

Type IntentOptional AttributesName
class(primitive_compressible), intent(in) :: lhs

Left hand side.

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

Right hand side.

Return Value class(primitive_object), allocatable

Operator result.

private function prim_multiply_real(lhs, rhs) result(operator_result)

Operator prim * real.

Arguments

Type IntentOptional AttributesName
class(primitive_compressible), intent(in) :: lhs

Left hand side.

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

Right hand side.

Return Value class(primitive_object), allocatable

Operator result.

private elemental function primitive_compressible_instance(density, velocity, pressure) result(instance)

Return and instance of primitive_compressible.

Arguments

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

Density, rho.

type(vector), intent(in), optional :: velocity

Velocity, v.

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

Pressure, p.

Return Value type(primitive_compressible)

Instance of primitive_compressible.

public function primitive_compressible_pointer(to, error_message) result(pointer_)

Return primitive_compressible pointer associated to primitive_object or its extensions until primitive_compressible included.

Arguments

Type IntentOptional AttributesName
class(primitive_object), intent(in), target:: to

Target of associate.

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

Auxiliary error message.

Return Value class(primitive_compressible), pointer

Associated pointer.

private function real_multiply_prim(lhs, rhs) result(operator_result)

Operator real * prim.

Arguments

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

Left hand side.

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

Right hand side.

Return Value class(primitive_object), allocatable

Operator result.

private pure function right_eigenvectors(self, eos) result(eig)

Return the right eigenvectors matrix R as dF/dP = A = R ^ L.

Arguments

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

Primitive.

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

Equation of state.

Return Value real(kind=R8P) (1:3,1:3)

Eigenvectors.

private function sub(lhs, rhs) result(operator_result)

Operator +.

Arguments

Type IntentOptional AttributesName
class(primitive_compressible), intent(in) :: lhs

Left hand side.

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

Right hand side.

Return Value class(primitive_object), allocatable

Operator result.


Subroutines

private elemental subroutine destroy(self)

Destroy primitive.

Arguments

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

Primitive.

private subroutine initialize(self, initial_state)

Initialize primitive.

Arguments

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

Primitive.

class(primitive_object), intent(in), optional :: initial_state

Initial state.

private pure subroutine prim_assign_prim(lhs, rhs)

Operator =.

Arguments

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

Left hand side.

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

Right hand side.