Riemann Solver Package

This package contains all of the Python-based Riemann solvers. Each module solves the Riemann solver for a particular system of hyperbolic equations. The solvers all have a common function signature:

rp_<name>_<dim>d(q_l,q_r,aux_l,aux_r,problem_data)

with <name> replaced with the appropriate solver name and <dim> with the appropriate dimension.

Input
  • q_l - (ndarray(…,num_eqn)) Contains the left states of the Riemann problem

  • q_r - (ndarray(…,num_eqn)) Contains the right states of the Riemann problem

  • aux_l - (ndarray(…,num_aux)) Contains the left values of the auxiliary array

  • aux_r - (ndarray(…,num_aux)) Contains the right values oft he auxiliary array

  • problem_data - (dict) Dictionary containing miscellaneous data which is

    usually problem dependent.

Output
  • wave - (ndarray(…,num_eqn,num_waves)) Contains the resulting waves from the cell

    edge

  • s - (ndarray(…,num_waves)) Speeds of each wave

  • amdq - (ndarray(…,num_eqn)) Left going fluctuation

  • apdq - (ndarray(…,num_eqn)) Right going fluctuation

Except for problem_data, all of the input and output values are arrays whose elements represent grid values with locations indicated by the following scheme

Indexing works like this:  here num_ghost=2 as an example
 0     1     2     3     4     mx+num_ghost-2     mx+num_ghost      mx+num_ghost+2
             |                        mx+num_ghost-1 |  mx+num_ghost+1
 |     |     |     |     |   ...   |     |     |     |     |
    0     1  |  2     3            mx+num_ghost-2    |mx+num_ghost
                                          mx+num_ghost-1   mx+num_ghost+1

The top indices represent the values that are located on the grid
cell boundaries such as waves, s and other Riemann problem values,
the bottom for the cell centered values.  In particular the ith grid cell
boundary has the following related information:
                  i-1         i         i+1
                   |          |          |
                   |   i-1    |     i    |
                   |          |          |
Again, grid cell boundary quantities are at the top, cell centered
values are in the cell.

Note

The values q_l[i], q_r[i] are the left and right states, respectively, of the ith Riemann problem. This convention is different than that used in the Fortran Riemann solvers, where q_l[i], q_r[i] are the values at the left and right edges of a cell.

All of the return values (waves, speeds, and fluctuations) are indexed by cell edge (Riemann problem being solved), with s[i] referring to the wave speed at interface $i-1/2$. This follows the same convention used in the Fortran solvers.

See [LeVeque_book_2002] for more details.

List of available Riemann solvers:

Acoustics

Advection

Burgers Equation

Euler Equations

Shallow Water Equations