Define the compressible Riemann (states) pattern for FORESEER library.
Compressible Riemann (states) pattern object class.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| 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. |
| generic, public :: assignment(=) => rpat_assign_rpat | Overload |
| procedure, public, pass(self) :: compute_fluxes | Compute fluxes at interface |
| procedure, public, pass(self) :: compute_states23_from_u23 | Compute interstates 2 and 3 given veloctiy |
| 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 |
Return a pretty-formatted object description.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(riemann_pattern_compressible_object), | intent(in) | :: | self | Riemann pattern. |
||
| character(len=*), | intent(in), | optional | :: | prefix | Prefixing string. |
Description.
Compute fluxes at initial discontinuity interface.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
Compute an unknown state x from a known state 0 when the two states are separated by a rarefaction, given the velocity
ux.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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). |
Computing an unknown state x from a known state 0 when the two states are separated by a shock, given the velocity
ux.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
Compute interstates 2 and 3 given (an approximation of) veloctiy S=u23.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
Initialize pattern with left and right states.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| 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. |
Operator =.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(riemann_pattern_compressible_object), | intent(inout) | :: | lhs | Left hand side. |
||
| class(riemann_pattern_object), | intent(in) | :: | rhs | Right hand side. |