CNSFVHLLCBase

CNSFVHLLCBase is the base class from which all Harten-Lax-Van Leer-Contact (HLLC) residual computing objects inherit from. It computes the wave speeds for the HLLC formulation. Because it is the base class for all HLLC residual objects, we will use its documentation page to outline the HLLC equations. The HLLC flux is defined as:

FHLLC={FLif 0SLFLif SL0SFRif S0SRFRif 0SR\bm{F}_{HLLC} = \begin{cases} \bm{F}_L & \textrm{if } 0 \leq S_L \\ \bm{F}_{*L} & \textrm{if } S_L \leq 0 \leq S_* \\ \bm{F}_{*R} & \textrm{if } S_* \leq 0 \leq S_R \\ \bm{F}_R & \textrm{if } 0 \geq S_R \end{cases}

where FL,R\bm{F}_{L,R} are the left and right evaluations respectively of the convective flux:

F=[ρanρanu+pnxρanv+pnyρanw+pnzρet+p]\bm{F} = \begin{bmatrix} \rho a_n\\ \rho a_n u + p n_x\\ \rho a_n v + p n_y\\ \rho a_n w + p n_z\\ \rho e_t + p \end{bmatrix}

where an=an^a_n = \bm{a}\cdot\hat{n} where a={u,v,w}\bm{a} = \lbrace u, v, w\rbrace and n^\hat{n} is the normal vector at the face. nxn_x, nyn_y, and nzn_z represent the xx, yy, and zz components of the normal vector respectively, while uu, vv, and ww represent the xx, yy, and zz components of the velocity a\bm{a} respectively. pp is the static pressure and et=e+(vv)/2e_t = e + \lparen\bm{v}\cdot\bm{v}\rparen/2 where ee is the specific internal energy. ρ\rho is the density. SLS_L, SS_*, and SRS_R are the left, middle, and right wave speeds respectively. SS_* is given by (Toro, 2009):

S=pRpL+ρLan,L(SLan,L)ρRan,R(SRan,R)ρL(SLan,L)ρR(SRan,R)S_* = \frac{p_R - p_L + \rho_L a_{n,L}\left(S_L - a_{n,L}\right) - \rho_R a_{n,R} \left(S_R - a_{n,R}\right)}{\rho_L \left(S_L - a_{n,L}\right) - \rho_R\left(S_R - a_{n,R}\right)}

The intermediate flux states (denoted by *) are described by (Toro, 2009):

FL=FL+SL(ULUL)FR=FR+SR(URUR)\bm{F}_{*L} = \bm{F}_L + S_L\left(\bm{U}_{*L} - \bm{U}_L\right)\\ \bm{F}_{*R} = \bm{F}_R + S_R\left(\bm{U}_{*R} - \bm{U}_R\right)

where the solution states UL,R\bm{U}_{L,R} are given by the left and right evaluations of

UK=[ρKρKuKρKvKρKwKρKet,K]\bm{U}_K = \begin{bmatrix} \rho_K\\ \rho_K u_K\\ \rho_K v_K\\ \rho_K w_K\\ \rho_K e_{t,K} \end{bmatrix}

where K=LK=L and K=RK=R respectively and the intermediate solution states (the * states) are described by the left and right evaluations of (Toro, 2009):

UK=ρK(SKan,KSKS)[1nx(San,K)+uKny(San,K)+vKnz(San,K)+wKet,K+(San,K)[S+pKρK(SKan,K)]]\bm{U}_{*K} = \rho_K \left(\frac{S_K - a_{n,K}}{S_K - S_*}\right) \begin{bmatrix} 1\\ n_x \left(S_* - a_{n,K}\right) + u_K\\ n_y \left(S_* - a_{n,K}\right) + v_K\\ n_z \left(S_* - a_{n,K}\right) + w_K\\ e_{t,K} + \left(S_* - a_{n,K}\right)\left[S_* + \frac{p_K}{\rho_K\left(S_K - a_{n,K}\right)}\right] \end{bmatrix}

The final piece to finish the definition of the HLLC flux is to specify the evaluation of the left and right wave speeds, SLS_L and SRS_R. These can be evaluated in a variety of ways, but the current CNSFVHLLCBase implementation evaluates them as follows, following (Batten et al., 1997):

SL=min(an,LcL,an,RoecRoe)SR=max(an,R+cR,an,Roe+cRoe)S_L = \text{min}\lparen a_{n,L} - c_L, a_{n,\text{Roe}} - c_{\text{Roe}}\rparen\\ S_R = \text{max}\lparen a_{n,R} + c_R, a_{n,\text{Roe}} + c_{\text{Roe}}\rparen

where cc denotes the local speed of sound in the medium and Roe\text{Roe} denotes Roe-averaged quantities which are computed via

bRoe=ρLbL+ρRbRρL+ρRb_{\text{Roe}} = \frac{\sqrt{\rho_L} b_{L} + \sqrt{\rho_R} b_{R}}{\sqrt{\rho_L} + \sqrt{\rho_R}}

where bb can be any quantity such as ana_n or cc.

References

  1. P Batten, MA Leschziner, and UC Goldberg. Average-state Jacobians and implicit methods for compressible viscous and turbulent flows. Journal of Computational Physics, 137(1):38–78, 1997.[BibTeX]
  2. Eleuterio F Toro. Riemann solvers and numerical methods for fluid dynamics: a practical introduction. Springer Science & Business Media, 3rd edition, 2009.[BibTeX]