ODIL (Optimizing a DIscrete Loss) is a framework for solving inverse problems for differential equations
Project description
ODIL
ODIL (Optimizing a Discrete Loss) is a Python framework for solving inverse and data assimilation problems for partial differential equations. ODIL formulates the problem through optimization of a loss function including the residuals of a finite-difference and finite-volume discretization along with data and regularization terms. ODIL solves the same problems as the popular PINN (Physics-Informed Neural Networks) framework.
Key features:
- automatic differentiation using TensorFlow or JAX
- optimization by gradient-based methods (Adam, L-BFGS) and Newton's method
- orders of magnitude lower computational cost than PINN [1]
- multigrid decomposition for faster optimization [2]
Interactive demos
These demos use a C++ implementation of ODIL with autodiff and Emscripten to run interactively in the web browser.
Poisson | Wave | Heat | Advection |
Installation
pip install odil
or
pip install git+https://github.com/cselab/odil.git
Using GPU
To enable GPU support, provide a non-empty list of devices in CUDA_VISIBLE_DEVICES
.
Values CUDA_VISIBLE_DEVICES=
and CUDA_VISIBLE_DEVICES=-1
disable GPU support.
Developers
ODIL is developed by researchers at Harvard University
advised by
Publications
-
Karnakov P, Litvinov S, Koumoutsakos P. Solving inverse problems in physics by optimizing a discrete loss: Fast and accurate learning without neural networks. PNAS Nexus, 2024. DOI:10.1093/pnasnexus/pgae005 arXiv:2205.04611
-
Karnakov P, Litvinov S, Koumoutsakos P. Flow reconstruction by multiresolution optimization of a discrete loss with automatic differentiation. Eur. Phys. J, 2023. DOI:10.1140/epje/s10189-023-00313-7 arXiv:2303.04679 slides
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
Built Distribution
File details
Details for the file odil-0.1.6.tar.gz
.
File metadata
- Download URL: odil-0.1.6.tar.gz
- Upload date:
- Size: 54.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f1d7cfcf7c0a1a4a522c29423ac83a26234aac92616ee828fd88602158bcefa |
|
MD5 | 373b3e8bbdfecac4ec1c6a645db03b9e |
|
BLAKE2b-256 | 2cddf22bf8af12ef98c898381e0444b85a19706021a91ad03a6e256c525d50c9 |
File details
Details for the file odil-0.1.6-py2.py3-none-any.whl
.
File metadata
- Download URL: odil-0.1.6-py2.py3-none-any.whl
- Upload date:
- Size: 40.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc2fd4c71d3bf13a6f3ec2cde80f5be1e4c16c14bbf2f0a756e27dc72abbd929 |
|
MD5 | c0c6a9acb5941d766d5106678157c1bf |
|
BLAKE2b-256 | 3dd6dba958f6dba5db18050acbe68d6f68ae7710d14bf0482c010d3c8bebdf8c |