diff --git a/README.md b/README.md index c5c7406b7..e7c9e2d31 100644 --- a/README.md +++ b/README.md @@ -4,93 +4,201 @@ Copyright Contributors to the Pyro project. SPDX-License-Identifier: Apache-2.0 --> -
-
-
-
- |
-
- - A Unified Framework for Scientific Machine Learning -- |
-
+
+
+
+
+
+
+
+
+
+ + A Unified Framework for Scientific Machine Learning +
+ + + ++ PINA is an open-source Python library designed to simplify and accelerate the development of + Scientific Machine Learning (SciML) solutions, including PINNs, Neural Operators, + data-driven modeling, and more. +
+ ++
+
+
+ Built on top of
+
+
+
+
+ Want the full history? + See the Releases page and the + Changelog (if present). +
+ +
+
+pip install "pina-mathlab"
+
+git clone https://github.com/mathLab/PINA
cd PINA
git checkout master
pip install .
-```
-
-**Install with extra packages:**
-
-To install extra dependencies required to run tests or tutorials directories, please use the following command:
-```sh
-pip install "pina-mathlab[extras]"
-```
-Available extras include:
-* `dev` for development purpuses, use this if you want to [Contribute](https://github.com/mathLab/PINA/blob/master/CONTRIBUTING.md#contributing-to-pina).
-* `test` for running test locally.
-* `doc` for building documentation locally.
-* `tutorial` for running [Tutorials](https://github.com/mathLab/PINA/tree/master/tutorials#pina-tutorials).
-
-## Quick Tour for New Users
-Solving a differential problem in **PINA** follows the *four steps pipeline*:
-
-1. Define the problem to be solved with its constraints using the [Problem API](https://mathlab.github.io/PINA/_rst/_code.html#problems).
-
-2. Design your model using PyTorch, or for graph-based problems, leverage PyTorch Geometric to build Graph Neural Networks. You can also import models directly from the [Model API](https://mathlab.github.io/PINA/_rst/_code.html#models).
-
-3. Select or build a Solver for the Problem, e.g., supervised solvers, or physics-informed (e.g., PINN) solvers. [PINA Solvers](https://mathlab.github.io/PINA/_rst/_code.html#solvers) are modular and can be used as-is or customized.
-
-4. Train the model using the [Trainer API](https://mathlab.github.io/PINA/_rst/trainer.html) class, built on PyTorch Lightning, which supports efficient, scalable training with advanced features.
-
-Do you want to learn more about it? Look at our [Tutorials](https://github.com/mathLab/PINA/tree/master/tutorials#pina-tutorials).
-
-### Solve Data Driven Problems
-Data driven modelling aims to learn a function that given some input data gives an output (e.g. regression, classification, ...). In PINA you can easily do this by:
-```python
-import torch
+
+
++To install additional packages required for development, tests, docs, or tutorials: +
+ +pip install "pina-mathlab[extras]"
+
+Available extras:
+ +dev for development purposestest for running tests locallydoc for building documentation locallytutorial for running tutorials+Solving a differential problem in PINA follows a clean four-step pipeline: +
+ ++Want to dive deeper? Check out the official +Tutorials. +
+ +import torch
from pina import Trainer
from pina.model import FeedForward
from pina.solver import SupervisedSolver
@@ -101,28 +209,36 @@ target_tensor = input_tensor.pow(3)
# Step 1. Define problem
problem = SupervisedProblem(input_tensor, target_tensor)
-# Step 2. Design model (you can use your favourite torch.nn.Module in here)
-model = FeedForward(input_dimensions=1, output_dimensions=1, layers=[64, 64])
-# Step 3. Define Solver
-solver = SupervisedSolver(problem, model, use_lt=False)
+
+# Step 2. Define model
+model = FeedForward(input_dimensions=1, output_dimensions=1, layers=[64, 64])
+
+# Step 3. Define solver
+solver = SupervisedSolver(problem, model, use_lt=False)
+
# Step 4. Train
-trainer = Trainer(solver, max_epochs=1000, accelerator='gpu')
+trainer = Trainer(solver, max_epochs=1000, accelerator="gpu")
trainer.train()
-```
-### Solve Physics Informed Problems
-Physics-informed modeling aims to learn functions that not only fit data, but also satisfy known physical laws, such as differential equations or boundary conditions. For example, the following differential problem:
+
-$$
-\begin{cases}
-\frac{d}{dx}u(x) &= u(x) \quad x \in(0,1)\\
-u(x=0) &= 1
-\end{cases}
-$$
++Consider the following differential problem: +
+ +
+
+
+In PINA, this can be implemented as: +
+ +from pina import Trainer, Condition
from pina.problem import SpatialProblem
from pina.operator import grad
from pina.solver import PINN
@@ -135,7 +251,6 @@ def ode_equation(input_, output_):
u = output_.extract(["u"])
return u_x - u
-# build the problem
class SimpleODE(SpatialProblem):
output_variables = ["u"]
spatial_domain = CartesianDomain({"x": [0, 1]})
@@ -151,15 +266,28 @@ class SimpleODE(SpatialProblem):
# Step 1. Define problem
problem = SimpleODE()
problem.discretise_domain(n=100, mode="grid", domains=["D", "x0"])
-# Step 2. Design model (you can use your favourite torch.nn.Module in here)
-model = FeedForward(input_dimensions=1, output_dimensions=1, layers=[64, 64])
-# Step 3. Define Solver
-solver = PINN(problem, model)
+
+# Step 2. Define model
+model = FeedForward(input_dimensions=1, output_dimensions=1, layers=[64, 64])
+
+# Step 3. Define solver
+solver = PINN(problem, model)
+
# Step 4. Train
-trainer = Trainer(solver, max_epochs=1000, accelerator='gpu')
+trainer = Trainer(solver, max_epochs=1000, accelerator="gpu")
trainer.train()
-```
+
+
++Here is a high-level overview of PINA’s main modules. For full details, refer to the +documentation. +
+ +## PINA Modules Structure Here's a quick look at PINA's main module. For a better experience and full details, check out the [documentation](https://mathlab.github.io/PINA/). @@ -223,36 +351,58 @@ flowchart LR e2@{ animate: true } e3@{ animate: true } ``` -## Contributing and Community +
-We would love to develop PINA together with our community! Best way to get started is to select any issue from the [`good-first-issue` label](https://github.com/mathLab/PINA/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22). If you would like to contribute, please review our [Contributing Guide](CONTRIBUTING.md) for all relevant details. ++We would love to develop PINA together with the community. +A great place to start is the list of + + good-first-issue - -Made with [contrib.rocks](https://contrib.rocks). - -## Citation -If **PINA** has been significant in your research, and you would like to acknowledge the project in your academic publication, we suggest citing the following paper: - -``` -Coscia, D., Ivagnes, A., Demo, N., & Rozza, G. (2023). Physics-Informed Neural networks for Advanced modeling. Journal of Open Source Software, 8(87), 5352. -``` - -Or in BibTex format -``` -@article{coscia2023physics, - title={Physics-Informed Neural networks for Advanced modeling}, - author={Coscia, Dario and Ivagnes, Anna and Demo, Nicola and Rozza, Gianluigi}, - journal={Journal of Open Source Software}, - volume={8}, - number={87}, - pages={5352}, - year={2023} - } -``` +issues. +
+ ++If you would like to contribute, please read the +Contributing Guide. +
+ +
+
+
+
+
+ Made with contrib.rocks. +
+ ++If PINA has been significant in your research and you would like to acknowledge it, please cite: +
+ +Coscia, D., Ivagnes, A., Demo, N., & Rozza, G. (2023).
+Physics-Informed Neural networks for Advanced modeling.
+Journal of Open Source Software, 8(87), 5352.
+
+Or in BibTeX format:
+ +@article{coscia2023physics,
+ title={Physics-Informed Neural networks for Advanced modeling},
+ author={Coscia, Dario and Ivagnes, Anna and Demo, Nicola and Rozza, Gianluigi},
+ journal={Journal of Open Source Software},
+ volume={8},
+ number={87},
+ pages={5352},
+ year={2023}
+}
diff --git a/pina2 (1).gif b/pina2 (1).gif
new file mode 100644
index 000000000..52d8b1d49
Binary files /dev/null and b/pina2 (1).gif differ