wiki:u/erica/RoeSolver

Version 57 (modified by Erica Kaminski, 11 years ago) ( diff )

Recap

The Euler equations are a set of non-linear PDE's, which comprise an eigenvalue problem. The eigenvalues for the equations are functions of the solution to the equations themselves. This means that the waves, which propagate with speeds = to their eigenvalues, distort the solution, and the solution distorts them over space and time. Thus the solution to the Riemann problem for the non-linear system does not consist of a closed form expression for the values of pstar and ustar like it does for a linear system of equations. To solve the Euler equations exactly then, we have developed the method of characteristics that describe the propagation of waves outside of the star region. To solve for values of the q-array inside of the star region, we used an iterative scheme and then sampled the solution in the different wave regions. We now are concerned with approximations to this exact solution. The method to be discussed here considers a 'linearized' version of the Euler equations, so analytical methods used for linear, constant coefficient systems of equations can be applied.

The ROE Solver

The Roe solver is an approximation means for the numerical flux of the Godunov method, which is derived through linearizing a hyperbolic system of equations. For instance, the Euler equations in conservative form are written

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

which using the chain rule is identical to

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

If we assume that

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

where, A-hat is a Jacobian matrix of averaged/constant values, we can derive an expression for the numerical flux in terms of 1) wave strengths (alpha), and the 2) eigenvalues (lambda) and 3) right eigenvectors (K) of the 'averaged' Jacobian:

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

where

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

So the goal is to compute the wave speeds and associated eigenvalues and eigenvectors of the Jacobian matrix. There are 2 methods by which we can do this: 1) The 'Roe' approach, which (non-trivially) constructs an averaged Jacobian directly that must satisfy conditions such as hyperbolicity and conservation, and 2), the newer 'Roe-Pike' approach, which avoids solving for the Jacobian and instead develops algebraic expressions for the sought quantities based on averages of the initial data. It is the 2nd, more widely used approach, that we will explore here.

The Roe-Pike Approach

This approach avoids construction of an averaged Jacobian. Instead the method involves solving for the eigen values and vectors for the original Jacobian, deriving an expression for the wave speeds, and then evaluating these expressions using some vector of averaged scalar quantities, typically W, averaged. So from the equation above of the Euler equations in Jacobian form, we can derive the equations for wave speeds:

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

The eigenvalues and vectors are derived straightforwardly from the Jacobian, using typical methods.

Now, we assume the independent variables u, rho, etc. of these functions for alpha, lambda, and K are reference states (associated with hat notation) which we use to solve for any general, averaged versions of the variables (associated with tilde notation), which we use in the numerical flux. Toro goes through the algebraic analysis for the general case for the Euler equations. The results are as follows.

Roe-Pike Approach for Euler Equations

For the x-split, 3-dimensional Euler equations, we have the following eigenvalues and vectors:

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

and

Error: Failed to load processor Latex
No macro or processor named 'Latex' found
Error: Failed to load processor Latex
No macro or processor named 'Latex' found
Error: Failed to load processor Latex
No macro or processor named 'Latex' found
Error: Failed to load processor Latex
No macro or processor named 'Latex' found
Error: Failed to load processor Latex
No macro or processor named 'Latex' found

where u, v, w, are velocities in x, y, z directions, respectively, a is the local sound speed, given by

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

H is the enthalpy given by

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

E is the total energy per unit volume,

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

with

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

and e being the specific internal energy, which for ideal gases is,

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

Recall that the numerical flux is given by,

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

where the tilde's are the solution of the Roe approach, and are given by:

Error: Failed to load processor Latex
No macro or processor named 'Latex' found

The results for the method are the following equations for the wave-speeds:

Error: Failed to load processor Latex
No macro or processor named 'Latex' found
Error: Failed to load processor Latex
No macro or processor named 'Latex' found
Error: Failed to load processor Latex
No macro or processor named 'Latex' found
Error: Failed to load processor Latex
No macro or processor named 'Latex' found
Error: Failed to load processor Latex
No macro or processor named 'Latex' found

along with their corresponding expressions for the rho, u, v, w, H, and a (listed in Toro, eqn. 11.118) that we would plug into these wave speeds and the above expressions for the eigenvalues and eigenvectors. These in turn would be used in the numerical flux for the Godunov method.

A Sample Algorithm

Short-comings of the Roe Solver

As with all methods of linearizing the Euler equations, discontinuities are resolved, but continuous fan-like structures are not. Thus the Roe solver has trouble solving the RP inside of a sonic (aka transonic) rarefaction wave (see below figure), but less of a problem with contacts and shocks. This problem is refered to as the 'entropy problem', because the method treats the rarefaction wave as a 'rarefaction shock', which is entropy violating. Recall that the entropy condition that must be satisfied for a discontinuous wave jump is that the characteristics run into each other. That is, Sb>S>Sa, where Sb is the speed BEHIND the wave, S is the speed of the wave, and Sa is the speed ahead of the wave. There was a later 'entropy fix' developed for the Roe solver that corrected this issue.

Here is a diagram of the different types of waves:

Here is an example of the Roe solver poorly computing the flow inside of a left rarefaction. As you can see, it computes the solution as if there was a discontinuity inside of the wave, not a continuous fan.

The code

Results

Discussion

Attachments (23)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.