Skip to content

Commit

Permalink
【Hackathon 5th No.56】A Physics-Informed Neural Network to solve 2D st…
Browse files Browse the repository at this point in the history
…eady-state heat equation (PaddlePaddle#692)

* Add Hackathon 5th Science 56 RFC

* 1. Fix $T$ display

* Add  punctuation after each equation
  • Loading branch information
Gxinhu authored and yangguohao committed Oct 22, 2023
1 parent 89ff813 commit 0e21200
Showing 1 changed file with 168 additions and 0 deletions.
168 changes: 168 additions & 0 deletions hackathon/hackathon_5th/20231009_science_56.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
# Science 56 设计文档

| API 名称 | 新增 API 名称 |
| ---------------------------------------------------------------- | ---------------------- |
| 提交作者<input type="checkbox" class="rowselector hidden"> | Gxinhu |
| 提交时间<input type="checkbox" class="rowselector hidden"> | 2023-10-09 |
| 版本号 | V1.0 |
| 依赖 CINN 版本<input type="checkbox" class="rowselector hidden"> | PaddlePaddle 2.5.0 |
| 文件名 | 20231009_science_56.md |

# 1. 概述

## 1.1 相关背景

热传导是自然界中的常见现象,广泛应用于工程、科学和技术领域。了解和模拟传热过程对于设计和优化热传导设备、材料和系统至关重要。2D 定常传热方程描述了稳态热传导过程,其数学表达形式为:

$$
\frac{\partial^2 T}{\partial x^2} + \frac{\partial^2 T}{\partial y^2}=0,
$$

其中, $T$ 表示温度分布,传统的求解方法涉及使用数值方法如有限元法或有限差分法,这些方法通常需要离散化领域并求解大规模矩阵系统。近年来,基于物理信息的神经网络(Physics-informed neural networks, PINN)逐渐成为求解偏微分方程的新方法。PINN 结合了神经网络的灵活性和对物理约束的建模能力,能够直接在连续领域中解决偏微分方程问题。

## 1.2 功能目标

基于 PaddleScience API 复现 [Heat-PINN](https://github.com/314arhaam/heat-pinn/tree/main)

## 1.3 意义

本文档的目标是介绍基于物理信息的神经网络(PINN)以及如何将其应用于求解 2D 定常传热方程。我们将探讨神经网络的架构设计、损失函数的构建、数据准备和模型训练等关键步骤,以及如何在求解传热方程过程中保持与复现项目的一致性。

# 2. PaddleScience 现状

由于 Heat-PINN 里面的传热方程就是 2D-Laplace 方程,恰好 PaddleScience API 也已经实现了 [2D-Laplace 方程](https://github.com/PaddlePaddle/PaddleScience/blob/develop/examples/laplace/laplace2d.py),因此可以直接调用。

复现算法使用的模型 MLP 在 PaddleScience 也有现成的例子可以直接调用。

# 3. 目标调研

## 3.1 要解决的问题和使用的方法

在参考项目中,使用基于物理信息的神经网络(PINN)来解决二维热传导方程,并将最终结果与基于有限差分法(FDM)的解进行比较。

控制方程为:

$$
\frac{\partial^2 T}{\partial x^2} + \frac{\partial^2 T}{\partial y^2}=0,
$$

在以下区域内:

$$
D = \\{(x, y)|-1 \leq x \leq +1,-1 \leq y \leq +1 \\},
$$

具有以下边界条件:

$$
\begin{cases}
T(-1, y) = 75.0 ^\circ{C}, \\
T(+1, y) = 0.0 ^\circ{C}, \\
T(x, -1) = 50.0 ^\circ{C},\\
T(x, +1) = 0.0 ^\circ{C}.
\end{cases}
$$

## 3.2 复现目标

1. 对齐 train loss
2. 对齐 PINN 预测的结果与 FDM 求出来的结果误差

# 4. 设计思路与实现方案

以下是一个可能的实现步骤:

## 4.1 定义 PDE 约束

首先,需要明确定义需要求解的 2D 定常传热方程,幸运的是 PaddleScience 存在相关的 2D Laplace 方程,因此直接调用即可:

```python
# set equation
equation = {"heat": ppsci.equation.Laplace(dim=2)}

# set geometry
geom = {"rect": ppsci.geometry.Rectangle((-1.0, -1.0), (1.0, 1.0))}

# set train dataloader config
train_dataloader_cfg = {
"dataset": "IterableNamedArrayDataset",
"iters_per_epoch": ITERS_PER_EPOCH,
}

NPOINT_PDE = 99**2
# set constraint
pde_constraint = ppsci.constraint.InteriorConstraint(
equation["heat"].equations,
{"laplace": 0},
geom["rect"],
{**train_dataloader_cfg, "batch_size": NPOINT_PDE},
ppsci.loss.MSELoss("mean"),
weight_dict={
"laplace": 1,
},
evenly=True,
name="EQ",
)
```

## 4.2 构建边界条件约束

根据参考项目所示,边界条件为 Dirichlet 边界条件,即边界条件为固定的值。可以参考 PaddleScience 其他相关项目 [ldc2d_steady_Re10.py](https://paddlescience-docs.readthedocs.io/zh/latest/zh/examples/ldc2d_unsteady/?h=ldc) 来构建边界条件约束。

```python
bc_top = ppsci.constraint.BoundaryConstraint(
{"u": lambda out: out["u"]},
{"u": 0},
geom["rect"],
{**train_dataloader_cfg, "batch_size": NPOINT_TOP},
ppsci.loss.MSELoss("mean"),
weight_dict={
"u": 0.25,
},
criteria=lambda x, y: np.isclose(y, 1),
name="BC_top",
)

# Other boundary constraints (bc_bottom, bc_left, bc_right) follow a similar structure.
```

## 4.3 构建神经网络模型

构建一个神经网络模型,该模型可以表示温度分布 $T$ 。模型的输入是 2D 空间中的坐标 $(x,y)$,输出是对应点的温度 $T$。

神经网络的架构可以根据具体问题进行设计,通常包括多层感知机。参考项目使用的为9层、隐藏层维度为20的多层感知机网络模型。将上面的描述转化为 PaddleScience 代码为:

```python
model = ppsci.arch.MLP(("x", "y"), ("T",), 9, 20, "tanh")
```

## 4.4 训练模型

使用优化算法(如梯度下降或 Adam)来最小化损失函数,以训练神经网络模型。

## 4.5 评估模型

在训练完成后,与 FDM 求解的结果进行对比。

# 5. 测试和验收的考量

测试与验收参考 [PaddleScience 模型复现流程及验收标准](https://paddlescience-docs.readthedocs.io/zh/latest/zh/reproduction/)

1. 提供完整的基于 PaddleScience 的复现代码。
2. 提供复现完成后需提供必要的训练产物,包括训练结束后保存的打印信息日志文件、`.pdparams` 格式的模型权重参数文件、撰写的案例文档。

# 6. 可行性分析和排期规划

## 6.1 可行性分析

参考项目的难度较小,能够有效准时完成项目。

## 6.2 排期规划

- 202309:调研
- 202310:完成基于 PaddleScience 的复现
- 202310:整理项目产出,撰写案例文档

# 7. 影响面

对其他部分毫无影响。

0 comments on commit 0e21200

Please sign in to comment.