In [4]:
from IPython.core.display import HTML
def css_styling():
    styles = open("./styles/custom.css", "r").read()
    return HTML(styles)
css_styling()


Out[4]:

Theory results

There are a number of key theory results that we need when solving the Riemann problem, written as $$ \partial_t {\bf q} + \partial_x {\bf f}({\bf q}) = {\bf 0}, \qquad {\bf q}(x, t=0) = \begin{cases} {\bf q}_l & x < 0, \\ {\bf q}_r & x > 0, \end{cases} $$ where the left and right states ${\bf q}_{l, r}$ are constant.

Self similarity

We need to show that the solution is self-similar, which in this case means the solution can be written as a function of one variable, ${\bf q} \equiv {\bf q}(\xi)$ where $\xi = x/t$.

First, it is obvious that the equation defining the conservation law, $$ \partial_t {\bf q} + \partial_x {\bf f}({\bf q}) = {\bf 0}, $$ is scale-free. That is, if we change coordinates by any constant scaling to $t' = a t$ and $x' = a x$ where $a > 0$, the conservation law is unchanged in form, $$ \partial_{t'} {\bf q} + \partial_{x'} {\bf f}({\bf q}) = {\bf 0}. $$

Second, we need the initial data to also be scale free. For the Riemann problem this is clearly true: applying the same scaling to the initial data leaves it unchanged.

Combining these results we see that the solution must be scale free so that if $\xi = x / t$ is constant (so that $x$ and $t$ are scaled in the same way), the solution must be constant. So ${\bf q} \equiv {\bf q}(\xi)$.

We will often think of $\xi$ as a spatial coordinate, by considering the result at a fixed time $t = T$, say.

Differentiable solutions

For sections of the solution that are differentiable, we can take two steps. First we can write the conservation law in the quasilinear form $$ \partial_t {\bf q} + \frac{\partial {\bf f}}{\partial {\bf q}} \partial_x {\bf q} = {\bf 0}. $$ Second we can use the self-similarity to replace the partial derivatives, using $$ \begin{align} \partial_t & = \frac{\partial \xi}{\partial t} \partial_{\xi} & \partial_x & = \frac{\partial \xi}{\partial x} \partial_{\xi} \\ & = -\frac{\xi}{t} \partial_{\xi} & & = \frac{1}{t} \partial_{\xi}, \end{align} $$ to get $$ \frac{1}{t} \left( \frac{\partial {\bf f}}{\partial {\bf q}} - \xi \textrm{Id} \right) \partial_{\xi} {\bf q} = {\bf 0}. $$

For $t > 0$ there are two possible cases:

  1. $\partial_{\xi} {\bf q} = {\bf 0}$: the state is constant.
  2. $\xi$ is an eigenvalue of the Jacobian matrix $\partial {\bf f} / \partial {\bf q}$, and $\partial_{\xi} {\bf q}$ is the eigenvector corresponding to this eigenvalue.

We note two consequences from this. First, it only makes sense if the eigenvalues of the Jacobian are real. This is one of the requirements of the system being hyperbolic: the eigenvalues must be real and the eigenvectors independent. Second, if we denote the eigenvalue by $\lambda$ and its associated eigenvector by ${\bf r}$, then we have $$ \begin{align} && \lambda({\bf q}) & = \xi \\ \implies && \frac{\partial \lambda}{\partial {\bf q}} \frac{\partial {\bf q}}{\partial \xi} & = 1, \end{align} $$ by differentiating with respect to $\xi$. Then, as $\partial_{\xi} {\bf q}$ is, as noted above, an eigenvector, we write $$ \frac{\partial {\bf q}}{\partial \xi} = \alpha {\bf r}, $$ and combining the two results determines the proportionality constant $\alpha$ as $$ \alpha = \left[ {\bf r} \cdot \frac{\partial \lambda}{\partial {\bf q}} \right]^{-1} $$ Therefore we have the ordinary differential equation for ${\bf q}$ $$ \frac{\partial {\bf q}}{\partial \xi} = \frac{{\bf r}}{{\bf r} \cdot \frac{\partial \lambda}{\partial {\bf q}}}. $$ This gives a continuous solution for ${\bf q}$, provided that ${\bf r} \cdot \frac{\partial \lambda}{\partial {\bf q}} \ne 0$. This is the requirement that the solution across this wave is genuinely nonlinear.

A final consequence of this section is the number of waves. If the system has size $N$ then there are $N$ eigenvalues, and hence $N$ waves. These will separate constant states, so we expect the solution to consist of $N+1$ constant states separated by $N$ waves.

Discontinuous solutions

There remains only one possibility: the solution is not a continuous function of the similarity coordinate $\xi$. That such solutions may exist is no surprise, as it is true of the initial data.

When the solution is discontinuous we must use the weak form $$ \frac{\textrm{d}}{\textrm{d}t} \int_{x_l}^{x_r} {\bf q} \, \textrm{d}x = {\bf f}({\bf q}(x_l)) - {\bf f}({\bf q}(x_r)). $$

Let us assume that the solution is discontinuous along the path $X(t)$. Consider the volume close to this discontinuity, so that $x_r$ and $x_l$ remain fixed points, but $x_r - x_l = \epsilon \ll 1$. We then split the integrals at the shock, as the data jumps there. In the weak form this gives $$ \begin{align} && \frac{\textrm{d}}{\textrm{d}t} \int_{x_l}^{X(t)} {\bf q} \, \textrm{d}x + \frac{\textrm{d}}{\textrm{d}t} \int_{X(t)}^{x_r} {\bf q} \, \textrm{d}x & = {\bf f}({\bf q}(x_l)) - {\bf f}({\bf q}(x_r)) \\ \implies && \frac{\textrm{d}X}{\textrm{d}t} \left\{ {\bf q} \left( X(t)_{-}, t \right) - {\bf q} \left( X(t)_{+}, t \right) \right\} + \int_{x_l}^{x_r} \frac{\partial {\bf q}}{\partial t} \, \textrm{d}x & = {\bf f}({\bf q}(x_l)) - {\bf f}({\bf q}(x_r)). \end{align} $$ Taking the limit $\epsilon \to 0$ the integral vanishes (as the width of the integral is $\epsilon$) and we have $x_l \to X(t)_{-}$ and $x_r \to X(t)_{+}$. We are left with the Rankine-Hugoniot conditions $$ \frac{\textrm{d}X}{\textrm{d}t} \left[ {\bf q} \right] = \left[ {\bf f}({\bf q}) \right]. $$ Here the notation $\left[ {\bf u} \right]$ means the jump in the quantity ${\bf u}$ across the discontinuity.

As the solution must be self-similar, the shock speed must be constant, $\textrm{d}X / \textrm{d}t = V_s$, giving the standard form $$ V_s \left[ {\bf q} \right] = \left[ {\bf f}({\bf q}) \right]. $$

Summary

  1. The solution to the Riemann problem is self-similar.
  2. The solution contains $N+1$ constant states separated by $N$ waves.
  3. The wave may be continuous, in which case it solves an ordinary differential equation determined by eigenvalues and eigenvectors of the Jacobian matrix.
  4. The wave may be discontinuous, in which case it satisfies the Rankine-Hugoniot equations.

This is not the most general solution covering all cases, but is sufficient for most cases of interest.