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
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
\[\begin{split}\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}\end{split}\]
where \(S_{L}\) and \(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 \(S_{*}\) given by
\[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
\[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
\[\begin{split}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.\end{split}\]
\[\begin{split}\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}\end{split}\]
\[\mathbf{U}_{*K}=\cfrac{S_{K}\mathbf{U}_{K}-\mathbf{F}_{K}+P_{LR}\mathbf{D}_{*}}{S_{K}-S_{*}}\]
\[\begin{split}\mathbf{F}_{*K}=\cfrac{S_{*}(S_{K}\mathbf{U}_{K}-\mathbf{F}_{K})+S_{K}P_{LR}\mathbf{D}_{*}}{S_{K}-S_{*}}\\\end{split}\]
\[\begin{split}\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}\end{split}\]
\[\begin{split}\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]\end{split}\]
\[\begin{split}\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]\end{split}\]