Computational Science Stack Exchange is a question and answer site for scientists using computers to solve scientific problems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to know the which is more advantageous when it comes to solving nonlinear hyperbolic equations, Finite Element or Finite difference methods? Which method will be better in capturing shocks? Is it possible to provide a detailed answer/references?

Also, I want to solve problems with non-reflecting boundary conditions in infinite waveguides, can I use Sommerfeld radiation condition in such cases?

share|improve this question
Considering a waveguide with elastic boundaries, I feel applying finite element method may be able to give more accurate results, as compared to finite difference which is only linear approximation of Taylor's series. I don't have much experience with numerical computations, kindly someone clarify. Thanks. – vijay Dec 21 '12 at 7:12
up vote 11 down vote accepted

If it's shock-capturing that you're interested in, I would suggest you use the finite volume method instead of the finite element method. When applied naively, FEM is actually notoriously bad at resolving shocks -- usually there are spurious oscillations or unwanted diffusion. Provided your original PDE is a conservation law, the FVM method will preserve this structure and it can do a pretty decent job resolving shocks. Alternatively, you could look at using the discontinuous Galerkin method, but I find FVM to be much easier to understand.

A good starting place would be looking up Godunov's scheme. An excellent reference is Leveque's Finite Volume Methods for Hyperbolic Problems. His software package CLAWPACK is also a great tool for problems of this type.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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