---
title: LZAtest2
canonical_url: "https://www.modelscope.cn/models/LZA123/LZAtest2"
md_url: "https://www.modelscope.cn/models/LZA123/LZAtest2.md"
repository: LZA123/LZAtest2
chinese_name: "测试模型"
last_updated: 2024-12-24
pipeline_tag: image-object-detection
tasks:
  - image-object-detection
library_name:
  - tensorflow
frameworks:
  - Tensorflow
downloads: 41
stars: 0
---

# LZAtest2

> LZAtest2 - LZA123 在 ModelScope 开源的模型。DeepCFD(Deep Computational Fluid Dynamics)

- **Repository**: LZA123/LZAtest2
- **Tasks**: image-object-detection
- **Downloads**: 41
- **Stars**: 0
- **Last updated**: 2024-12-24

Source: https://www.modelscope.cn/models/LZA123/LZAtest2

---

# DeepCFD(Deep Computational Fluid Dynamics)

## 1. 背景介绍与问题定义

计算流体力学（Computational fluid dynamics, CFD）模拟通过求解 Navier-Stokes 方程（N-S 方程），可以获得流体的各种物理量的分布，如密度、压力和速度等。在微电子系统、土木工程和航空航天等领域应用广泛。

在某些复杂的应用场景中，如机翼优化和流体与结构相互作用方面，需要使用千万级甚至上亿的网格对问题进行建模（如下图所示，下图展示了 F-18 战斗机的全机内外流一体结构化网格模型），导致 CFD 的计算量非常巨大。因此，目前亟需发展出一种相比于传统 CFD 方法更高效，且可以保持计算精度的方法。

Navier-Stokes 方程是用于描述流体运动的方程，它的二维形式如下：

质量守恒：

$$\nabla \cdot \bf{u}=0$$

动量守恒：

$$\rho(\frac{\partial}{\partial t} + \bf{u} \cdot  div ) \bf{u} = - \nabla p +  - \nabla \tau + \bf{f}$$

其中 $\bf{u}$ 是速度场（具有 x 和 y 两个维度），$\rho$ 是密度， $p$ 是压强场，$\bf{f}$ 是体积力（例如重力）。

假设满足非均匀稳态流体条件，方程可去掉时间相关项，并将 $\bf{u}$ 分解为速度分量 $u_x$ 和 $u_y$ ，动量方程可重写成：

$$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$$

$$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$$

其中 $g$ 代表重力加速度，$\nu$ 代表流体的动力粘度。

## 2. 模型简介

该商品基于 PaddlePaddle 框架和 PaddleScience 套件实现了 DeepCFD 网络模型，这是一种基于卷积神经网络 (CNN) 的模型，可有效近似非均匀稳定层流问题的解决方案。该模型能够直接从使用最先进的 CFD 代码生成的地面实况数据中学习速度场和压力场的纳维-斯托克斯方程的完整解。与标准 CFD 方法相比，速度提高了 3 个数量级，并且错误率较低。

![DeepCFD](https://ai-studio-static-online.cdn.bcebos.com/150bd6248d5f4c0bb6186e3498e87b57fcc5f67ffa5148fd9b139edb61d370a6)

## 3. 环境检查及依赖补全

```sh
# 推荐环境
python=3.10
paddlepaddle=3.0-beta 或 develop
paddlesci 源码安装
加速器：DCU

# paddlepaddle检查
import paddle
print(paddle.utils.run_check())

# paddlesci检查
python -c "import ppsci; ppsci.run_check()"

# DCU检查
hy-smi
```

可参考：[安装教程](https://paddlescience-docs.readthedocs.io/zh-cn/latest/zh/install_setup/)

## 4. 素材准备

### 4.1 数据准备

该数据集中的数据使用 OpenFOAM 求得。数据集有两个文件 dataX 和 dataY。dataX 包含 981 个通道流样本几何形状的输入信息，dataY 包含对应的 OpenFOAM 求解结果。

运行本问题代码前请按照下方命令下载 [dataX](https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl) 和 [dataY](https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl)：

``` sh
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
```

dataX 和 dataY 都具有相同的维度（Ns，Nc，Nx，Ny），其中第一轴是样本数（Ns），第二轴是通道数（Nc），第三和第四轴分别是 x 和 y 中的元素数量（Nx 和 Ny）。在输入数据 dataX 中，第一通道是计算域中障碍物的SDF（Signed distance function），第二通道是流动区域的标签，第三通道是计算域边界的 SDF。在输出数据 dataY 中，第一个通道是水平速度分量（Ux），第二个通道是垂直速度分量（Uy），第三个通道是流体压强（p）。

数据集原始下载地址为：https://zenodo.org/record/3666056/files/DeepCFD.zip?download=1

### 4.2 预训练模型准备

预训练模型地址为：https://paddle-org.bj.bcebos.com/paddlescience/models/deepcfd/deepcfd_pretrained.pdparams

## 5. 模型训练、评估、导出、推理命令

| 预训练模型  | 指标 |
|:--| :--|
| [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 |

### 5.1 模型训练命令

    ``` sh
    # linux
    wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
    wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
    # windows
    # curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
    # curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
    python deepcfd.py
    ```

### 5.2 模型评估命令

    ``` sh
    # linux
    wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
    wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
    # windows
    # curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
    # curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
    python deepcfd.py mode=eval EVAL.pretrained_model_path=https://paddle-org.bj.bcebos.com/paddlescience/models/deepcfd/deepcfd_pretrained.pdparams
    ```

### 5.3 模型导出命令

    ``` sh
    python deepcfd.py mode=export
    ```

### 5.4 模型推理命令

    ``` sh
    # linux
    wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
    wget -nc -P ./datasets/ https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
    # windows
    # curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataX.pkl
    # curl --create-dirs -o ./datasets/dataX.pkl https://paddle-org.bj.bcebos.com/paddlescience/datasets/DeepCFD/dataY.pkl
    python deepcfd.py mode=infer
    ```

## 6. 结果展示

![OpenFOAM 计算结果与 DeepCFD 预测结果对比，从上到下分别为：水平速度分量（Ux），垂直速度分量（Uy）以及流体压强（p）](https://ai-studio-static-online.cdn.bcebos.com/288c37b569d5400aa7b2265ff13fcf0edad3115e70fe4fafb6736215355771fe)

可以看到DeepCFD方法与OpenFOAM的结果基本一致。

## 7. 参考文献

* [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)
* [基于PaddlePaddle的DeepCFD复现](https://aistudio.baidu.com/projectdetail/4400677)
