Riemann problem

A Riemann problem, named after Bernhard Riemann, is a specific initial value problem composed of a conservation equation together with piecewise constant initial data which has a single discontinuity in the domain of interest. The Riemann problem is very useful for the understanding of equations like Euler conservation 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 conservation law equations due to the discreteness of the grid. For that it is widely used in computational fluid dynamics and in computational magnetohydrodynamics simulations. In these fields, Riemann problems are calculated using Riemann solvers.

The Riemann problem in linearized gas dynamics
As a simple example, we investigate the properties of the one-dimensional Riemann problem in gas dynamics (Toro, Eleuterio F. (1999). Riemann Solvers and Numerical Methods for Fluid Dynamics, Pg 44, Example 2.5)

The initial conditions are given 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 equations (see gas dynamics for derivation).



\begin{align} \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 \end{align} $$

where we can assume without loss of generality $$a\ge 0$$. We can now rewrite the above equations in a conservative form:

U_t + A \cdot U_x = 0 $$:

where



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

and the index denotes the partial derivative with respect to the corresponding variable (i.e. x or t).

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$$:



\begin{align} \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} \end{align} $$

Analogously


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

for



\begin{align} \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} \end{align} $$

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



U_* = \begin{bmatrix} \rho_* \\ u_* \end{bmatrix} =\beta_1\mathbf{e}^{(1)}+\alpha_2\mathbf{e}^{(2)} = \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$$:


 * $$ U(t,x)

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

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

The fastest characteristic defines the Courant–Friedrichs–Lewy (CFL) condition, which sets the restriction for the maximum time step for which an explicit numerical method is stable. Generally as more conservation equations are used, more characteristics are involved.