foreseer_riemann_pattern_compressible_object Module

module~~foreseer_riemann_pattern_compressible_object~~UsesGraph module~foreseer_riemann_pattern_compressible_object foreseer_riemann_pattern_compressible_object module~foreseer_eos_object foreseer_eos_object module~foreseer_eos_object->module~foreseer_riemann_pattern_compressible_object module~foreseer_riemann_pattern_object foreseer_riemann_pattern_object module~foreseer_eos_object->module~foreseer_riemann_pattern_object module~foreseer_conservative_object foreseer_conservative_object module~foreseer_eos_object->module~foreseer_conservative_object module~foreseer_conservative_compressible foreseer_conservative_compressible module~foreseer_eos_object->module~foreseer_conservative_compressible module~foreseer_eos_compressible foreseer_eos_compressible module~foreseer_eos_object->module~foreseer_eos_compressible module~foreseer_riemann_pattern_object->module~foreseer_riemann_pattern_compressible_object vecfor vecfor vecfor->module~foreseer_riemann_pattern_compressible_object vecfor->module~foreseer_riemann_pattern_object vecfor->module~foreseer_conservative_object vecfor->module~foreseer_conservative_compressible module~foreseer_conservative_object->module~foreseer_riemann_pattern_compressible_object module~foreseer_conservative_object->module~foreseer_riemann_pattern_object module~foreseer_conservative_object->module~foreseer_conservative_compressible module~foreseer_conservative_compressible->module~foreseer_riemann_pattern_compressible_object penf penf penf->module~foreseer_riemann_pattern_compressible_object penf->module~foreseer_eos_object penf->module~foreseer_conservative_object penf->module~foreseer_conservative_compressible penf->module~foreseer_eos_compressible module~foreseer_eos_compressible->module~foreseer_riemann_pattern_compressible_object iso_fortran_env iso_fortran_env iso_fortran_env->module~foreseer_conservative_compressible iso_fortran_env->module~foreseer_eos_compressible
Help

Define the compressible Riemann (states) pattern for FORESEER library.

Used By

module~~foreseer_riemann_pattern_compressible_object~~UsedByGraph module~foreseer_riemann_pattern_compressible_object foreseer_riemann_pattern_compressible_object module~foreseer foreseer module~foreseer_riemann_pattern_compressible_object->module~foreseer module~foreseer_riemann_pattern_compressible_pvl foreseer_riemann_pattern_compressible_pvl module~foreseer_riemann_pattern_compressible_object->module~foreseer_riemann_pattern_compressible_pvl 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_riemann_pattern_compressible_pvl->module~foreseer module~foreseer_riemann_solver_compressible_exact foreseer_riemann_solver_compressible_exact module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_exact module~foreseer_riemann_solver_compressible_llf foreseer_riemann_solver_compressible_llf module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_llf module~foreseer_riemann_solver_compressible_pvl foreseer_riemann_solver_compressible_pvl module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_pvl module~foreseer_riemann_solver_compressible_roe foreseer_riemann_solver_compressible_roe module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_roe module~foreseer_riemann_solver_compressible_hllc foreseer_riemann_solver_compressible_hllc module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_hllc module~foreseer_euler_1d->program~foreseer_test_shock_tube module~foreseer_riemann_solver_compressible_exact->module~foreseer module~foreseer_riemann_solver_compressible_llf->module~foreseer module~foreseer_riemann_solver_compressible_pvl->module~foreseer module~foreseer_riemann_solver_compressible_roe->module~foreseer module~foreseer_riemann_solver_compressible_hllc->module~foreseer
Help


Derived Types

type, public, abstract, extends(riemann_pattern_object) :: riemann_pattern_compressible_object

Compressible Riemann (states) pattern object class.

Components

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

Speed of sound of state 1.

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

Speed of sound of state 2.

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

Speed of sound of state 3.

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

Speed of sound of state 4.

type(eos_compressible), public :: eos_1

Equation of state 1.

type(eos_compressible), public :: eos_4

Equation of state 4.

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

Pressure of intermediate states.

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

Pressure of state 1.

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

Pressure of state 4.

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

Density of state 1.

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

