# Advection equation using the finite element method

I want to solve this simple advection equation using the finite element method.

$$\frac{dc}{dt}+v\cdot\nabla c = f$$

What's the best FEM discretization for this? I have tried using the standard/primitive least-squares finite element method for this but it seems I still get oscillations.

• I would say the standard finite element method is a discontinuous Galerkin method; this is discussed in detail for your equation in Chapter 3 of DiPietro and Ern, Mathematical Aspects of Discontinuous Galerkin Methods, Springer 2012. Sep 23, 2015 at 9:08

One way or the other, you need to stabilize every discretization for this equation. Traditionally, this was done using methods such as artificial viscosity or its slightly smarter sibling SUPG. But there are many other alternatives to make things work if you'd like to stick with the FEM framework -- e.g., discontinuous Galerkin methods.

My summary of this issue can be found in lecture 31 here: http://www.math.tamu.edu/~bangerth/videos.html

• Thanks for the link to the video, what you say makes sense. It seems to me that LSFEM without any stabilization exhibits the same "oscillations" as the SUPG formulation. That is, my solution violates the Discrete Maximum Principles and is not monotonic everywhere. Unlike SUPG, LSFEM is naturally an unconstrained minimization/optimization problem so could I enforce bounded/inequality constraints to "fix" my solution? Would this be mathematically sound? Sep 23, 2015 at 23:11
• I don't know. It's certainly possible to try something like this. It's a different question whether it works. Sep 24, 2015 at 12:50
• Okay, I guess I will just give it a try then. Thanks Sep 24, 2015 at 18:39
• I can't say anything about the mathematics, but you can prevent negative solution oscillations with a penalty in a Galerkin method. I never published anything on it, but I have tried it successfully. Sep 24, 2015 at 23:18
• @BillBarth can you elaborate on this a little more? I know it's now going off topic so I can create another thread if necessary Sep 27, 2015 at 9:22

I definitely advocate for discontinuous galerkin methods, as others have noted.

You might want to consider Space-Time Discontinuous Galerkin methods (I developed some codes for this at UIUC). Using this approach, you could potentially mesh your elements in a way that would allow for parallelizing your code and avoiding having to solve large matrices.