A GPU-accelerated finite element analysis framework with JAX.
Project description
FEAX
FEAX (Finite Element Analysis with JAX) is a compact, high-performance finite element analysis engine built on JAX. It provides an API for solving partial differential equations on XLA.
What is FEAX?
FEAX combines automatic differentiation with finite element methods. It's designed for:
- Differentiable Physics: Compute gradients through entire FE simulations for optimization, inverse problems, and machine learning
- High Performance: JIT compilation and vectorization through JAX for maximum computational efficiency
JAX Transformations in FEAX
FEAX leverages JAX's powerful transformation system to enable:
- Automatic Differentiation: Compute exact gradients through finite element solvers
- JIT Compilation: Compile to optimized machine code for maximum performance
- Vectorization: Efficiently process multiple scenarios in parallel with
vmap - Parallelization: Scale across multiple devices with
pmap
Installation
pip install feax[cuda12]
pip install --no-build-isolation git+https://github.com/Naruki-Ichihara/spineax.git
Note:
spineaxrequires CUDA toolkit and cuDSS to be available at build time. The--no-build-isolationflag is required so that spineax can find JAX and NVIDIA libraries installed byfeax[cuda12].
feax.flat
Flat (Feax Lattice) is a utility for asymptotic homogenization of lattice unit cell.
feax.gene
Gene (Generative design in FEAX) is a comprehensive toolkit for topology optimization and generative design. It provides efficient, JAX-native implementations of common topology optimization components.
Key Features
- Response Functions: Compliance and volume fraction calculations optimized for topology optimization
- Filtering Methods:
- PDE-based Helmholtz filter for smooth, physically-motivated designs
- Distance-based density filter for efficient spatial smoothing
- Sensitivity filter for mesh-independent gradient smoothing
- Constrained Optimization: MDMM (Modified Differential Multiplier Method) for handling equality and inequality constraints with automatic differentiation
- Pure JAX Implementation: Fully differentiable and compatible with optax optimizers
License
FEAX is licensed under the GNU General Public License v3.0. See LICENSE for the full license text.
Acknowledgments
FEAX builds upon the excellent work of:
- JAX for automatic differentiation and compilation
- JAX-FEM for inspiration and reference implementations
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file feax-0.1.0.tar.gz.
File metadata
- Download URL: feax-0.1.0.tar.gz
- Upload date:
- Size: 89.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08b508028dddf03bc8b2a515fea4987422b8f1ded35ee44ce2950f83d393b018
|
|
| MD5 |
2dcaef6aa0af413c2fb9ef708e9c20ba
|
|
| BLAKE2b-256 |
feac1c62111fe3bfab02676f942db20cf8d324520b7bc15ef27b124c68cec161
|
File details
Details for the file feax-0.1.0-py3-none-any.whl.
File metadata
- Download URL: feax-0.1.0-py3-none-any.whl
- Upload date:
- Size: 96.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa985cea373e9df0389eeaf24e2edd534479bec75b50edd22755dda0416d85fb
|
|
| MD5 |
b5cba19a2bd3108594af492908a94f8c
|
|
| BLAKE2b-256 |
6db9bdefec3f8cf2643f220c20878d7e4febb80ff3b69d0a5a355769ec72aaba
|