Lagrangian

Lagrangian variational advection for scalar fields.

template <
  class ... Params>
class Lagrangian;

This class implements semi-Lagrangian time-stepping for the advection equation:

\[ \frac{\partial u}{\partial t} + \mathbf{v} \cdot \nabla u = 0 \]

where $ u $ is the scalar field and $ \mathbf{v} $ is the velocity field.

Semi-Lagrangian Method

At each time step, the method:

  1. Traces characteristics backwards: $ \mathbf{X}(t) = \mathbf{x} - \int_0^{\Delta t} \mathbf{v} \, ds $
  2. Interpolates the solution at departure points
  3. Solves a projection problem to obtain the new solution

The variational formulation at each step is:

\[ \int_\Omega u^{n+1} v \, dx = \int_\Omega u^n(\mathbf{X}) v \, dx \]

Advantages

  • Unconditionally stable for large CFL numbers
  • Naturally handles complex geometries
  • Mass-conservative in variational form
SpecializationDescription
Variational::TrialFunction<…>, Variational::TestFunction<FES>, Initial, VectorField, Step
Full specialization
template <
  class FES,
  class Data,
  class Initial,
  class VectorField,
  class Step>
class Lagrangian<
  Variational::TrialFunction< Variational::GridFunction< FES, Data >, FES >,
  Variational::TestFunction< FES >,
  Initial,
  VectorField,
  Step>;
Lagrangian advection specialization for trial/test function formulation.