Eikonal namespace
Module which provides solvers for the Eikonal equation.
The Eikonal equation is a non-linear partial differential equation of the form:
where is a speed function. When , the solution represents the distance function.
Fast Marching Method (FMM)
The primary solver is FMM, which implements the Fast Marching Method on unstructured simplicial meshes. The algorithm propagates a wavefront from seed vertices, updating arrival times in causal order using a priority queue. Vertex states during propagation:
| State | Description |
|---|---|
| Far | Not yet visited |
| Considered | In the priority queue, tentative value computed |
| Accepted | Finalized — arrival time is correct |
The FMM specialization for P1 finite elements on local meshes supports:
- Arbitrary spatial dimension (2D triangular, 3D tetrahedral, surface meshes)
- User-defined speed functions
- Seed interface specification (initial zero-distance vertices)
Typical Usage
P1 Vh(mesh); GridFunction u(Vh); // Speed function F(x) = 1 (distance computation) auto speed = [](const Geometry::Point&) -> Real { return 1.0; }; Eikonal::FMM fmm(u, speed); fmm.seed(interfaceVertices).solve();
Classes
-
template<class Solution, class SpeedFunction>class FMM
- Fast marching method for solving the Eikonal equation.
-
template<class Data, class SpeedFunction>class FMM<Variational::GridFunction<Variational::P1<Real, Geometry::Mesh<Context::Local>>, Data>, SpeedFunction>
- FMM specialization for P1 finite elements on local meshes.
Functions
Function documentation
#include <Rodin/Eikonal/FMM.h>
template<class Solution, class SpeedFunction>
Rodin:: Eikonal:: FMM(Solution& u,
SpeedFunction&& speed) -> FMM< Solution, SpeedFunction >
Deduction guide for FMM constructor.
Allows template argument deduction when constructing FMM objects.