Physics-Informed Neural Network (PINN) library for solving ODEs/PDEs with visualization and training tools
Project description
PhysAI - Physics-Informed Neural Networks (PINNs)
Overview
PhysAI is a Python package for solving ordinary differential equations (ODEs) and partial differential equations (PDEs) using Physics-Informed Neural Networks (PINNs). It integrates physics directly into neural network training, allowing the solution of classic physics problems without relying on traditional numerical solvers.
PhysAI supports a wide range of physics problems including:
- ODEs: Logistic growth, Newton’s law of cooling, damped/simple harmonic oscillators, Markov processes.
- PDEs: Heat equation, wave equation, Burgers' equation, KdV equation, convection-diffusion.
- Quantum Mechanics: Schrödinger equation.
- Electromagnetism & Quantum Phenomena: Planck’s law, photoelectric effect.
- Fluid Dynamics: 2D incompressible Navier-Stokes.
- Static Problems: Laplace and Poisson equations (2D/3D).
Key features:
- Flexible PDE/ODE residual computation for various physics laws.
- Mixed-precision training for faster computation on GPUs.
- Gradient clipping and learning rate schedulers supported.
- Visualization and animations of solutions using matplotlib.
- Weighted loss functions combining residual and boundary conditions.
Installation
Clone the repository and install dependencies:
git clone https://github.com/yourusername/physai.git
cd physai
pip install -r requirements.txt
Python >= 3.10 recommended.
Repository Structure
physai/
├── __init__.py
├── models.py # PINN neural network class
├── trainer.py # trainer cls for PINNs
├── visualization.py
├── pde_residual.py # residuals for ODEs/PDEs
├── losses.py
├── utils.py
examples/
├── example_schrodinger.py
├── example_newton_cooling.py
├── example_markov.py
├── example_photoelectric.py
├── example_planck.py
README.md
requirements.txt
.gitignore
Quick Start Example
import torch
from physai.models import PINN
from physai.pde_residual import pde_residual
from physai.losses import pinn_loss
from physai.visualization import plot_1d_solution
# Define a 1D logistic growth ODE
def logistic(x, y):
r, K = 1.0, 1.0
return torch.autograd.grad(y, x, grad_outputs=torch.ones_like(y), create_graph=True)[0] - r*y*(1 - y/K)
# Create a PINN model
model = PINN(layers=[1, 20, 20, 1], activation='tanh')
# Training points
x_train = torch.linspace(0, 5, 100).reshape(-1,1)
# Train the model
from physai.trainer import Trainer
trainer = Trainer(model, collocation_points=x_train, pde_type='logistic')
history = trainer.train(epochs=500, lr=1e-3)
# Plot solution
plot_1d_solution(model, x_train, title='Logistic Growth')
Training a PDE Example: 1D Heat Equation
import torch
from physai.models import PINN
from physai.trainer import Trainer
from physai.visualization import animate_2d
# PINN model
model = PINN(layers=[2, 50, 50, 1], activation='tanh')
# Collocation points
x = torch.linspace(0, 1, 50).reshape(-1,1)
t = torch.linspace(0, 2, 50).reshape(-1,1)
inputs = torch.cartesian_prod(x.squeeze(), t.squeeze())
inputs = inputs.float()
# Trainer
trainer = Trainer(model, collocation_points=inputs, pde_type='heat')
history = trainer.train(epochs=1000, lr=1e-3)
# Animate solution
animate_2d(model, x, t, title='Heat Equation Evolution')
Physics Problems Supported
| Type | Equations / Laws |
|---|---|
| ODE | Logistic Growth, Simple/Damped Harmonic Oscillator, Newton's Law of Cooling, Markov Chains |
| PDE | Heat Equation, Wave Equation, Burgers', KdV, Convection-Diffusion, Laplace, Poisson |
| Quantum | Schrödinger Equation, Planck's Law |
| Quantum/Electromag | Photoelectric Effect |
| Fluid Dynamics | 2D Incompressible Navier-Stokes |
| 3D PDEs | Laplace 3D, Poisson 3D |
Visualization
- 1D plots:
plot_1d_solution(model, x) - 2D surface plots:
plot_2d_surface(model, X, Y) - Animation over time:
animate_2d(model, x, t) - Training loss plots:
plot_loss(trainer.history)
Advanced Features
- Mixed precision training for faster GPU computation
- Gradient clipping
- Flexible learning rate scheduling
- Weighted PINN loss for custom PDE/BC importance
- Supports custom potentials (
V(x,t)) for Schrödinger equation
Citation / Usage in Papers
If you use PhysAI in your research, please cite it as:
@misc{PhysAI2025,
author = {Mankrit Singh},
title = {PhysAI: Physics-Informed Neural Networks in PyTorch},
year = {2025},
howpublished = {\url{https://github.com/MS-AGI/PhysAI}
}
License
MIT License. See LICENSE file.
Solve physics problems with PINNs and visualize them interactively!
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file physai-1.6.0.tar.gz.
File metadata
- Download URL: physai-1.6.0.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77bda286e3637213c309c7bbe8f284df2bc5a90dc043de30534fead165cc43ee
|
|
| MD5 |
4f42b772983352005c6f5f6a262ccda2
|
|
| BLAKE2b-256 |
c9901058c94972c5955137a182b366f38e2f0f064b889de972a770a341906303
|
File details
Details for the file physai-1.6.0-py3-none-any.whl.
File metadata
- Download URL: physai-1.6.0-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7b5f50c77705a9aef588f01cac79e53bc57c6619f8e47a6e78ad1781f08df2e
|
|
| MD5 |
6ec3738f3ffc79822fb9b6278a275b36
|
|
| BLAKE2b-256 |
0c445153c8bf89f8d5c6ef5064995220c1f7d3adaa60f4b14d51e90c772431d0
|