Skip to content
/ odil Public

ODIL (Optimizing a Discrete Loss) is a Python framework for solving inverse and data assimilation problems for partial differential equations.

License

Notifications You must be signed in to change notification settings

cselab/odil

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 Advection2

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

  1. 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

  2. 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

About

ODIL (Optimizing a Discrete Loss) is a Python framework for solving inverse and data assimilation problems for partial differential equations.

Resources

License

Stars

Watchers

Forks

Packages

No packages published