Eikonal.jl
implements solvers for Eikonal equations of the form:
\begin{align}
&\qquad \left\Vert\nabla \tau\right\Vert = \sigma(x), &&\forall x\in\Omega\subset\mathbb{R}^N,\\
&\qquad\tau(x_0) = 0, &&\forall x_0\in\Gamma\subset\Omega,\end{align}
where one seeks the unknown field \tau, which can be interpreted as the time of first arrival of a (wave) front that originates in \Gamma and moves with slowness \sigma (i.e its speed is given by 1/\sigma).
Eikonal equations arise as a high-frequency approximation of waves propagation equations (much like geometric optics); they can also be interpreted as continuous shortest path problems.
Eikonal.jl
implements two kinds of methods for solving the Eikonal equation:
(Please note that the FSM implementation has benefited from more work than the FMM. Only the FSM can handle problems in arbitrary dimension; FMM is (for now) limited to 2D problems. The API is also (for now) slightly inconsistent between FSM and FMM).
Previously existing packages allowing to handle such problems include FastMarching.jl
which, as the name implies, implements only the FMM. Although there are many cases in which the FSM should be faster, even the FMM implementation of Eikonal.jl
should be faster than that of FastMarching.jl
(but the latter may be more accurate in complex cases).
Although a formal documentation is almost inexistant at this point, a few usage examples of Eikonal.jl
are presented in its README.md. Maybe the two most interesting are (click on the images below to get all details):
- computing the time of first arrival of a water wavefront passing through a small opening:
- finding a shortest path to move an object in a complex environment (shamelessly and heavily inspired by James Sethian’s page):
Finally, the package has just been registered, so you can simply install and use it using the standard Pkg
tooling:
import Pkg; Pkg.add("Eikonal")
using Eikonal
If you do play with it, please do not hesitate to report back!
Zhao, Hongkai (2005-01-01). “A fast sweeping method for Eikonal equations”. Mathematics of Computation. 74 (250): 603–627. DOI: 10.1090/S0025-5718-04-01678-3 ↩︎
J.A. Sethian. A Fast Marching Level Set Method for Monotonically Advancing Fronts, Proc. Natl. Acad. Sci., 93, 4, pp.1591–1595, 1996. PDF ↩︎