HLLC Riemann Solver

  1. CFD Julia: A Learning Module Structuring an Introductory Course on Computational Fluid Dynamics

  2. Eigenstructure and Approximate Riemann Solvers for Hyperbolic Conservation Laws

  3. Damien Furfaro: A simple HLLC-type Riemann solver for compressible non-equilibrium two-phase flows

  4. 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

\[\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}\]