JaxSSO
A differentiable finite element analysis (FEA) solver for structural optimization, enabled by JAX.
Developed by Gaoyuan Wu @ Princeton.
Features
- Automatic differentiation (AD): an easy and accurate way for gradient evaluation. The implementation of AD avoids deriving derivatives manually or trauncation errors from numerical differentiation.
- Acclerated linear algebra (XLA) and just-in-time compilation: these features in JAX boost the gradient evaluation
- Hardware acceleration: run on GPUs and TPUs for faster experience
- Support beam-column elements and MITC-4 quadrilateral shell elements
- Shape optimization, size optimization and topology optimization
- Seamless integration with machine learning (ML) libraries
Usage
Installation
Install it with pip: pip install JaxSSO
Dependencies
JaxSSO is written in Python and requires:
- numpy >= 1.22.0.
- JAX: "JAX is Autograd and XLA, brought together for high-performance machine learning research." Please refer to this link for the installation of JAX.
- scipy.
Optional:
- Nlopt: Nlopt is a library for nonlinear optimization. It has Python interface, which is implemented herein. Refer to this link for the installation of Nlopt. Alternatively, you can use
pip install nlopt, please refer to nlopt-python. - Flax: neural network library based on JAX. JAXSSO can be integrated with
flax, please seeExamples/Neural_Network_Topo_Shape.ipynb - Optax: optimization library based on JAX, can be used to train neural networks.
Quickstart
The project provides you with interactive examples with Google Colab for quick start. No installation locally is required.
- Shape optimization of grid shell: geometry from Favilli et al. 2024
Cite us
Please star, share our project with others and/or cite us if you find our work interesting and helpful.
We have a new manuscript under review.
Our previous work can be seen in this paper. Cite our previous work using:
@article{wu2023framework,
title={A framework for structural shape optimization based on automatic differentiation, the adjoint method and accelerated linear algebra},
author={Wu, Gaoyuan},
journal={Structural and Multidisciplinary Optimization},
volume={66},
url = {https://doi.org/10.1007/s00158-023-03601-0},
doi = {10.1007/s00158-023-03601-0},
pages={151},
year={2023},
publisher={Springer}
}
Metadata
Release files for jaxsso 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jaxsso-1.0.1.tar.gz | 27.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jaxsso-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.3 kB
Release files / jaxsso-1.0.1.tar.gz
| Download URL | jaxsso-1.0.1.tar.gz |
|---|---|
| Size | 27.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
856835e9b886790c891854b77390e662b0fd95cc21525f64320230c3c923a67d
|
|
BLAKE2b-256 checksum How to use checksums |
9977f36a3e898efd0538573e9cd554d2f8e519fe1897f801283367edabcfe1d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|
Release files / jaxsso-1.0.1-py3-none-any.whl
| Download URL | jaxsso-1.0.1-py3-none-any.whl |
|---|---|
| Size | 29.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
09a779e8830659f5bb83efee602e7c83d52d938b4d2eee1e64cb0098cad1453b
|
|
BLAKE2b-256 checksum How to use checksums |
dd920edfbedbb6064ce2f239256c0cf487d8f677ff5955ef2b006128a11908bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|