Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【Hackathon 5th No.60】 PhyGeoNet: Physics-Informed Geometry-Adaptive Convolutional Neural Networks for Solving Parameterized Steady-State PDEs on Irregular Domain #706

Merged
merged 31 commits into from
Jan 1, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/zh/api/arch.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
- AFNONet
- PrecipNet
- UNetEx
- PhyGeoNet
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved
- NowcastNet
show_root_heading: true
heading_level: 3
61 changes: 55 additions & 6 deletions docs/zh/examples/phygeonet.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,52 @@

``` sh

python main.py
# heat_equation
# linux
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation.npz -P ./data/
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation.npz -P ./data/
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved

# windows
# curl https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation.npz --output ./data/heat_equation.npz

python main.py DATASET_PATH=./data/heat_equation.npz
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved

# heat_equation_bc
# linux
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation_bc.npz -P ./data/
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation_bc_test.npz -P ./data/

# windows
# curl https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation_bc.npz --output ./data/heat_equation.npz
# curl https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation_bc_test.npz --output ./data/heat_equation.npz

python main.py DATASET_PATH=./data/heat_equation_bc.npz EVAL.pretrained_model_path=heat_equation: https://paddle-org.bj.bcebos.com/paddlescience/models/PhyGeoNet/heat_equation_pretrain.pdparams
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved

```
=== "模型评估命令"

``` sh

python main.py mode=eval
# heat_equation
# linux
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation.npz -P ./data/
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation.npz -P ./data/
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved

# windows
# curl https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation.npz --output ./data/heat_equation.npz

python main.py mode=eval DATASET_PATH=./data/heat_equation.npz EVAL.pretrained_model_path=heat_equation: https://paddle-org.bj.bcebos.com/paddlescience/models/PhyGeoNet/heat_equation_pretrain.pdparams
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved

# heat_equation_bc
# linux
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation_bc.npz -P ./data/
wget -nc https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation_bc_test.npz -P ./data/

# windows
# curl https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation_bc.npz --output ./data/heat_equation.npz
# curl https://paddle-org.bj.bcebos.com/paddlescience/datasets/PhyGeoNet/heat_equation_bc_test.npz --output ./data/heat_equation.npz

python main.py mode=eval DATASET_PATH=./data/heat_equation_bc_test.npz EVAL.pretrained_model_path=heat_equation: https://paddle-org.bj.bcebos.com/paddlescience/models/PhyGeoNet/heat_equation_pretrain.pdparams
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved

```

Expand All @@ -20,14 +59,13 @@
| heat_equation | 0.815 |0.095|
| heat_equation_parameterized_bc | 992 |0.027|
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved


## 1. 背景简介
最近几年,深度学习在很多领域取得了非凡的成就,尤其是计算机视觉和自然语言处理方面,而受启发于深度学习的快速发展,基于深度学习强大的函数逼近能力,神经网络在科学计算领域也取得了成功,现阶段的研究主要分为两大类,一类是将物理信息以及物理限制加入损失函数来对神经网络进行训练, 其代表有 PINN 以及 Deep Retz Net,另一类是通过数据驱动的深度神经网络算子,其代表有 FNO 以及 DeepONet。这些方法都在科学实践中获得了广泛应用,比如天气预测,量子化学,生物工程,以及计算流体等领域。
最近几年,深度学习在很多领域取得了非凡的成就,尤其是计算机视觉和自然语言处理方面,而受启发于深度学习的快速发展,基于深度学习强大的函数逼近能力,神经网络在科学计算领域也取得了成功,现阶段的研究主要分为两大类,一类是将物理信息以及物理限制加入损失函数来对神经网络进行训练, 其代表有 PINN 以及 Deep Ritz Net,另一类是通过数据驱动的深度神经网络算子,其代表有 FNO 以及 DeepONet。这些方法都在科学实践中获得了广泛应用,比如天气预测,量子化学,生物工程,以及计算流体等领域。
而在所有不同类型的深度学习网络中,卷积神经网络获得了越来越多的关注,这是因为卷积神经网络中的卷积具有参数共享的性质,可以学习大尺度的时空域。但是卷积神经网络的缺陷是只能处理规则均匀的数据。
## 2. 问题定义
而在实际科学计算问题中,很多偏微分方程的求解域是复杂边界且非均匀的。现有神经网络往往针对具有规则边界以及均匀网格的求解域,所以并没有实际应用效果。

本文针对对物理信息神经网络在复杂边界非均匀网格问题上效果较差的问题,提出了通过坐标变化将不规则边界非均匀网格变成规则边界均匀网格的方法,除此之外,本文利用变成均匀网格后,卷积神经网络的上述优势,提出相对应的的物理信息卷积神经网络。
本文针对物理信息神经网络在复杂边界非均匀网格求解域上效果较差的问题,提出了通过坐标变化将不规则边界非均匀网格变成规则边界均匀网格的方法,除此之外,本文利用变成均匀网格后,卷积神经网络的上述优势,提出相对应的的物理信息卷积神经网络。
## 3. 问题求解
为节约篇幅,问题求解以heat equation为例。
### 3.1 模型构建
Expand Down Expand Up @@ -94,14 +132,25 @@ examples/phygeonet/heat_equation/main.py:296:296


## 4. 完整代码
``` py linenums="1" title="phygeonet.py"
``` py linenums="1" title="heat_equation/main.py"
--8<--
examples/phygeonet/heat_equation/main.py
--8<--
```
## 5. 结果展示
Heat equation结果展示:
![image](https://paddle-org.bj.bcebos.com/paddlescience/docs/PhyGeoNet/heat_equation.jpg)

Heat equation with boundary 结果展示:

T=0
![image](https://paddle-org.bj.bcebos.com/paddlescience/docs/PhyGeoNet/heat_equation_bc_1.png)

T=3
![image](https://paddle-org.bj.bcebos.com/paddlescience/docs/PhyGeoNet/heat_equation_bc_2.png)

T=6
![iamge](https://paddle-org.bj.bcebos.com/paddlescience/docs/PhyGeoNet/heat_equation_bc_3.png)

## 6. 总结
本文通过使用调和映射构造坐标变换函数,使得物理信息网络可以在不规则非均匀网格上面进行训练,同时,因为该映射为使用传统方法进行,所以无需训练即可在网络前后嵌入。通过大量实验表明,该网络可以在各种不规则网格问题上表现比SOAT网络突出。
Expand Down
2 changes: 1 addition & 1 deletion examples/phygeonet/heat_equation_parameterized_BC/main.py
DUCH714 marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ def train(cfg: DictConfig):

optimizer = ppsci.optimizer.Adam(cfg.TRAIN.lr)(model)

data = np.load(cfg.date_dir)
data = np.load(cfg.data_dir)
coords = data["coords"]
jinvs = data["jinvs"]
dxdxis = data["dxdxis"]
Expand Down