Rodin/Variational/Flow.h file

Flow map operators for shape functions and grid functions.

This file defines the Rodin::Variational::Flow class, which implements the flow map (push-forward) of functions along a vector field. Flow maps are used in advection problems, level set methods, and semi-Lagrangian time integration schemes.

Mathematical foundation

Given a velocity field $ \mathbf{v}(x,t) $ , the flow map $ \Phi_t $ satisfies:

\[ \frac{d\Phi}{dt}(x,t) = \mathbf{v}(\Phi(x,t), t), \qquad \Phi(x,0) = x. \]

The flow operator computes $ u(\Phi(x,t)) $ , which represents the value of function $ u $ advected along the flow.

Applications

  • Advection-diffusion: $ \partial_t u + \mathbf{v}\cdot\nabla u = f $
  • Semi-Lagrangian methods: characteristic tracking for transport equations
  • Level set methods: interface evolution and tracking
  • ALE formulations: arbitrary Lagrangian-Eulerian methods

Namespaces

namespace Rodin
The Rodin library for finite element methods and shape optimization.
namespace Rodin::FormLanguage
Module for writing high level abstract expressions.
namespace Rodin::Variational
Module which provides the necessary tools for constructing and solving variational problems.

Classes

struct Rodin::Variational::BoundaryHit
Information passed to a boundary policy when a trajectory reaches the domain boundary.
class Rodin::Variational::DefaultBoundaryPolicy
Default boundary policy for flow maps.
template<class Derived, class VectorField, class Step, class BoundaryPolicy>
class Rodin::Variational::Flow<FunctionBase<Derived>, VectorField, Step, BoundaryPolicy>
Flow map operator for functions.
class Rodin::Variational::Flow<FunctionBase<Derived>, VectorField, Step, BoundaryPolicy>::Trace
Result of a characteristic trace.