Liuza1 commited on
Commit
40b9b86
·
verified ·
1 Parent(s): 5edd318

Delete README.md

Browse files
Files changed (1) hide show
  1. README.md +0 -135
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
- ![DeepCFD](https://ai-studio-static-online.cdn.bcebos.com/150bd6248d5f4c0bb6186e3498e87b57fcc5f67ffa5148fd9b139edb61d370a6)
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
- ![OpenFOAM 计算结果与 DeepCFD 预测结果对比,从上到下分别为:水平速度分量(Ux),垂直速度分量(Uy)以及流体压强(p)](https://ai-studio-static-online.cdn.bcebos.com/288c37b569d5400aa7b2265ff13fcf0edad3115e70fe4fafb6736215355771fe)
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)