Skip to content

Networks for PDEs

LicensePythonPyTorch

求解偏微分方程的神经网络聚合接口:高效、灵活、可扩展

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}
}

🌐 链接

  • [文档]
  • [论文]
  • [教程]
  • [讨论区]