Godunov-type schemes and all its higher-order generalisations require the solution of a Riemann problem for every cell boundary at each time-step. The exact iterative Riemann solver of Gottlieb and Groth (1978) [7] typically needs the computation of an initial guess solution for the Newton iterative method, the identification of the pattern of the solution and finally some Newton iterations. It is clearly a computationally expensive procedure. Moreover, most of the structure of the resulting solution is lost in the Godunov's method, due to the final cell-average operation on each grid-cell. This suggests that good numerical results could be obtained by calculating an appropriate approximate solution instead of the exact one.
The second Riemann solver implemented in the present code gives a direct estimation of the interface-fluxes following the algorithm proposed by Roe. Roe's algorithm solves exactly a linearised problem, instead of looking for an iterative solution of the exact original Riemann problem. The approximate solver proposed by Roe is much less expensive in terms of computational effort than the exact one, because the exact solution of a linear Riemann problem can be more easily built. The linearised problem takes the form:
where is a costant matrix linearising the Jacobian at the interface . Following Roe, the matrix has to verify these conditions:
These conditions ensure that the resulting numerical scheme is conservative and consistent with the original hyperbolic problem. It is also possible to show that a discontinuity (like a shock) is seen as a solution and exactly propagated by the solver.
Roe (1981) [15] showed that in the case of the Euler equations it is always possible to obtain the linearised Jacobian matrix by simply computing it in an appropriate averaged state
In Eq. (57) the index and represent a left and a right state given by some higher-order reconstruction technique. If only a first-order accurate scheme is required, we can set and .
Introducing the ratio
the Roe's average for is written as:
and the speed of sound is given by:
Finally, it can be easily shown that the flux estimation for the exact solution of the approximate linearised Riemann problem is given by Eq. (63) which has been implemented in the code:
where and are the matrices diagonalizing tha Jacobian , is the diagonalized Jacobian and is the matrix which has on the diagonal the absolute values of the eigenvalues of .