Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

CI Docs Version Python Version 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

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

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[examples]

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 --all-groups

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

Metadata

Release files for eikonax 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eikonax 0.4.2
File Size Uploaded
eikonax-0.4.2.tar.gz 882.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eikonax 0.4.2
File Interpreter ABI Platform
eikonax-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 917.8 kB

Release files / eikonax-0.4.2.tar.gz

Download URL eikonax-0.4.2.tar.gz
Size 882.1 kB
Tags Source
SHA-256 checksum
How to use checksums
895580bd6202d9ee79695b2f04b8b6ccc672a69b9c99cbd7e9e16ed85cb614cf
BLAKE2b-256 checksum
How to use checksums
c2adf9d43ad87b8fffe1695bcb55d064aa97e5797db94226c713ad46c493d71f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / eikonax-0.4.2-py3-none-any.whl

Download URL eikonax-0.4.2-py3-none-any.whl
Size 35.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2942de97daecc0a8dd81fb9df5363ac4f969c9ac7f64ad6ba734099a5a68f0f1
BLAKE2b-256 checksum
How to use checksums
04f7e784530fda21131f4ca7a13edb23a915a783b5381e8a08a4d6bfa2add12e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page