I would like to write my own solver for compressible Euler equations, and most importantly I want it to work robustly in all situations. I would like it to be FE based (DG is ok). What are the possible methods?

I am aware of doing 0th order DG (finite volumes) and that should work very robustly. I have implemented a basic FVM solver and it works great, but the convergence is quite slow. However, this is definitely one option.

I have implemented an FE solver (works for any mesh and any polynomial order on any element) for linearized Euler equations, but I am getting spurious oscillations (and eventually it blows out, so I can't use it so solve my problem) and I have read in the literature that one needs to stabilize it. If I implement some stabilization, would that work robustly for all problems (=boundary conditions and geometries)? What will be the convergence rate?

Other than that, is there some other robust methodology for Euler equations (i.e. higher order DG with some stabilization)?

I am aware that many people tried lots of different things in their research codes, but I am interested in a robust method that works for all geometries and boundary conditions (edit: in 2D and 3D).


1 Answer 1


The principal numerical difficulty in solving a nonlinear first-order system of hyperbolic PDEs like the Euler equations (for compressible, inviscid flow) is that discontinuities (shock waves) appear in the solution after finite time, even if the initial data are smooth. In order to deal with this, most modern codes use both

  • slope (or flux) limiters, which provide a way of computing derivatives accurately near discontinuities without introducing spurious oscillations; and
  • Approximate Riemann solvers, which locally (at each grid edge/face) solve an initial value problem with piecewise constant initial data and a single discontinuity.

There exist finite difference (FD), finite volume (FV), and finite element (FE) discretizations that incorporate limiters and Riemann solvers, and all can be made highly accurate, at least away from shocks. So it doesn't make sense to say categorically that FE methods converge faster than FV methods -- they will be comparable if comparable order discretizations are used.

Among FE methods, discontinuous Galerkin methods are the most suitable here, since the solution will in fact be discontinuous. If you want to implement your own, I suggest that you read this review paper and get a copy of Hesthaven & Warburton's text to understand the basics. Then there are lots of papers on DG for compressible flow.

If you're willing to use someone else's code, and since I know you use Python, you might take a look at Andreas Kloeckner's Hedge code, which has a Python interface and can run on GPUs. There are probably other good DG codes available, and many good FV codes (such as Clawpack, which also has a Python interface).

There are also newer high-order methods such as spectral difference. For a recent perspective, see Cheng & Shu 2009, High Order Schemes for CFD: A Review or Ekaterinaris 2005, High-order accurate, low numerical diffusion methods for aerodynamics.

  • $\begingroup$ Thanks David, especially for all the pointers to papers. FV is just zeroth order DG, isn't it? Or is higher order FV somehow different to the same order DG? I want to implement something myself, so that I fully understand what is going on. The hedge code looks cool. $\endgroup$ Dec 8, 2011 at 6:11
  • 1
    $\begingroup$ FE and FV are often equivalent for first order schemes. The higher order schemes are generally different, and neither is a subset of the other. $\endgroup$ Dec 8, 2011 at 6:44
  • 1
    $\begingroup$ You can unify to some extent with "reconstruction DG". FV normally uses piecewise constant test functions and reconstructs using neighbors to raise the order. DG normally uses a matching test space (Galerkin) and raises the internal order. Note that DG still needs limiters for strong shocks, and then it is no longer a Galerkin method. Reconstruction DG lets you do both: raise internal order and reconstruct using neighbors, thus conventional FV and DG are limiting cases. $\endgroup$
    – Jed Brown
    Dec 8, 2011 at 6:52
  • $\begingroup$ If I'm modelling a physical system that I believe for empirical reasons doesn't display shock waves, then what's a good method? $\endgroup$
    – sigfpe
    Sep 13, 2013 at 22:56
  • $\begingroup$ @sigfpe it would be best for you to post a new question, with more information. $\endgroup$ Sep 15, 2013 at 5:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.