<previous: Van Leer Flux Splitting
up to Main Flux Page
next: AUSM Flux Splitting >
open User's Guide (in this window)
open Applet Page (in new window)

Roe Flux Differencing Scheme: The Approximate Riemann Problem

    The Roe (1980) method utilizes a somewhat different premise from the Van Leer flux splitting technique.  In the case of the Roe scheme, the solution is based on solving a localized Riemann problem to calculate the flux at a given face of the domain.  The  Riemann problem is outlined very well in chapter 5 of Laney (1998).  The basic premise of this problem is that changes in a flow can be transmitted only through entropy waves and acoustic waves, and only at some given speeds, which represent the eigenvalues of the governing non-linear equation system.  In one-dimension, there are three wave speeds, corresponding to the entropy wave at the speed the fluid is traveling, and acoustic waves representing the speed of sound relative to the fluid speed in the upstream and downstream directions (note that these waves may not actually be in the upstream and downstream directions respectively, but this is the sense in which they are defined).  Since the solution to the equation set changes only across one of these waves, the solution of the Euler equations at any point in space and time can be represented by a summation of the state to the extreme left or right of the space, plus (or minus) one or more of the state changes across these waves.  Again, see Laney (1998) for more details and some graphical interpretations for better understanding.
    Since the Euler equations are non-linear, the corresponding Riemann problem is non-linear as well.  This can be expensive to calculate in some cases, and Roe found that a properly selected approximate problem does the job just as well in most cases and saves on calculation complexity.  To start, it is useful to remember the vector of conservative variables given in an earlier section in eqn. (6).  It has been re-cast here in terms of total enthalpy to make it consistent with Roe's scheme.
conservative variables
(33)
The corresponding flux is given in eqn. (34), also in terms of total enthalpy.  These changes can be found simply by making some simple substitutions for total energy and pressure to eliminate them,
flux
(34)
The last section on the Van Leer method introduced the flux jacobian form for the full flux.  That was previously given in eqn. (28), and is again re-cast to show total enthalpy.
flux Jacobian
(35)
These items given in eqns. (33) through (35) will be employed to develop the Roe scheme.
    If is also useful at this point to introduce the eigenvalue/eigenvector system that can be constructed for the Jacobian matrix A.  The matrix can be diagonalized as shown by eqn. (36).
eigenvalue system
(36)
Here, the eigenvalue matrix is simply a diagonal matrix of the wavespeeds already discussed, and it can be written out as in eqn. (37).
eigenvalue matrix
(37)
The corresponding eigenvector matrix and its inverse are given by eqns. (38) and (39).
eigenvector matrix
(38)

eigenvector matrix
(39)
    Since the calculation of either a conservative variable or the corresponding flux at an arbitrary point in space is a non-linear process in this derivation, the Roe scheme performs a type of linear interpolation to get the flux at some location.  The known states at the extreme left and right are used, and a secant line extended between the two to calculate the intermediate solution.  With the assumption of a secant line, the problem becomes first order homoegeneous.  This means that the Jacobian matrix A of the flux times the change in the conservative variable vector equals exactly the change in flux over the same space.  In general, there are an infinite number of possible approximate Jacobian matrices that satisfy first order homogeneity, but the Roe scheme reduces these possiblities to a unique solution by selecting an average conservative variable set instead of an average Jacobian matrix.  This can be clarified by looking at the resulting equation which must be satisfied by the Roe scheme in eqn. (40).
Roe's approximate secant method
(40)
Here, as stated the change in flux from right to left is simply the change in the conservative variable from right to left times the Jacobian matrix evaluated at some average state which must be uniquely defined by the left and right states.  By knowing the correct average for a given problem, one may find the solution variables or flux at any point in space and time.
    The key then is to generate a solution for the correct "averaged" solution variables given a set of left and right states.  One may define the change from right to left of any of the solution variables by the following:
delta rho

delta u

delta h0
(41)
This holds true of any conservative or non-conservative variable in this derivation.
    Using eqn. (40) with these "delta" values substituted into eqns. () and (), one finds that there is an exact solution for the two averaged variables of velocity and total enthalpy.  The solution after some algebra is given in eqn. (42) for velocity and eqn. (43) for total enthalpy
u averaged
(42)

h0 averaged
(43)
In order to calculate the rest of the averaged variables, it is necessary to arbitrarily pick a representation for averaged density.  Note that the selection will not affect the Jacobian matrix approximation given in eqn. (35).  The averaged velocity and total enthalpy already found completely defines it.  It is standard practice to use the averaged density as follows:
rho averaged
(44)
Having this allows all the other "averaged" values to be calculated using the usual state relationships.  Most important is the Roe averaged speed of sound given by eqn. (45), as it will be used in the eigenvalue determination.
a averaged
(45)
This makes the eigenvalues of the approximated Jacobian matrix equal to eqn. (46), which are a function of eqns. (42) and (45).
entropy eigenvalue

acoustic eigenvalue 1

