I am trying to understand numerical methods for conservation laws. I am confused with few terminologies. I have the following doubts.
When do we say that a numerical scheme for a conservation law is a Riemann solver?
What is the difference between approximate and exact Riemann solvers?
I read that Godunov scheme is an exact Riemann solver, but is there any other scheme which is exact Riemann solver?
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