# odil **Repository Path**: bolang/odil ## Basic Information - **Project Name**: odil - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: colab - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-30 - **Last Updated**: 2024-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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]](https://doi.org/10.1093/pnasnexus/pgae005) * multigrid decomposition for faster optimization [[2]](https://doi.org/10.1140/epje/s10189-023-00313-7) ## Interactive demos These demos use a C++ implementation of ODIL with [autodiff](https://github.com/pkarnakov/autodiff) and [Emscripten](https://emscripten.org) to run interactively in the web browser. | [](https://pkarnakov.github.io/autodiff/demos/poisson.html) | [](https://pkarnakov.github.io/autodiff/demos/wave.html) | [](https://pkarnakov.github.io/autodiff/demos/heat.html) | [](https://pkarnakov.github.io/autodiff/demos/advection.html) | [](https://pkarnakov.github.io/autodiff/demos/advection2.html) | |:---:|:---:|:---:|:---:|:---:| | [Poisson](https://pkarnakov.github.io/autodiff/demos/poisson.html) | [Wave](https://pkarnakov.github.io/autodiff/demos/wave.html) | [Heat](https://pkarnakov.github.io/autodiff/demos/heat.html) | [Advection](https://pkarnakov.github.io/autodiff/demos/advection.html) | [Advection2](https://pkarnakov.github.io/autodiff/demos/advection2.html) | ## 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](https://cse-lab.seas.harvard.edu) * [Petr Karnakov](https://pkarnakov.com) * [Sergey Litvinov](https://cse-lab.seas.harvard.edu/people/sergey-litvinov) advised by * [Prof. Petros Koumoutsakos](https://cse-lab.seas.harvard.edu/people/petros-koumoutsakos) ## 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](https://doi.org/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](https://doi.org/10.1140/epje/s10189-023-00313-7) [arXiv:2303.04679](https://arxiv.org/abs/2303.04679) [slides](https://cselab.github.io/odil/slides/usc_workshop.pdf)