Delete README.md
Browse files
README.md
DELETED
|
@@ -1,135 +0,0 @@
|
|
| 1 |
-
# DeepCFD(Deep Computational Fluid Dynamics)
|
| 2 |
-
|
| 3 |
-
## 1. 背景介绍与问题定义
|
| 4 |
-
|
| 5 |
-
计算流体力学(Computational fluid dynamics, CFD)模拟通过求解 Navier-Stokes 方程(N-S 方程),可以获得流体的各种物理量的分布,如密度、压力和速度等。在微电子系统、土木工程和航空航天等领域应用广泛。
|
| 6 |
-
|
| 7 |
-
在某些复杂的应用场景中,如机翼优化和流体与结构相互作用方面,需要使用千万级甚至上亿的网格对问题进行建模(如下图所示,下图展示了 F-18 战斗机的全机内外流一体结构化网格模型),导致 CFD 的计算量非常巨大。因此,目前亟需发展出一种相比于传统 CFD 方法更高效,且可以保持计算精度的方法。
|
| 8 |
-
|
| 9 |
-
Navier-Stokes 方程是用于描述流体运动的方程,它的二维形式如下:
|
| 10 |
-
|
| 11 |
-
质量守恒:
|
| 12 |
-
|
| 13 |
-
$$\nabla \cdot \bf{u}=0$$
|
| 14 |
-
|
| 15 |
-
动量守恒:
|
| 16 |
-
|
| 17 |
-
$$\rho(\frac{\partial}{\partial t} + \bf{u} \cdot div ) \bf{u} = - \nabla p + - \nabla \tau + \bf{f}$$
|
| 18 |
-
|
| 19 |
-
其中 $\bf{u}$ 是速度场(具有 x 和 y 两个维度),$\rho$ 是密度, $p$ 是压强场,$\bf{f}$ 是体积力(例如重力)。
|
| 20 |
-
|
| 21 |
-
假设满足非均匀稳态流体条件,方程可去掉时间相关项,并将 $\bf{u}$ 分解为速度分量 $u_x$ 和 $u_y$ ,动量方程可重写成:
|
| 22 |
-
|
| 23 |
-
$$u_x\frac{\partial u_x}{\partial x} + u_y\frac{\partial u_x}{\partial y} = - \frac{1}{\rho}\frac{\partial p}{\partial x} + \nu \nabla^2 u_x + g_x$$
|
| 24 |
-
|
| 25 |
-
$$u_x\frac{\partial u_y}{\partial x} + u_y\frac{\partial u_y}{\partial y} = - \frac{1}{\rho}\frac{\partial p}{\partial y} + \nu \nabla^2 u_y + g_y$$
|
| 26 |
-
|
| 27 |
-
其中 $g$ 代表重力加速度,$\nu$ 代表流体的动力粘度。
|
| 28 |
-
|
| 29 |
-
## 2. 模型简介
|
| 30 |
-
|
| 31 |
-
该商品基于 PaddlePaddle 框架和 PaddleScience 套件实现了 DeepCFD 网络模型,这是一种基于卷积神经网络 (CNN) 的模型,可有效近似非均匀稳定层流问题的解决方案。该模型能够直接从使用最先进的 CFD 代码生成的地面实况数据中学习速度场和压力场的纳维-斯托克斯方程的完整解。与标准 CFD 方法相比,速度提高了 3 个数量级,并且错误率较低。
|
| 32 |
-
|
| 33 |
-

