/ppnn

PDE Preserved Neural Network

Primary LanguagePythonMIT LicenseMIT

PPNN

PDE Preserved Neural Network

Published on Communications Physics: Multi-resolution partial differential equations preserved learning framework for spatiotemporal dynamics | arxiv version

Abstract

Traditional data-driven deep learning models often struggle with high training costs, error accumulation, and poor generalizability in complex physical processes. Physics-informed deep learning (PiDL) addresses these challenges by incorporating physical principles into the model. Most PiDL approaches regularize training by embedding governing equations into the loss function, yet this depends heavily on extensive hyperparameter tuning to weigh each loss term. To this end, we propose to leverage physics prior knowledge by “baking” the discretized governing equations into the neural network architecture via the connection between the partial differential equations (PDE) operators and network structures, resulting in a PDE-preserved neural network (PPNN). This method, embedding discretized PDEs through convolutional residual networks in a multi-resolution setting, largely improves the generalizability and long-term prediction accuracy, outperforming conventional black-box models. The effectiveness and merit of the proposed methods have been demonstrated across various spatiotemporal dynamical systems governed by spatiotemporal PDEs, including reaction-diffusion, Burgers’, and Navier-Stokes equations.

structure

  • results
    • Navier-Stokes equation

structure

Code

  • requirements

    pytorch
    numpy
    matplotlib
    tensorboard
    
    deepxde # required by DeepONet only
  • data generation

    use code in src/operators.py

  • training

    python src/train2D.py cases/CASE_NAME.yaml

  • src: PPNN source codes

    • opertors.py: numerical operators, is used to generate dataset. Also works as the PDE-preserving part of PPNN
    • rhs.py: define various right hand side of PDEs
    • train2D.py: the main training script for RD and burgers case. It requires config files. Examples of config files are listed in the folder cases
    • models.py: deep learning neural networks
  • case: contains yaml files that list configurations for different cases.

  • Bv: contains source code for parameterizing different boundary conditions, as disscussed in the first section in the supplementary informantion.

  • baselines: source code for the baseline methods including FNO, PINN and DeepONet

Problems

If you find any bugs in the code or have trouble in running PPNN, you are very welcome to create an issue in this repository.

Citation

If you find our work relevant to your research, please cite:

@article{liu2024multi,
  title={Multi-resolution partial differential equations preserved learning framework for spatiotemporal dynamics},
  author={Liu, Xin-Yang and Zhu, Min and Lu, Lu and Sun, Hao and Wang, Jian-Xun},
  journal={Communications Physics},
  volume={7},
  number={1},
  pages={31},
  year={2024},
  publisher={Nature Publishing Group UK London}
}