HLLC Riemann Solver
==================================
#. `CFD Julia: A Learning Module Structuring an Introductory Course on Computational Fluid Dynamics `_
#. `Eigenstructure and Approximate Riemann Solvers for Hyperbolic Conservation Laws `_
#. `Damien Furfaro: A simple HLLC-type Riemann solver for compressible non-equilibrium two-phase flows `_
#. `Numerical Fluid Dynamics `_
Reference
----------------------------
- Riemann Solvers and Numerical Methods for Fluid Dynamics
HLLC Riemann Solver
----------------------------
HLLC Riemann Solver used lower and upper bounds on the characteristics speeds in the solution of Riemann problem involving left and right states. These bounds are approximated as
.. math::
\begin{array}{c}
S_{L}=\text{min}(u_{L},u_{R})-\text{max}(a_{L},a_{R})\\
S_{R}=\text{max}(u_{L},u_{R})+\text{max}(a_{L},a_{R})\\
\end{array}
where :math:`S_{L}` and :math:`S_{R}` are the lower and upper bound for the left and right state characteristics speed. For HLLC
scheme we also include middle wave of speed :math:`S_{*}` given by
.. math::
S_{*}=\cfrac{p_{R}-p_{L}+\rho_{L}u_{L}(S_{L}-u_{L})-\rho_{R}u_{R}(S_{R}-u_{R})}
{\rho_{L}(S_{L}-u_{L})-\rho_{R}(S_{R}-u_{R})}
The mean pressure is given by
.. math::
P_{LR}=\cfrac{1}{2}(p_{L}+p_{R}+\rho_{L}(S_{L}-u_{L})(S_{*}-u_{L})+\rho_{R}(S_{R}-u_{R})(S_{*}-u_{R}))
The fluxes are computed as
.. math::
F_{i+1/2}=\left\{
\begin{array}{ll}
F^{L},& \text{if } S_{L}\ge 0\\
F_{*L},& \text{if }S_{L}\le 0\le S_{*}\\
F_{*R},& \text{if }S_{*}\le 0\le S_{R}\\
F^{R},& \text{if }S_{R}\le 0\\
\end{array}
\right.
-
.. math::
\begin{array}{l}
\mathbf{U}_{*L}=\cfrac{S_{L}\mathbf{U}_{L}-\mathbf{F}_{L}+P_{LR}\mathbf{D}_{*}}{S_{L}-S_{*}}\\
\mathbf{U}_{*R}=\cfrac{S_{R}\mathbf{U}_{R}-\mathbf{F}_{R}+P_{LR}\mathbf{D}_{*}}{S_{R}-S_{*}}\\
\mathbf{F}_{*L}=\cfrac{S_{*}(S_{L}\mathbf{U}_{L}-\mathbf{F}_{L})+S_{L}P_{LR}\mathbf{D}_{*}}{S_{L}-S_{*}}\\
\mathbf{F}_{*R}=\cfrac{S_{*}(S_{R}\mathbf{U}_{R}-\mathbf{F}_{R})+S_{R}P_{LR}\mathbf{D}_{*}}{S_{R}-S_{*}}\\
\end{array}
-
.. math::
\mathbf{U}_{*K}=\cfrac{S_{K}\mathbf{U}_{K}-\mathbf{F}_{K}+P_{LR}\mathbf{D}_{*}}{S_{K}-S_{*}}
-
.. math::
\mathbf{F}_{*K}=\cfrac{S_{*}(S_{K}\mathbf{U}_{K}-\mathbf{F}_{K})+S_{K}P_{LR}\mathbf{D}_{*}}{S_{K}-S_{*}}\\
-
.. math::
\mathbf{U}=\begin{bmatrix}
\rho\\\rho u\\\rho E
\end{bmatrix}\quad
\mathbf{F}=\begin{bmatrix}
\rho u\\\rho u^2+p\\\rho H u
\end{bmatrix}\quad
\mathbf{D}_{*}=\begin{bmatrix}
0\\1\\S_{*}
\end{bmatrix}
-
.. math::
\mathbf{U}_{L}=\left[\begin{array}{l}
\rho_{L}\\\rho_{L} u_{L}\\\rho_{L} E_{L}
\end{array}\right]\quad
\mathbf{U}_{R}=\left[\begin{array}{l}
\rho_{R}\\\rho_{R} u_{R}\\\rho_{R} E_{R}
\end{array}\right]
-
.. math::
\mathbf{F}_{L}=\left[\begin{array}{l}
\rho_{L}u_{L}\\\rho_{L} u^{2}_{L}+p_{L}\\\rho_{L} H_{L}u_{L}
\end{array}\right]\quad
\mathbf{F}_{R}=\left[\begin{array}{l}
\rho_{R}u_{R}\\\rho_{R} u^{2}_{R}+p_{R}\\\rho_{R} H_{R}u_{R}
\end{array}\right]