Density of state 2.

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

Density of state 3.

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

Density of state 4.

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

Left-front of left wave.

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

Right-front of left wave.

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

Left-front of right wave.

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

Right-front of right wave.

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

Velocity (normal) of intermediate states.

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

Velocity (normal) of state 1.

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

Velocity (normal) of state 4.

Type-Bound Procedures

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

Overload =.

procedure, public, pass(self) :: compute_fluxes

Compute fluxes at interface x=xo.

procedure, public, pass(self) :: compute_states23_from_u23

Compute interstates 2 and 3 given veloctiy S=u23.

procedure(compute_waves_interface), public, pass(self) :: compute_waves

Compute waves speed.

procedure, public, pass(self) :: description

Return pretty-printed object description.

procedure, public, pass(self) :: initialize

Initialize pattern with left and right states.

procedure, public, pass(lhs) :: rpat_assign_rpat

Operator =.


Functions

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

Return a pretty-formatted object description.

Arguments

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

Riemann pattern.

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

Prefixing string.

Return Value character(len=:), allocatable

Description.


Subroutines

private elemental subroutine compute_fluxes(self, normal, fluxes)

Compute fluxes at initial discontinuity interface.

Arguments

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

Riemann (states) pattern solution.

type(vector), intent(in) :: normal

Normal (versor) of face where fluxes are given.

class(conservative_object), intent(inout) :: fluxes

Fluxes at initial discontinuity interface.

private elemental subroutine compute_post_rarefaction(eos, sgn, u0, p0, a0, ux, rx, px, ax, s0, sx)

Compute an unknown state x from a known state 0 when the two states are separated by a rarefaction, given the velocity ux.

Arguments

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

Equation of state.

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

Sign for distinguishing left (-1) from right (1) wave.

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

Known state (speed, pressure and speed of sound).

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

Known state (speed, pressure and speed of sound).

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

Known state (speed, pressure and speed of sound).

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

Known speed of unknown state.

real(kind=R8P), intent(out) :: rx

Unknown pressure and density.

real(kind=R8P), intent(out) :: px

Unknown pressure and density.

real(kind=R8P), intent(out) :: ax

Unknown pressure and density.

real(kind=R8P), intent(out) :: s0

Wave speeds (head and back fronts).

real(kind=R8P), intent(out) :: sx

Wave speeds (head and back fronts).

private elemental subroutine compute_post_shock(eos, sgn, u0, p0, a0, ux, rx, px, ax, ss)

Computing an unknown state x from a known state 0 when the two states are separated by a shock, given the velocity ux.

Arguments

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

Equation of state.

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

Sign for distinguishing left (-1) from right (1) wave.

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

Known state (speed, pressure and speed of sound).

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

Known state (speed, pressure and speed of sound).

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

Known state (speed, pressure and speed of sound).

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

Unknown speed.

real(kind=R8P), intent(out) :: rx

Unknown state (density, pressure and speed of sound).

real(kind=R8P), intent(out) :: px

Unknown state (density, pressure and speed of sound).

real(kind=R8P), intent(out) :: ax

Unknown state (density, pressure and speed of sound).

real(kind=R8P), intent(out) :: ss

Shock wave speed.

private elemental subroutine compute_states23_from_u23(self, p_2, p_3)

Compute interstates 2 and 3 given (an approximation of) veloctiy S=u23.

Arguments

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

Riemann (states) pattern solution.

real(kind=R8P), intent(out) :: p_2

Pressure of state 2.

real(kind=R8P), intent(out) :: p_3

Pressure of state 3.

private elemental subroutine initialize(self, eos_left, state_left, eos_right, state_right, normal)

Initialize pattern with left and right states.

Arguments

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

Riemann (states) pattern solution.

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

Equation of state for left state.

class(conservative_object), intent(in) :: state_left

Left Riemann state.

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

Equation of state for right state.

class(conservative_object), intent(in) :: state_right

Right Riemann state.

type(vector), intent(in) :: normal

Normal (versor) of face where fluxes are given.

private pure subroutine rpat_assign_rpat(lhs, rhs)

Operator =.

Arguments

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

Left hand side.

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

Right hand side.