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.53】NSFnets (Navier-Stokes Flow nets): Physics-informed neural networks for the incompressible Navier-Stokes equations #702

Merged
merged 23 commits into from
Jan 8, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions rfcs/Science/hackthon5th_53.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Science 53 设计文档

> RFC 文档相关记录信息

| | |
| ------------ | ----------------- |
| 提交作者 |DUCH714 |
| 提交时间 |2023-10-16 |
| RFC 版本号 | v1.0 |
| 依赖飞桨版本 | develop |
| 文件名 |hackthon5th_53.md |

## 1. 概述

### 1.1 相关背景

> 最近几年,深度学习在很多领域取得了非凡的成就,尤其是计算机视觉和自然语言处理方面,而受启发于深度学习的快速发展,基于深度学习强大的函数逼近能力,神经网络在科学计算领域也取得了成功,现阶段的研究主要分为两大类,一类是将物理信息以及物理限制加入损失函数来对神经网络进行训练, 其代表有 PINN 以及 Deep Retz Net,另一类是通过数据驱动的深度神经网络算子,其代表有 FNO 以及 DeepONet。这些方法都在科学实践中获得了广泛应用,比如天气预测,量子化学,生物工程,以及计算流体等领域。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

在过去 50 年中,使用有限差分、有限元、谱甚至无网格方法对纳维-斯托克斯方程进行数值求解取得了巨大进展。 然而,在许多实际情况下,我们仍然无法将数据无缝(多保真度)合并到现有算法中,并且对于工业复杂性应用,网格生成非常耗时,但仍然是一门艺术。 此外,解决不适定问题(例如,缺乏边界条件)或反问题通常非常昂贵,并且需要不同的公式和新的计算机代码。 在这里,我们采用物理信息神经网络(PINN),通过自动微分将控制方程直接编码到深度神经网络中,以克服上述模拟不可压缩层流和湍流的一些限制。 我们通过考虑纳维-斯托克斯方程的两种不同的数学公式来开发纳维-斯托克斯流网络(NSFnets):速度-压力(VP)公式和涡度-速度(VV)公式。 由于这是一种新方法,我们首先选择一些标准基准问题来评估 NSFnet 的准确性、收敛速度、计算成本和灵活性; 解析解和直接数值模拟 (DNS) 数据库为 NSFnet 模拟提供了适当的初始条件和边界条件。 空间和时间坐标是 NSFnet 的输入,瞬时速度和压力场是 VP-NSFnet 的输出,瞬时速度和涡度场是 VV-NSFnet 的输出。 这是无监督学习,因此除了边界和初始条件以及流体属性之外不需要标记数据。 VP 或 VV 控制方程的残差以及初始条件和边界条件被嵌入到 NSFnet 的损失函数中。 没有提供 VP-NSFnet 压力的数据,这是一个隐藏状态,通过不可压缩性约束获得,无需额外的计算成本。 与传统的数值方法不同,NSFnet 继承了神经网络(NN)的特性,因此总误差由近似误差、优化误差和泛化误差组成。 在这里,我们根据经验尝试通过改变采样(“剩余”)点、迭代求解器和神经网络架构的大小来量化这些误差。 对于层流解决方案,我们表明 VP 和 VV 公式在精度上相当,但它们的最佳性能对应于不同的神经网络架构。 初始收敛速度很快,但由于优化误差占主导地位,误差最终达到饱和状态。 对于湍流通道流,我们表明 NSFnet 可以维持 Reτ ∼ 1,000 的湍流,但由于训练成本高昂,我们只考虑通道域的一部分,并在 DNS 数据库提供的子域边界上强制执行速度边界条件。 我们还对损失函数中用于平衡数据和物理分量的权重进行了系统研究,并研究了一种动态计算权重的新方法,以加速训练并提高准确性。 在最后一部分中,我们演示了如何在实践中使用 NSFnet,即用于具有不完整或噪声边界条件的不适定问题以及逆问题。 对于这种情况,我们也获得了相当准确的解决方案,而无需更改 NSFnet,并且计算成本与前向适定问题相同。 我们还提供了一个简单的迁移学习示例,它将有助于加速 NSFnet 针对不同参数设置的训练。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

改一下,翻译不是很准确


### 1.2 功能目标

> 在本任务中,作者根据[NSFnets (Navier-Stokes Flow nets): Physics-informed
neural networks for the incompressible Navier-Stokes
equations](https://arxiv.org/abs/2003.06496)中的代码[NSFNet code](https://github.com/Alexzihaohu/NSFnets/blob/master/)
>
> 复现Kovasznay flow + cylinder wake + Beltrami flow,三个案例和指标。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

稍微介绍下三个案例:

  • 数据来源:公式解析解? DNS数值解?
  • 维数?
  • 含义?
  • 用什么指标衡量?


### 1.3 意义

> 基于以paddle为backend的[DeepXDE](https://deepxde.readthedocs.io/en/latest/index.html)框架实现纳韦斯托克方程问题的高精度求解,包括时间独立的二维纳韦斯托克方程(Kovasznay flow),时间依赖的二维纳韦斯托克方程(cylinder wake)以及时间依赖的三维纳韦斯托克方程(Beltrami flow),为求解其它流体问题提供样板。

## 2. PaddleScience 现状

> PaddleScience 无法完成训练,从[AIstudio](https://aistudio.baidu.com/studio/project/partial/verify/6832363/fa46b783a28442b88fb7d2756ffddb6c)中的后台任务_nfs1_可以看到,速度的相对误差在O(10^(-2))附近,因此转而使用基于paddle框架的DeepXDE。

## 3. 目标调研

>论文对纳韦斯托克方程进行了高精度求解,其难点主要在于代码较为陈旧,为基于原PINN而编写的tensorflow v1.0 版本代码,同时训练数据集以及训练网络庞大,单核GPU难以完成相关训练。

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

> 基于PaddleScience API实现求解2D稳态热传导方程的设计思路与实现步骤如下:

1、模型构建

2、方程构建

3、计算域构建

4、约束构建

5、超参数设定

6、优化器构建

7、评估器构建

8、可视化器构建

9、**算力卡的囤积**

10、模型训练、评估与可视化

### 4.1 补充说明

> 1、由于算力原因,本文没有使用文中所提及的 100×10 层MLP网络,而是使用 50×5 的MLP,同时训练点也进行大幅削减。
> 2、对于压力p由于会出现与原始数据偏移一个常数C的问题,我们在计算相对误差是会先减去该常数C。

## 5. 测试和验收的考量

> 精度对齐
> **Kovasznay flow**

| alpha=1 size 4*50 | paper | code(without BFGS) | paddle(DeepXDE) |
|-------------------|--------|--------------------|---------|
| u | 0.084% | 0.062% | 0.015% |
| v | 0.425% | 0.431% | 0.077% |
| p | 0.309% | / | 0.038% |

![image](https://github.com/DUCH714/paddle-community/blob/patch-1/rfcs/Science/53_figure/Kovasznay%20flow.png)

>**Cylinder wake**

| alpha=1 size 4*50 t=0 | paper | code(without BFGS) | paddle (DeepXDE) |
|-------------------|-------|--------------------|------------------|
| u | / | 0.00403 | 0.00346 |
| v | / | 0.0150 | 0.0155 |
| p | / | / | / |
## 6. 可行性分析和排期规划

>202309 : 调研

>202310 :基于TF以及DeepXDE的复现

>202311 :基于PaddleScience的复现

>202312 :整理项目产出,撰写案例文档

## 7. 影响面

> 帮助PaddleScience实现纳韦斯托克方程的高精度复现