# Physics Informed Neural Networks
> PaAC Open Projects 2022
>
## Project Description:
Physics Informed Neural Networks(PINNs) – neural networks that are trained to solve supervised learning tasks while respecting any given law of physics described by general nonlinear partial differential equations.
During this project, we'll try and learn about this new field in Deep Learning and try to implement the same in Tensorflow/PyTorch, whichever is suitable to the mentee, along with inferring some solutions to Partial Differential Equations(PDEs)
## Project Timeline
### Week 1:
* (Skip if you already know these utilities)Get acquinted with Python, GitHub, VS Code or any form of Notebook interface(Google Colab/Jupyter Notebook)
* Get basic intuition behind the core of deep learning, i.e. Neural Networks.
* Deep Learning Refresher(crash course on Neural Networks)
* Resource: [freeCodeCamp's Deep Learining Crash Couse](https://www.youtube.com/watch?v=VyWAvY2CF9c&ab_channel=freeCodeCamp.org)
> Weekly Submission: Create a Python file or Colab/Jupyter Notebook implementing a Dice Rolling Simulator, where the program asks the user whether to continue or not after each dice roll.
### Week 2:
* Learn any one of TensorFlow or PyTorch(to implement PINNs in the following weeks)
* TensorFlow Resource: [Video](https://www.youtube.com/playlist?list=PLqnslRFeH2Uqfv1Vz3DqeQfy0w20ldbaV)
* PyTorch Resource: [Video](https://www.youtube.com/watch?v=c36lUUr864M)
> Weekly Submission: Create a basic Neural Network in PyTorch/TensorFlow.
### Week 3-4:
* What are PINNs(Physics Informed Neural Networks)?
* [Simple Explanation](https://benmoseley.blog/my-research/so-what-is-a-physics-informed-neural-network/)
* [Original Paper](https://www.sciencedirect.com/science/article/pii/S0021999118307125)
* [Data-driven Solutions of Nonlinear Partial Differential Equations](https://arxiv.org/abs/1711.10561)
* [GitHub page](https://maziarraissi.github.io/PINNs/) of original authors
* Learning how PINNs are useful in solving PDEs
* This [Video](https://www.youtube.com/watch?v=kDlrOanVtf8&ab_channel=GautamKapila) may be helpful
* Learn as much as you can about PINNs during these 2 weeks
> Weekly submission(end of 4th week): Prepare a report describing PINNs and basic concepts behind them.
### Week 5:
* Understanding the original PINN codes by the original authors of PINN paper.
* [GitHub](https://github.com/maziarraissi/PINNs)
* Start implementing a PINN in the framework learned(TF or PyTorch)
> Weekly Submission: Draft/Code a basic layout/structure of your PINN in a notebook/python file(s)
### Week 6:
* Select any PDE of your choice, and train your PINN to find solutions to this PDE, dataset can be found at this [LINK](https://github.com/maziarraissi/PINNs)(PS. for training, you can also use pretrained models, if you find any, and use transfer learning)
* Optimize your neural network by tuning HyperParameters such as learning rate, number of layers etc.
> Weekly Submission: Submit the results predicted by your model, with metrics(loss, accuracy etc.)
### Week 7:
* Prepare an extensive report of the work done by you over the duration of this project, and submit the same as final submission.
---
## **Advance Project(out of scope for the current timeline)**
Data-driven Discovery of Nonlinear Partial Differential Equations.
Let us consider parametrized and nonlinear partial differential equations of the general form:
ut+N[u;λ]=0, x∈Ω, t∈[0,T],
where u(t,x) denotes the latent (hidden) solution, N[⋅;λ] is a nonlinear operator parametrized by λ, and Ω is a subset of RD. Now, the problem of data-driven discovery of partial differential equations poses the following question: given a small set of scattered and potentially noisy observations of the hidden state u(t,x) of a system, what are the parameters λ that best describe the observed data?
**Useful Links:**
* https://arxiv.org/abs/1711.10566
* https://github.com/maziarraissi/PINNs