Version 11 (modified by 12 years ago) ( diff ) | ,
---|

# Intro

The Riemann problem is an IVP for the Euler Equations, which consists of 2 constant initial data states separated by a discontinuity between them, say at x=0. For x<x=0, we say the data state is XL, for which there are initial variables WL=(rho_L, p_L, u_L). Similarly for the initial right data state, XR=x>x=0, the initial variables are WR=(rho_R, p_R, u_R). The solution of this IVP consists of 3 nonlinear waves, a left wave that is either a shock or a rarefaction, a center contact discontinuity, and a right wave that is either a shock or a rarefaction wave. Depending on which type of L- or R-wave is present, different expressions exist that describe the change in variables across them. The contact discontinuity is special in that the pressure (p) and velocity (u) are constant across it.

## Program Outline for Exact Riemann Solver

Given the above properties of the Riemann problem, an algebraic expression can be derived which gives p in the central "star-region" (denoted by '*'). The overall structure of the Riemann problem then is to solve this algebraic equation for p*. Once p* is known, u* follows immediately. The remaining rho*_L and rho*_R follow from expressions valid for the specific L- or R- wave present.

The program thus will consist of 4 parts: 1. Code to find p* using an iterative process, 2. Comparing p* to p_L and p_R to identify the types of nonlinear waves present in the solution, 3. Find remaining quantities in star region, where u* is given by simple expression in Toro (eqn. 4.9), and wave-specific expressions give rho*_L and rho*_R.

### Exact Riemann Solver

- Declarations
- Wl=()
- Wr=()
- tol =

- Main Program Body
- Call P* routine - find and record p*
- Call Identification routine - find types of waves present, record
- Call U*() - reads in vars and returns U*
- Call rho* - reads in vars and returns rho*
- Print to File - u*, rho*, p*

- Functions
- FL = ()
- FR = ()
- U* = ()
- rho*L = {}
- rho*R = {}

- Subroutines
- Find p* using initial estimate
- type of approximation (1)-(5) for different options (on screen options)
- let p0=(approximation)
- Begin iterative process, that ends once | | < tol

- Find p* using initial estimate

- Determine types of waves present
- comparing p* to pL and pR
- series of if statements corresponding to flow chart
- left_wave = 1 for shock, 2 for rarefaction

### Results

### Attachments (5)

- LSRR.png (28.1 KB ) - added by 12 years ago.
- LBlastWave.png (28.5 KB ) - added by 12 years ago.
- 123Test.png (17.2 KB ) - added by 12 years ago.
- SodTest2ndAttempt.png (34.3 KB ) - added by 12 years ago.
- solver.f90 (11.8 KB ) - added by 12 years ago.

Download all attachments as: .zip

**Note:**See TracWiki for help on using the wiki.