|
| 34 |
-
|
| 35 |
-
## 3. 环境检查及依赖补全
|
| 36 |
-
|
| 37 |
-
```sh
|
| 38 |
-
# 推荐环境
|
| 39 |
-
python=3.10
|
| 40 |
-
paddlepaddle=3.0-beta 或 develop
|
| 41 |
-
paddlesci 源码安装
|
| 42 |
-
加速器:DCU
|
| 43 |
-
|
| 44 |
-
# paddlepaddle检查
|
| 45 |
-
import paddle
|
| 46 |
-
print(paddle.utils.run_check())
|
| 47 |
-
|
| 48 |
-
# paddlesci检查
|
| 49 |
-
python -c "import ppsci; ppsci.run_check()"
|
| 50 |
-
|
| 51 |
-
# DCU检查
|
| 52 |
-
hy-smi
|
| 53 |
-
```
|
| 54 |
-
|
| 55 |
-
可参考:[安装教程](https://paddlescience-docs.readthedocs.io/zh-cn/latest/zh/install_setup/)
|
| 56 |
-
|
| 57 |
-
## 4. 素材准备
|
| 58 |
-
|
| 59 |
-
### 4.1 数据准备
|
| 60 |
-
|
| 61 |
-
该数据集中的数据使用 OpenFOAM 求得。数据集有两个文件 dataX 和 dataY。dataX 包含 981 个通道流样本几何形状的输入信息,dataY 包含对应的 OpenFOAM 求解结果。
|
| 62 |
-
|
| 63 |
-
运行本问题代码前请按照下方命令下载 [dataX](https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl) 和 [dataY](https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl):
|
| 64 |
-
|
| 65 |
-
``` sh
|
| 66 |
-
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
|
| 67 |
-
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
|
| 68 |
-
```
|
| 69 |
-
|
| 70 |
-
dataX 和 dataY 都具有相同的维度(Ns,Nc,Nx,Ny),其中第一轴是样本数(Ns),第二轴是通道数(Nc),第三和第四轴分别是 x 和 y 中的元素数量(Nx 和 Ny)。在输入数据 dataX 中,第一通道是计算域中障碍物的SDF(Signed distance function),第二通道是流动区域的标签,第三通道是计算域边界的 SDF。在输出数据 dataY 中,第一个通道是水平速度分量(Ux),第二个通道是垂直速度分量(Uy),第三个通道是流体压强(p)。
|
| 71 |
-
|
| 72 |
-
数据集原始下载地址为:https://zenodo.org/record/3666056/files/DeepCFD.zip?download=1
|
| 73 |
-
|
| 74 |
-
### 4.2 预训练模型准备
|
| 75 |
-
|
| 76 |
-
预训练模型地址为:https://paddle-org.bj.bcebos.com/paddlescience/models/deepcfd/deepcfd_pretrained.pdparams
|
| 77 |
-
|
| 78 |
-
## 5. 模型训练、评估、导出、推理命令
|
| 79 |
-
|
| 80 |
-
| 预训练模型 | 指标 |
|
| 81 |
-
|:--| :--|
|
| 82 |
-
| [deepcfd_pretrained.pdparams](https://paddle-org.bj.bcebos.com/paddlescience/models/deepcfd/deepcfd_pretrained.pdparams) | MSE.Total_MSE(mse_validator): 1.92947<br>MSE.Ux_MSE(mse_validator): 0.70684<br>MSE.Uy_MSE(mse_validator): 0.21337<br>MSE.p_MSE(mse_validator): 1.00926 |
|
| 83 |
-
|
| 84 |
-
### 5.1 模型训练命令
|
| 85 |
-
|
| 86 |
-
``` sh
|
| 87 |
-
# linux
|
| 88 |
-
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
|
| 89 |
-
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
|
| 90 |
-
# windows
|
| 91 |
-
# curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
|
| 92 |
-
# curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
|
| 93 |
-
python deepcfd.py
|
| 94 |
-
```
|
| 95 |
-
|
| 96 |
-
### 5.2 模型评估命令
|
| 97 |
-
|
| 98 |
-
``` sh
|
| 99 |
-
# linux
|
| 100 |
-
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
|
| 101 |
-
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
|
| 102 |
-
# windows
|
| 103 |
-
# curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
|
| 104 |
-
# curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
|
| 105 |
-
python deepcfd.py mode=eval EVAL.pretrained_model_path=https://paddle-org.bj.bcebos.com/paddlescience/models/deepcfd/deepcfd_pretrained.pdparams
|
| 106 |
-
```
|
| 107 |
-
|
| 108 |
-
### 5.3 模型导出命令
|
| 109 |
-
|
| 110 |
-
``` sh
|
| 111 |
-
python deepcfd.py mode=export
|
| 112 |
-
```
|
| 113 |
-
|
| 114 |
-
### 5.4 模型推理命令
|
| 115 |
-
|
| 116 |
-
``` sh
|
| 117 |
-
# linux
|
| 118 |
-
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
|
| 119 |
-
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
|
| 120 |
-
# windows
|
| 121 |
-
# curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
|
| 122 |
-
# curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
|
| 123 |
-
python deepcfd.py mode=infer
|
| 124 |
-
```
|
| 125 |
-
|
| 126 |
-
## 6. 结果展示
|
| 127 |
-
|
| 128 |
-

|
| 129 |
-
|
| 130 |
-
可以看到DeepCFD方法与OpenFOAM的结果基本一致。
|
| 131 |
-
|
| 132 |
-
## 7. 参考文献
|
| 133 |
-
|
| 134 |
-
* [Ribeiro M D, Rehman A, Ahmed S, et al. DeepCFD: Efficient steady-state laminar flow approximation with deep convolutional neural networks](https://arxiv.org/abs/2004.08826)
|
| 135 |
-
* [基于PaddlePaddle的DeepCFD复现](https://aistudio.baidu.com/projectdetail/4400677)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|