The Roe flux (Roe's Approximate Riemann Solver; P. L. Roe,
JCP 1981) is perhaps the most popular method for computing the numerical flux
for the Euler equations. But there is a question as to whether it is implemented correctly.
In particular, averaging for the density can be a source of
confusion. Here is one possible explanation for the average density.
be the conservative
variables on the left and right states. Then, the Roe flux
over the two states can be computed as follows.
First compute the Roe-averaged velocity, total enthalpy, and the
speed of sound:
Then, evaluate the eigenvalues and the right-eigenvectors of the Jacobian matrix,
, by the above
Roe-averaged quantities. Compute also the left and right fluxes:
Note that no averaging is necessary for the density up to this point.
We are now almost ready to compute the Roe flux:
Yes, 'almost', that is because we have not defined the wave strengths, .
There are two ways to compute them.
1. Without Density:
The wave strengths can be computed by
These expressions have been derived by solving
so that the projection of the jump in onto the space of the
right-eigenvectors is exact.
This exactness is very important.
2. With Density: The wave strengths can be computed also as follows.
where it is very important to define the average density as
In fact, these expressions can be derived from the exact projection condition (2) [see
Godlewski and Raviart ].
Therefore, these wave strengths are exactly the same as those in 1. In
particular, the average density defined as above, which may be called the
Roe-averaged density, is the only choice that guarantees the exact projection.
No other averaging is allowed. If other average is used
for the density, the exact
projection is violated, and consequently the Roe flux cannot be fully upwind
(with respect to the linearized waves).
Why is that?
The Roe flux in the form of Equation (1) comes from averaging two expressions for the
interface flux: one from the left state across the left-moving waves, and the
other from the right state across
the right-moving waves,
It is important to note that these two expressions are NOT identically equal.
Consider the difference of the two,
If the projection is exact, then
and it vanishes if the Jacobian is evaluated by the Roe-averages.
That is, the two expressions are equal if the projection is exact and the
Roe-averages are used to linearize the Euler equations. The exact
projection is critical to keeping the equality.
To see what goes wrong if the two expressions are not equal, suppose
all waves are right-moving so that
Then, the Roe flux that is the average of the two will not be fully upwind,
unless . Consequently, it won't be able to recognize a single
discontinuity unless implemented right.
"Is it a serious problem?"
I hope not.
What about an entropy fix?
It may destroy everything (the exact projection as well as ).
But it should because
the need arises from a flaw in the linearized Riemann solver approach.
by Hiroaki Nishikawa, March 3, 2011.