Skip to main content

Differentiable Solver for the Anisotropic Eikonal Equation on Triangulated Meshes

Project description

CI Docs Docs License JAX Beartype Ruff

Eikonax: A Fully Differentiable Solver for the Anisotropic Eikonal Equation

Eikonax is a pure Python implementation of a solver for the anisotropic eikonal equation on triangulated meshes. In particular, it focuses on domains $\Omega$ either in 2D Euclidean space, or 2D manifolds in 3D Euclidean space. For a given, space-dependent parameter tensor field $\mathbf{M}$, and a set $\Gamma$ of initially active points, Eikonax computes the arrival times $u$ according to

$$ \begin{gather*} \sqrt{\big(\nabla u(\mathbf{x}),\mathbf{M}(\mathbf{x})\nabla u(\mathbf{x})\big)} = 1,\quad \mathbf{x}\in\Omega, \ \nabla u(\mathbf{x}) \cdot \mathbf{n}(\mathbf{x}) \geq 0,\quad \mathbf{x}\in\partial\Omega, \ u(\mathbf{x}_0) = u_0,\quad \mathbf{x}_0 \in \Gamma. \end{gather*} $$

The iterative solver is based on Godunov-type upwinding and employs global Jacobi updates, which can be efficiently ported to SIMD architectures. In addition, Eikonax implements an efficient algorithm for the evaluation of parametric derivatives, meaning the derivative of the solution vector with respect to the parameter tensor field, $\frac{du}{d\mathbf{M}}$. More precisely, we assume that the tensor field is parameterized through some vector $\mathbf{m}$, s.th. we compute $\frac{du}{d\mathbf{m}} = \frac{du}{d\mathbf{M}}\frac{d\mathbf{M}}{d\mathbf{m}}$. This make Eikonax particularly suitable for the inverse problem setting, where derivative information is typically indispensable for efficient solution procedures. Through exploitation of causality in the forward solution, Eikonax can compute these derivatives through discrete adjoints on timescales much smaller than those for the forward solve.

Key Features

:heavy_check_mark:   Supports anisotropic conductivity tensors
:heavy_check_mark:   Works on irregular meshes
:heavy_check_mark:   GPU offloading of performance-relevant computations
:heavy_check_mark:   Super fast derivatives through causality-informed adjoints


[!TIP] Eikonax is mainly based on the JAX software library. This allows for GPU offloading of relevant computations. In addition, Eikonax makes extensive use of JAX`s just-in-time compilation and automatic differentiation capabilities.


Getting Started

Eikonax is deployed as a python package, simply install via

pip install eikonax

For development, we recommend using the great uv project management tool, for which Eikonax provides a universal lock file. To set up a reproducible environment, run

uv sync

in the project root directory.

Documentation

The documentation provides further information regarding usage, theoretical background, technical setup and API. Alternatively, you can check out the notebooks under examples

Acknowledgement and License

Eikonax is being developed in the research group Uncertainty Quantification at KIT. It is partially based on the excellent FIM-Python tool. Eikonax is distributed as free software under the GNU General Public License v3.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eikonax-0.1.4.tar.gz (222.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eikonax-0.1.4-py3-none-any.whl (56.0 kB view details)

Uploaded Python 3

File details

Details for the file eikonax-0.1.4.tar.gz.

File metadata

  • Download URL: eikonax-0.1.4.tar.gz
  • Upload date:
  • Size: 222.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.5.20

File hashes

Hashes for eikonax-0.1.4.tar.gz
Algorithm Hash digest
SHA256 88df646c0e3756aa9bdfc3ef1c7531f6c24fcb0aa137eb91d348567fc129d3ca
MD5 95c2ac423f0b3bec23fa47ed76af575f
BLAKE2b-256 38d70a961cb622df87bc4b42de79ee69a87448146372ad229703c02bfbcfc643

See more details on using hashes here.

File details

Details for the file eikonax-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: eikonax-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 56.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.5.20

File hashes

Hashes for eikonax-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d33b5ed0d104874222afc9af981e2e07af3ed4eac02f85dfcbe4955372731a53
MD5 d359d529dfbeb6b672e6b9bdc53ca99a
BLAKE2b-256 8d3883cdfbb7213860f46b9b3d2318e469f3e3a3e60e5868e6df976a4f9f2bc7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page