Rusanov Riemann Solver

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

Rusanov Riemann Solver

The Rusanov scheme uses maximum local wave propagation speed to compute the flux as follows

\[f_{i+1/2}=\frac{1}{2}(f^{L}_{i+1/2}+f^{R}_{i+1/2})-\frac{1}{2}c_{i+1/2}(u^{R}_{i+1/2}-u^{L}_{i+1/2})\]

where \(f^{L}\) is the flux component using the right reconstructed state \(f^{L}_{i+1/2}=f(u^{L}_{i+1/2})\) and \(f^{R}\) is the flux component using the right reconstructed state \(f^{R}_{i+1/2}=f(u^{R}_{i+1/2})\). Here, \(c_{i+1/2}\) is the local wave propagation speed which is obtained by taking the maximum absolute value of the eigenvalues corresponding to the Jacobian, \(\cfrac{\partial f}{\partial u}=u\), between cells \(i\) and \(i+1\) can be obtained as

\[c_{i+1/2}=\text{max}(|u_{i}|,|u_{i+1}|)\]

or in a wider stencil as shown in Equation

\[c_{i+1/2}=\left | \cfrac{\partial f}{\partial u} \right |=max(|u_{i-2}|,|u_{i-1}|,|u_{i}|,|u_{i+1}|,|u_{i+2}|)\]

The Riemann solver based on Rusanov scheme is simple compared to Roe’s Riemann solver and HLLC based Riemann solver. For Euler equations, instead of solving one equation (as in inviscid Burgers equation), now we have to follow the procedure for three equations (i.e., density, velocity, and energy). We need to approximate wave propagation speed at the interface \(c_{i+1/2}\) to compute flux at the interface. For Rusanov scheme, we simply use maximum eigenvalue of the Jacobian matrix as the wave propagation speed. We have \(c_{i+1/2}=\text{max}(|\bar{u}|,|\bar{u}+\bar{a}|,|\bar{u}-\bar{a}|)\), where \(\bar{u}\) and \(\bar{a}\) are are computed using Roe averaging.

The one-dimensional Euler equations in its conservative form can be written as

\[\cfrac{\partial \mathbf{U}}{\partial t}+\cfrac{\partial \mathbf{F}}{\partial x}=0\]

where

\[\begin{split}\mathbf{U}=\left[\begin{array}{c} \rho\\ \rho u \\\rho E \end{array}\right]\quad \mathbf{F}=\left[\begin{array}{c} \rho u\\ \rho uu + p \\\rho H u \end{array} \right]\end{split}\]

Rusanov Flux

\[\mathbf{F}_{i+1/2}=\cfrac{1}{2}(\mathbf{F}_{L}+\mathbf{F}_{R})-\cfrac{1}{2}S^{+}(\mathbf{U}_{R}-\mathbf{U}_{L})\]

Actually, the above speed is bounded by

\[S^{+}=\text{max}\left\{ |u_{L}|+a_{L},|u_{R}|+a_{R}\right\}\]

where

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