acoustic eigenvalue 2
(46)
The final flux will also require calculation of the transformed variable set obtained by transforming the conservative variable vector using eqn. (38).  These variables are given here.
wave strength 1

wave strength 2

wave strength 3
(47)
The eigenvectors corresponding to the three eigenvalues for the approximate matrix can just be taken from the matrix in eqn. (38) above.  They are given in eqn. (48).
eigenvector 1          eigenvector 2          eigenvector 3
(48)
Finally, all these relationships may be put together to calculate the flux at a cell boundary.  This corresponds to finding the flux for the Riemann problem at x=0.  This can be found either by taking the right hand flux and subtracting the flux changes from the right running waves, or taking the left hand flux and adding all the left running waves.  Alternately, both of these relations may be used by taking an average of the two.  The result is still the cell boundary flux, but the averaging process adds some measure of stability to the method.  This average relationship for the flux is given in eqn. (49).
flux Roe form
(49)
    The final matter that must be discussed concerns the function in eqn. (49) which is representative of the eigenvalues.  In the classic Roe scheme, the absolute value of the eigenvalues are used instead of the function, phi.  This action has a consequence, however.  The Roe method automatically admits discontinuities into its calculation (since the Riemann waves allow for instantaneous jumps or drops in value and a shock is one of the acoustic eigenvalues anyway).  However, the nature of the Roe technique outlined above has no way of distinguishing between normal compression shocks and expansion shocks.  In real, physical flows, compression shocks are a discontinuous phenomenon, but expansions are smooth increases, changing the flow in an isentropic way.  Using the Roe method in its classical form will give answers in which non-physical shocks occur for expansion processes as well.  This is purely a numerical construction, and should be eliminated fro mthe method.  This is done by employing the Harten (1983) correction.
    The correction of the Roe scheme by Harten (1983) has been subsequently implemented in a variety of ways.  The basic form for the correction, however, is given by eqn. (50).
Harten correction
(50)
This equation defines the eigenvalue term in the flux calculation above.  This correction has the effect of smoothing out expansion shocks, which occur near sonic points (M = +1 or M = -1) because one of the eigenvalues goes to zero at these points.  In eqn. (50), delta is a small positive number.  As discussed by Laney (1998), the choosing of this parameter is somewhat arbitrary, and he recommends it be selected by trial and error.  In Gryphon, this free parameter was picked to be given by eqn. (51), which is just the velocity jump from right to left.
Harten free parameter
(51)
Using this form seems to work well in Gryphon.  The idea behind Harten's correction is that the function simply returns the eigenvalue in most cases.  Only in a region where the eigenvalue in question has become close to zero is it smoothed out.  Notice also that the choice from eqn. (51) modifies the eigenvalue only for an expansion shock.  In a compression shock with the flow moving right to left, the free parameter will be negative.  Since the absolute value of anything is always greater than a negative number, the compression shock remains unmodified.
    This completes the derivation of the Roe form of the flux at a given boundary face, which is needed to calculates the known n-level residual in the time integration schemes.  For an implicit scheme, however, the Jacobian of this residual is again necessary.  Calculating this Jacobian is straightforward if the derivatives of the flux with respect to the solution point (cell center) conservative variables are all known.  Calculating these quantities, particularly for the Roe scheme, represents the greatest challenge.  As given in eqn. (52), the derivative of any flux scalar with respect to any conservative cell variable can be found by using the chain rule for an exact differential.  Note that this is used in a scalar sense.  Because both the flux and the conservative variable set are vectors, eqn. (52) is true for any of the three flux scalars with respect to any of the three conservative variable scalars.
face flux derivative
(52)
Since both the left and the right derivatives are needed, they can be found by taking the respective derivative of eqn. (49).  In each case, either the left flux or the right flux drops out of the other derivative because it has no dependency on the conservative variable of the opposite sense.
left flux derivative
(53)

right flux derivative
(54)
With these two relationships in eqns. (53) and (54), the first term in both cases represents the derivative of the full flux term.  The Jacobian of this vector has already been given in the previous section.  That Jacobian representation contains all the derivative of the flux scalars.  The second term is actually a summation of three terms and calculation of a derivative is required.  Conceptually, this is a simple process.  Using the definitions given in eqns. (46), (47) and (48), one needs only to use the chain rule on the final term and calculate the appropriate derivative of those quantities.  In most of the cases, one needs to calculate the derivative with respect to a Roe averaged variable, which, in turn, is a function of the left and right state variables, which are functions of the left and right conservative variables.  Implementing this requires the use of the chain rule and the product rule for differentiation many times over.  Conceptually, this is a straightforward process, but mathematically, the calculation is more than daunting.
    This compexity also clearly demonstrates why the implicit Roe solver in Gryphon is slower than the other options, since these complex calculations must be carried out for every cell, and then sent to a matrix solution algortihm.  This creates an overall algorithm with large amounts of overhead.

<previous: Van Leer Flux Splitting
up to Main Flux Page
next: AUSM Flux Splitting >