Riemann problem

From Wikipedia, the free encyclopedia
Jump to: navigation, search

A Riemann problem, named after Bernhard Riemann, consists of a conservation law together with piecewise constant data having a single discontinuity. The Riemann problem is very useful for the understanding of hyperbolic partial differential equations like the Euler equations because all properties, such as shocks and rarefaction waves, appear as characteristics in the solution. It also gives an exact solution to some complex nonlinear equations, such as the Euler equations.

In numerical analysis, Riemann problems appear in a natural way in finite volume methods for the solution of equation of conservation laws due to the discreteness of the grid. For that it is widely used in computational fluid dynamics and in MHD simulations. In these fields Riemann problems are calculated using Riemann solvers.

The Riemann problem in linearized gas dynamics[edit]

As a simple example, we investigate the properties of the one dimensional Riemann problem in gas dynamics, which initial condition is defined by

\begin{bmatrix} \rho \\ u \end{bmatrix} = \begin{bmatrix} \rho_L \\  u_L\end{bmatrix} \text{ for } x \leq 0
\qquad \text{and} \qquad \begin{bmatrix} \rho \\ u \end{bmatrix} = \begin{bmatrix} \rho_R \\ u_R \end{bmatrix} \text{ for } x  > 0

where x = 0 separates two different states, together with the linearised gas dynamic equation (see gas dynamics for derivation).

\frac{\partial\rho}{\partial t} + \rho_0 \frac{\partial u}{\partial x} & = 0 \\[8pt]
 \frac{\partial u}{\partial t} + \frac{a^2}{\rho_0} \frac{\partial \rho}{\partial x} & = 0

where we can assume w.o.l.g. a\ge 0. We now can rewrite the above equation in conservative form U_t + A \cdot U_x = 0:

U = \begin{bmatrix} \rho \\ u \end{bmatrix}, \quad A = \begin{bmatrix} 0 & \rho_0 \\ \frac{a^2}{\rho_0} & 0 \end{bmatrix}

The eigenvalues of the system are the characteristics of the system  \lambda_1 = -a, \lambda_2 = a . They give the propagation speed of the medium, including that of any discontinuity, which is the speed of sound here. The corresponding eigenvectors are

\mathbf{e}^{(1)} = \begin{bmatrix} \rho_0 \\ -a \end{bmatrix}, \quad 
\mathbf{e}^{(2)} = \begin{bmatrix} \rho_0 \\  a \end{bmatrix}.

By decomposing the left state u_L in terms of the eigenvectors, we get for some \alpha_{1},\alpha_{2}

U_L = \begin{bmatrix} \rho_L \\ u_L \end{bmatrix} = \alpha_1\mathbf{e}^{(1)}   +  \alpha_2 \mathbf{e}^{(2)} .

Now we can solve for \alpha_1 and \alpha_2:

\alpha_1 & = \frac{a \rho_L - \rho_0 u_L}{2a\rho_0} \\[8pt]
\alpha_2 & = \frac{a \rho_L + \rho_0 u_L}{2a\rho_0}


U_R = \begin{bmatrix} \rho_R \\ u_R \end{bmatrix} = \beta_1\mathbf{e}^{(1)}+\beta_2\mathbf{e}^{(2)}


\beta_1 & = \frac{a \rho_R - \rho_0 u_R}{2a\rho_0} \\[8pt]
\beta_2 & = \frac{a \rho_R + \rho_0 u_R}{2a\rho_0}

Using this, in the domain in between the two characteristics t=a|x|, we get the final constant solution

U_* = \begin{bmatrix} \rho_* \\ u_* \end{bmatrix} 
= \beta_1  \begin{bmatrix} \rho_0 \\ -a\end{bmatrix}  +  \alpha_2  \begin{bmatrix} \rho_0 \\ a \end{bmatrix}

and the (piecewise constant) solution in the entire domain t>0:

=  \begin{bmatrix} \rho(t,x)\\ u(t,x)\end{bmatrix}
U_L, & 0<t \le -ax \\
U_* , & 0\le a|x|<t \\ 
U_R,& 0<t \le ax 

As this is just a simple example, it still shows the basic properties. Most important the characteristics which decompose the solution into three domains. The propagation speed of these two equations is equivalent to the propagations speed of the sound.

The fastest characteristic defines the Courant–Friedrichs–Lewy (CFL) condition, which sets the restriction for the maximum time step in a computer simulation. Generally as more conservation equations are used, the more characteristics are involved.


  • Toro, Eleuterio F. (1999). Riemann Solvers and Numerical Methods for Fluid Dynamics. Berlin: Springer Verlag. ISBN 3-540-65966-8. 
  • LeVeque, Randall J. (2004). Finite-Volume Methods for Hyperbolic Problems. Cambridge: Cambridge University Press. ISBN 0-521-81087-6. 

See also[edit]