| title | A Fast Iterative Method Python package | |||||
|---|---|---|---|---|---|---|
| tags |
|
|||||
| authors |
|
|||||
| affiliations |
|
|||||
| date | July 2021 | |||||
| bibliography | paper.bib |
The anisotropic eikonal equation is a non-linear partial differential equation, given by
\begin{equation*}
\left{
\begin{array}{rll}
\left<\nabla \phi, D \nabla \phi \right> &= 1 \quad &\text{on} ; \Omega \
\phi(\mathbf{x}_0) &= g(\mathbf{x}_0) \quad &\text{on} ; \Gamma \subset \Omega
\end{array}
\right. .
\end{equation*}
In practice, this problem is often associated with computing the earliest arrival times
fim-python implements the Fast Iterative Method (FIM), proposed in [@fu_fast_2013], purely in Python to solve the anisotropic eikonal equation by finding its unique viscosity solution.
In this scenario, we compute numba and numpy, as well as the GPU with the help of cupy (depends on CUDA).
The library is meant to be easily and rapidly used for repeated evaluations on a mesh.
The FIM locally computes an update rule to find the path the wavefront will take through a single element.
Since the algorithm is restricted to linear elements, the path through an element will also be a straight line.
In the case of tetrahedral domains, the FIM thus tries to find the path of the linear update from a face spanned by three vertices
Two different methods are implemented in fim-python:
In the Jacobi method, the above local update rule is computed for all elements in each iteration until the change between two subsequent iterations is smaller than a chosen
There are other tools available to solve variants of the eikonal equation, but they differ in functionality to fim-python.
scikit-fmm implements the Fast Marching Method (FMM) [@sethian_fast_1996], which was designed to solve the isotropic eikonal equation (
GPUTUM: Unstructured Eikonal implements the FIM in CUDA for triangulated surfaces and tetrahedral meshes, but has no Python bindings and is designed as a command line tool for single evaluations.
The eikonal equation has many practical applications, including cardiac electrophysiology, image processing and geoscience, to approximate wave propagation through a medium.
In the example of cardiac electrophysiology [@franzone2014mathematical], the electrical activation times
fim-python tries to wrap the FIM for CPU and GPU into an easy-to-use Python package for multiple evaluations with a straight-forward installation over PyPI.
This should provide engineers and researchers alike with an accessible tool that allows evaluations of the eikonal equation for general scenarios.
