https://github.com/uqatkit/eikonax

A Fully Differentiable Solver for the Anisotropic Eikonal Equation

https://github.com/uqatkit/eikonax

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.0%) to scientific vocabulary

Keywords

derivatives eikonal-solver gpu hpc jax
Last synced: 10 months ago · JSON representation

Repository

A Fully Differentiable Solver for the Anisotropic Eikonal Equation

Basic Info
Statistics
  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • Open Issues: 5
  • Releases: 17
Topics
derivatives eikonal-solver gpu hpc jax
Created over 1 year ago · Last pushed 10 months ago
Metadata Files
Readme License

README.md

CI Docs Coverage 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) = u0,\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 bash 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 bash 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

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 MIT License.

Owner

  • Name: Uncertainty Quantification Research Group at KIT
  • Login: UQatKIT
  • Kind: organization
  • Location: Germany

GitHub Events

Total
  • Create event: 32
  • Issues event: 13
  • Release event: 23
  • Watch event: 4
  • Delete event: 17
  • Issue comment event: 1
  • Member event: 1
  • Push event: 120
  • Pull request event: 3
Last Year
  • Create event: 32
  • Issues event: 13
  • Release event: 23
  • Watch event: 4
  • Delete event: 17
  • Issue comment event: 1
  • Member event: 1
  • Push event: 120
  • Pull request event: 3

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 10
  • Total pull requests: 2
  • Average time to close issues: 5 days
  • Average time to close pull requests: less than a minute
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 10
  • Pull requests: 2
  • Average time to close issues: 5 days
  • Average time to close pull requests: less than a minute
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • maximilian-kruse (9)
Pull Request Authors
  • maximilian-kruse (2)
Top Labels
Issue Labels
enhancement (6) bug (1) documentation (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 383 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 13
  • Total maintainers: 1
pypi.org: eikonax

Differentiable Solver for the Anisotropic Eikonal Equation on Triangulated Meshes

  • Versions: 13
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 383 Last month
Rankings
Dependent packages count: 9.8%
Average: 32.3%
Dependent repos count: 54.9%
Maintainers (1)
Last synced: 10 months ago

Dependencies

pyproject.toml pypi
  • beartype >=0.19.0,<0.20
  • equinox >=0.11.5,<0.11.6
  • jax >=0.4.31,<0.5
  • jaxtyping >=0.2.36,<0.3
  • numpy >=2.1.1,<3
  • scipy >=1.14.1,<2
.github/workflows/ci.yaml actions
  • actions/checkout v4 composite
  • astral-sh/ruff-action v3 composite
  • astral-sh/setup-uv v5 composite
.github/workflows/docs.yaml actions
  • actions/checkout v4 composite
  • actions/deploy-pages v4 composite
  • actions/upload-pages-artifact v3 composite
  • astral-sh/setup-uv v5 composite
.github/workflows/main.yaml actions
  • actions/checkout v4 composite
  • astral-sh/ruff-action v3 composite
  • astral-sh/setup-uv v5 composite
  • codecov/codecov-action v5 composite
.github/workflows/release.yaml actions
  • actions/checkout v4 composite
  • astral-sh/setup-uv v5 composite
  • softprops/action-gh-release v2 composite
uv.lock pypi
  • 155 dependencies