title | tags | authors | affiliations | date | bibliography | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A Fast Iterative Method Python package |
|
|
|
July 2021 |
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.