Compressible Riemann (states) pattern object class.
This pattern is generated after the breaking of the initial discontinuity of the Riemann Problem. For the ideal compressible fluid the pattern generated is constituted by 3-waves: 2 genuinely non-linear acoustic waves and 1 linear-degener contact discontinuity.
t ^ .
| S1 _ S2 _ . _ S=u23 _ S3 _ S4
| |\_ |\_ . /| __/| __/|
| \__ \_ U2 . / U3 _/ ___/
| \___ \_ . / __/ ___/
| \____ \_ . / _/ ___/
| \___ \_ . / __/ ___/
| UL=U1 \__\_ . /_/____/ UR=U4
| \\.///
---+--------------------------------o--------------------------------->
| xo x
| 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. |
Overload =.
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. |
Compute fluxes at interface x=xo.
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 interstates 2 and 3 given veloctiy S=u23.
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. |
Compute waves speed.
Compute fluxes at initial discontinuity interface.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(riemann_pattern_object), | intent(inout) | :: | self | Riemann (states) pattern solution. |
Return pretty-printed object description.
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.
Initialize pattern with left and right states.
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 =.
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. |
type, extends(riemann_pattern_object), abstract :: riemann_pattern_compressible_object
!< Compressible Riemann (states) pattern object class.
!<
!< This pattern is generated after the breaking of the initial discontinuity of the Riemann Problem. For the
!< ideal compressible fluid the pattern generated is constituted by 3-waves: 2 genuinely non-linear acoustic
!< waves and 1 linear-degener contact discontinuity.
!<
!<```
!< t ^ .
!< | S1 _ S2 _ . _ S=u23 _ S3 _ S4
!< | |\_ |\_ . /| __/| __/|
!< | \__ \_ U2 . / U3 _/ ___/
!< | \___ \_ . / __/ ___/
!< | \____ \_ . / _/ ___/
!< | \___ \_ . / __/ ___/
!< | UL=U1 \__\_ . /_/____/ UR=U4
!< | \\.///
!< ---+--------------------------------o--------------------------------->
!< | xo x
!<```
type(eos_compressible) :: eos_1 !< Equation of state 1.
real(R8P) :: r_1=0._R8P !< Density of state 1.
real(R8P) :: u_1=0._R8P !< Velocity (normal) of state 1.
real(R8P) :: p_1=0._R8P !< Pressure of state 1.
real(R8P) :: a_1=0._R8P !< Speed of sound of state 1.
type(eos_compressible) :: eos_4 !< Equation of state 4.
real(R8P) :: r_4=0._R8P !< Density of state 4.
real(R8P) :: u_4=0._R8P !< Velocity (normal) of state 4.
real(R8P) :: p_4=0._R8P !< Pressure of state 4.
real(R8P) :: a_4=0._R8P !< Speed of sound of state 4.
real(R8P) :: u23=0._R8P !< Velocity (normal) of intermediate states.
real(R8P) :: p23=0._R8P !< Pressure of intermediate states.
real(R8P) :: r_2=0._R8P !< Density of state 2.
real(R8P) :: a_2=0._R8P !< Speed of sound of state 2.
real(R8P) :: r_3=0._R8P !< Density of state 3.
real(R8P) :: a_3=0._R8P !< Speed of sound of state 3.
real(R8P) :: s_1=0._R8P !< Left-front of left wave.
real(R8P) :: s_2=0._R8P !< Right-front of left wave.
real(R8P) :: s_3=0._R8P !< Left-front of right wave.
real(R8P) :: s_4=0._R8P !< Right-front of right wave.
contains
! deferred methods
procedure, pass(self) :: compute_fluxes !< Compute fluxes at interface `x=xo`.
procedure, pass(self) :: description !< Return pretty-printed object description.
procedure, pass(self) :: initialize !< Initialize pattern with left and right states.
procedure, pass(lhs) :: rpat_assign_rpat !< Operator `=`.
! public methods
procedure, pass(self) :: compute_states23_from_u23 !< Compute interstates 2 and 3 given veloctiy `S=u23`.
endtype riemann_pattern_compressible_object