CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Main CFD Forum (
-   -   ROE Riemann Solver and MUSCL (

ares April 28, 2010 08:32

ROE Riemann Solver and MUSCL

I will have a question. Currently I am working on a new code which limits me greatly.

The first step is to solve euler equations with 2 different initial conditions: 1)entropy wave, 2) acoustic wave. The code for now has periodic boundaries.

I have to use a first order time discretization. I also have to use a flux calculator. The flux calculation is (F(i+0.5)-F(i-0.5))/dx
Inside, to find the flux on the face I use Roe scheme. If I use directly Roe scheme the numerical dissipation becomes too important: 55% on a lap of an entropy wave. If I use a minmod MUSCL scheme, dispersion becomes too important. I tried to use Van Leer's k scheme MUSCL, it gave me the exact same solution as "no MUSCL". I would like to ask the reason of oscillations: is it due to second order MUSCL scheme ( even with a CFL= 0.3) or can it be due to periodic boundary conditions?

If you can give me an advice for higher resolution interpolation scheme to calculate left and right states that would be great.


Killercam May 5, 2010 09:52


It seem to me that you are not fully understanding the correct methodology that you should be applying to this hyperbolic system. You either use the Roe method to obtain the intercell fluxes, or you don't. The first order flux calculation you have written above should not even come into it. The actual physical fluxes in each cell however, can do. Look at implementing a first order HLL scheme (see F. Toro), this is very simple and robust. This can taken to second order when you get the first order scheme operational - then you can implement a flux limiter (Min-Mod limiter, SuperBEE or whatever).

Good luck.

ares May 5, 2010 14:12

I already have a first order working riemann solver, i have hlle, hllc and roe solvers. When the first order works, i add muscl. And then it exploses.

agd May 5, 2010 14:18

If you are going to higher order extrapolation without some form of limiting of the extrapolated values, then you can expect your solution to blow up. The extrapolation introduces the possibility of non-physical maxima and minima in the field variables, and these lead to computational instabilities that will corrupt the solution. Sounds like you need to implement some form of limiting in conjunction with your MUSCL scheme, as noted above.

ares May 5, 2010 14:20

I use a minmod limiter but the left and right sides of the center of a gaussian perturbation. the solution explose. one side goes up, one side goes down.

ogloth May 5, 2010 14:21

Are you on structured or unstructured grids?

ares May 5, 2010 14:24

for now, i am on a structered grid on 1D.

and today, i added lax-wendroff scheme with a variable delta x, delta x changing just in the middle of the gaussian. the error was the same. so i will check tomorrow for an error, somewhere else in the code.( It is not my code, i just write the solver part. )

ogloth May 5, 2010 14:29

1D it should work -- 'guess your suspicion of an error elsewhere is not wrong...

good luck!

Killercam May 6, 2010 09:18

If you are indeed implementing your flux limiter correctly I don't see there should be any issue. However, here is a couple of things you might try to increase stability: 1. decrease the Courant number to say 0.01, limiting the code to very small time-steps and reducing discontinuities at cell interfaces. 2. increse mesh resolution. If it an extreamly course mesh this may be an issue.

Forget Lax-Wendroff. You want to be using a Godunov-type scheme. Whats all this about a gaussian puturbation? 1D Euler equations, or 1D ideal gas dynamics, you should be testing the 1D solver using standard tests, like the shock tube problem etc. How long have you been struggling with this? If you wish I will post some references to some papers you can use...

ares May 6, 2010 19:02

Actually, I am not doing this for my pleasure, this is for my graduate thesis and I have to do what is asked from me. I fixed the problem with Lax-Wendroff. There were some important bugs in the code. They appeared only when I pass to a non-uniform grid. (The code is not mine, I just write solver part).

What I say as a Gaussian: it is a perturbation on temperature, so it is an entropy wave. I solve Euler equations for now, but I will add viscosity, Fourier and source terms soon. I use periodic BC. When I use first order Riemann solver, there is not any problem, but when i start to use minmod slope limiter, it exploses.

I try to check the code, but it is really complicated. So my guess is that if there is not any problem with the code, then due to the oscillations created by the scheme coupled with muscl an acoustic wave appears. If you have any other any idea, I would be very happy to learn. I want to try the ADER approach of Toro, but it will take time.

I also tried WENO scheme, the result was the same. It is the first time i use a limiter, so I am not familiar with it. I don't know what to expect as result.



Killercam May 7, 2010 04:47

Short of looking at the code myself I think all you can do now is debug debug debug - which is not fun.
All the best.

All times are GMT -4. The time now is 16:16.