Exact vs approximate Riemann solvers

768 Views Asked by At

I am trying to understand numerical methods for conservation laws. I am confused with few terminologies. I have the following doubts.

  1. When do we say that a numerical scheme for a conservation law is a Riemann solver?

  2. What is the difference between approximate and exact Riemann solvers?

  3. I read that Godunov scheme is an exact Riemann solver, but is there any other scheme which is exact Riemann solver?

2

There are 2 best solutions below

0
On

To make everything clear, let us go back to Godunov's method for scalar conservation laws $u_t + f(u)_x = 0$. Godunov's method reads $$ u_i^{n+1} = u_i^n - \frac{\Delta t}{\Delta x}(f_{i+1/2} - f_{i-1/2}) $$ where $u_i^n \simeq u(x_i, t_n)$, $x_{i+1} = x_i+\Delta x$, $t_{n+1} = t_n+\Delta t$, and $f_{i+1/2}$ is the numerical flux at $x_{i+1/2}$. The latter is given by $f_{i+1/2} = f (u^*)$, where $u^*$ is obtained by evaluating the solution to the Riemann problem $$ u(x,t_n) = \left\lbrace \begin{aligned} & u_i^n & & \text{if}\quad x<x_{i+1/2}\\ & u_{i+1}^n & & \text{if}\quad x>x_{i+1/2} \end{aligned} \right. $$ at $(x_{i+1/2}, t_{n+1})$ (see Sec. 4.11 of [1]). If this computation does not require all the Riemann solution, it requires a full knowledge of its structure, i.e. what we call an exact Riemann solver. This notion is intrinsically linked to the Godunov method.

In some cases it may be very expensive to evaluate $u^*$ exactly as defined above. Thus, approximate Riemann solvers are sometimes preferred. For instance, one can name the Roe, HLLE, and HLLC solvers (see Sec. 15.3 of [1]). Those methods introduce approximations of $u^*$ which are easier to compute than the exact $u^*$. However, one should be careful since approximate Riemann solvers can introduce artifacts for particular solutions (e.g. transsonic rarefactions and slow-moving shocks).


[1] R.J. LeVeque, Finite Volume Methods for Hyperbolic Problems, Cambridge University Press, 2002, doi:10.1017/CBO9780511791253

0
On

In addition to Harry49's answer, I would recommend you a book to read if you want to know more about Riemann solvers from basic to advanced things:

E.F. Toro, Riemann solvers and numerical methods for fluid dynamics, 3rd edition, 2009

I know it helped me a lot.