Appearance
Networks for PDEs
求解偏微分方程的神经网络聚合接口:高效、灵活、可扩展
DANGER
该篇章是瞎写的,请忽略
概述
Networks for PDEs 是一个基于现代深度学习框架 PyTorch 开发的工具箱,专注于使用神经网络求解偏微分方程。它提供了从经典 PINNs(Physics-Informed Neural Networks)到自适应方法、算子学习等先进算法的统一实现,旨在帮助研究者和学生快速构建与训练 PDE 求解模型。
核心特性
多求解范式支持
- 物理信息神经网络(PINNs):硬约束/软约束训练,自动微分计算 PDE 残差。
- 物理信息径向基(PIRBN):适用于含有高频特征的PDE问题。
- 随机神经网络(RNN):高效学习 PDE。
- 自适应采样与加权:基于残差分布优化训练点分布。
丰富的PDE类型
- 椭圆型(如 Poisson)、抛物型(如 Heat)、双曲型(如 Wave)。
- 支持耦合系统、时变问题、非线性项、边界条件(Dirichlet/Neumann/Robin)。
- 参数化PDE(参数反演、不确定性量化)。
工程友好
- 模块化设计:解构网络架构、损失函数、优化器、边界处理。
- 自动微分与符号微分混合支持。
- 分布式训练与混合精度加速。
- 可视化工具:残差分布、解场动画、收敛曲线。
科学计算集成
- 与 FEniCS、Firedrake 等传统求解器接口。
- 基于 NumPy/SciPy 的预处理工具。
- 实验管理(MLflow/Weights & Biases 支持)。
快速开始
安装
bash
pip install pdeapi示例:5行代码求解 Poisson 方程
python
import pdelib as pde
# 定义PDE
poisson = pde.PDE("laplace(u) = -sin(pi*x)*sin(pi*y)", domain=[[0,1],[0,1]])
# 设置边界条件
bc = pde.DirichletBC("u = 0", on_boundary=True)
# 创建神经网络求解器
solver = pde.PINNSolver(pde=poisson, boundary_conditions=[bc], hidden_layers=[50, 50])
# 训练
solver.train(epochs=5000, lr=1e-3)
# 可视化
solver.plot_solution()架构设计
pdeapi/
├── core/
│ ├── pde.py # PDE定义与符号解析
│ ├── network.py # 网络构建(MLP/ResNet/FourierNet)
│ ├── loss.py # 损失函数(PDE残差、边界、初值)
│ └── solver.py # 求解器基类
├── models/
│ ├── pinn.py # PINN实现
│ ├── fno.py # 傅里叶神经算子
│ └── deep_ritz.py # 深度能量方法
├── utils/
│ ├── sampling.py # 域采样策略
│ ├── visualize.py # 可视化工具
│ └── metrics.py # 误差评估
└── examples/ # 示例目录
├── fluid/ # Navier-Stokes方程
├── elasticity/ # 固体力学
└── inverse/ # 反问题性能对比
| 方法 | 相对误差(L2) | 训练时间(秒) | 内存占用(MB) |
|---|---|---|---|
| 经典FEM | 参考值 | 参考值 | 参考值 |
| 本库(PINN) | ≤ 1% | ~300 | ~500 |
| 本库(FNO) | ≤ 0.5% | ~600 | ~1200 |
以上为 Poisson 方程在 100×100 网格上的示例性能,硬件:RTX 3080
应用案例
- 计算流体力学(CFD):不可压缩 Navier-Stokes 方程求解。
- 结构力学:线性弹性、塑性变形模拟。
- 热传导与扩散:多物理场耦合问题。
- 地质勘探:地下水流方程参数反演。
- 金融数学:Black-Scholes 期权定价模型。
如何贡献
欢迎提交 Issue、Pull Request 或参与文档改进。请参阅 xxx。
📄 许可证
本项目采用 [Apache 2.0] xxx 开源许可证。
📚 引用
若在研究中使用本库,请引用:
bibtex
@software{your_library2024,
title = {库名称: A Neural Network Library for PDE Solving},
author = {Your Name and Contributors},
year = {2024},
url = {https://github.com/your-repo}
}🌐 链接
- [文档]
- [论文]
- [教程]
- [讨论区]