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


Out[1]:

Riemann problems

Many physical theories can be written in balance law form, $$ \partial_t {\bf q} + \partial_x {\bf f}({\bf q}) = {\bf s}({\bf q}). $$ The standard example would be Euler's equations of gasdynamics, used to model high-speed fluid flow. However, there are a huge number of other models, from simple models of traffic flow, through acoustics, electromagnetics, nonlinear elasticity, plasma physics, and even up to Einstein's equations of general relativity.

Equations in balance law form have a number of generic properties. One of the most important is that they admit discontinuous solutions. This has two important effects:

  1. the balance law form given above makes no sense - if the solution is discontinuous then the derivative terms in the equation such as $\partial_x {\bf f}$ do not exist;
  2. the numerical solution of the balance law form becomes significantly more complex than if the solution were smooth.

The wide importance of balance laws means that these problems have been tackled and solved, for practical purposes, many times. This set of notebooks introduces the mathematical and numerical techniques needed to solve the simplest, but most important, discontinuous case: the Riemann problem.

Background

These notebooks will assume that you have both the necessary mathematical and programming background. Essentially, if you have completed David Ketcheson's HyperPython course then you will have both, as only simple python techniques and packages will be used.

A wide variety of books and resources have been written on Riemann problems, much of it concentrating on the Euler equations. In steadily increasing order of complexity I would recommend

  1. Culbert B. Laney, "Computational Gasdynamics". Verbose and easy to read, this gives a lot of key details without getting overly complex. Concentrates on the Euler equations.
  2. Randall J. LeVeque, "Finite Volume Methods for Conservation Laws". Much more breadth and mathematical detail. The aim is more towards deriving the numerical methods used in Ketcheson's HyperPython course than on the Riemann problem explicitly, but a detailed derivation of key results for the shallow water equations is there.
  3. Eleuterio F. Toro, "Riemann Solvers and Numerical Methods for Fluid Dynamics: a practical introduction. A hugely detailed book on Riemann problems, focusing on the Euler equations, and the links to numerical methods. Comprehensive and repays re-reading, but not straightforward.
  4. Philippe G. LeFloch, "Hyperbolic Systems of Conservation Laws: The Theory of Classical and Nonclassical Shock Waves". Detailed mathematical theory both for the standard systems, but also covering what happens when the theory gets more complex (e.g. at phase transitions).
  5. Alexander Voss, "Exact Riemann Solution for the Euler Equations with Nonconvex and Nonsmooth Equation of State" (PhD thesis). A detailed explanation of how to solve generic Riemann problems, even when the system gets more complex.