学习周报:文献阅读+Fluent案例+水动力学方程推导

news2024/9/22 23:25:59

目录

摘要

Abstract

文献阅读:物理信息神经网络学习自由表面流

文献摘要

讨论|结论

预备知识

浅水方程SWE(Shallow Water Equations)

质量守恒方程:

动量守恒方程:

Godunov通量法:

基本原理:

步骤:

数值通量计算:

Riemann问题:

物理意义

模型设置

一维的pinn SWE模型

模型优化

①变化的水深-沙洲场景

②放射状溃坝- 2D场景

Fluent实例:横截面减小的螺纹管中的流动

几何绘制部分:

网格划分部分:

求解器设置

结果展示

水动力学方程推导

总结



摘要

在本周,阅读的文献为关于PINN在模拟自由表面流动中的应用,重点探讨了浅水方程(SWE)模型的实现与优化。PINN通过在神经网络的训练过程中引入物理约束,提高了预测的准确性和稳定性。关于理论学习部分,学习了浅水方程(SWE)和圣维南方程的推导,巩固了水动力学的知识。

Abstract

During this week, the literature which I read focused on the application of PINN in simulating free surface flows, emphasizing the implementation and optimization of the Shallow Water Equations (SWE) model. The accuracy and stability of predictions were improved by incorporating physical constraints into the training process of the neural network. In the theoretical learning section, I studied the derivation of the Shallow Water Equations (SWE) and the Saint-Venant equations, consolidating my knowledge of hydrodynamics.


文献阅读:物理信息神经网络学习自由表面流

Learning Free-Surface Flow with Physics-Informed Neural Networks

文献摘要

  文章介绍了物理信息神经网络(PINN)在模拟自由表面流动中的应用,重点探讨了浅水方程(SWE)模型的实现与优化。PINN通过在神经网络的训练过程中引入物理约束,提高了预测的准确性和稳定性。详细讨论了浅水方程的数学表达及其物理意义,并比较了不同形式的物理损失函数对模型性能的影响。通过引入正弦激活函数、局部自适应激活函数和注意力机制等优化策略,展示了如何在复杂变地形场景下提升PINN模型的训练效果和预测精度。实验结果表明,非保守形式的PINN在多个场景中表现出色,特别是在深度扰动和复杂地形条件下,展现了其强大的模拟能力和适应性。

  对于具有不同水深的SWE场景,与直接数值模拟相比,该方法能够产生具有竞争力的结果,其总相对L2误差为8.9e−3。


讨论|结论

文章提出了一种新的标值损失函数,它在设计上实现了质量守恒,并与两种替代方法进行了比较。此外,评估了在最近的出版物中提出的针对pinn的多种训练优化。利用浅水方程模拟自由表面流动问题,在该领域中,PINN被证明是科学机器学习领域的一种合适方法。

虽然提出的优化方法在各自的测试用例中表现良好,但它们也以新的超参数的形式引入了更多的复杂性,这些超参数再次需要仔细选择。否则,它们甚至可能带来比基线LRA方法更差的执行风险。

该文章采用两个实验案例证明,分别为:变化的水深、放射状溃坝- 2D场景

基于浅水方程(SWE),本文提出了三种在物理信息神经网络(PINN)框架下的损失函数建模方法,以实现水深和动量的预测(下一标题中详细描述):

1.直接预测水深和动量(守恒型);

2.非保守形式的浅水方程;

3.基于标量值函数的模型;

对于一个简单的深度扰动场景,三种方法在平坦的地形和初始水深与速度条件下进行了比较。实验结果表明,每种方法在不同条件下的性能有所不同,具体的实验设置可见下文描述,并通过该实验,探讨了三种优化方式的使用:

1.正弦激活函数(Sinusoidal Activation Functions):

显示出波动方程PINN模型的精度提高了一个数量级以上,归功于正弦激活函数允许的频率表示,确保训练过程稳定的专门初始化方案。然而,该方法还引入了一个新的超参数κ,该参数控制激活函数相对于每层输入域的频率,关于文中的实验,采用的κ=3.5,以便在测试用例中更好地工作

2.局部自适应激活函数(Locally Adaptive Activation Functions):

在网络激活函数的每层(L-LAAF)或每神经元(N-LAAF)的基础上引入了缩放因子。这些因素被视为网络的额外可训练参数,可在正常训练过程中进行优化。

3.注意机制(Attention Mechanism):

假设硬偏微分方程在时空域的尖锐界面中表现出来,通常难以使用标准的PINN方法进行训练,因此需要大量的搭配点来解决上述界面。试图通过引入搭配点的注意机制来缓解这种情况,这些搭配点在物理损失中都是单独加权的。将优化问题重新表述为鞍点问题minθ maxλ Lp(θ, λ),该问题首先使单个配点权值λi的损失最大化,然后使其与通常网络参数θ的损失最小化。将促使优化器的“注意力”转向那些经历高物理损失的区域。

在简单和复杂场景下的实验结果表明,PINN模型具有良好的预测能力和适应性,为自由表面流动的数值模拟提供了一种有效的新方法。


预备知识

(关于PINN的知识,前面文章中叙述过,在本文将不再赘述)

浅水方程SWE(Shallow Water Equations)

浅水方程是对一般Navier-Stokes方程的简化,为模拟自由表面流动问题提供了一个合适的近似。它们被用于许多应用,例如模拟和预测海啸波或大型洪水事件,在此文献中,将重点放在双曲偏微分方程系统形式出现的浅水方程上,方程如下所示:

质量守恒方程:

质量守恒方程描述了流体的质量守恒情况,表达式为:\frac{\partial h}{\partial t} + \frac{\partial (hu)}{\partial x} + \frac{\partial (hv)}{\partial y} = 0

动量守恒方程:

水平方向上(X):

动量守恒方程包括水平方向和垂直方向的动量守恒。其表达式分别为:

\frac{\partial (hu)}{\partial t} + \frac{\partial \left( u^2 h + \frac{1}{2} g h^2 \right)}{\partial x} = -gh \frac{\partial b}{\partial x}

竖直方向上(y)

\frac{\partial (hv)}{\partial t} + \frac{\partial \left( v^2 h + \frac{1}{2} g h^2 \right)}{\partial y} = -gh \frac{\partial b}{\partial y}

其中:

  • gr 表示重力加速度,
  • b(x)是描述地形(边界条件)的函数
Godunov通量法:

一种用于解决双曲守恒律的数值方法,特别适用于计算流体动力学中的激波和间断问题;基本思想是通过局部求解每个单元边界上的Riemann问题来计算数值通量,从而获得高分辨率的数值解。

基本原理:

一般的双曲守恒律可以写成如下形式:\frac{\partial \mathbf{u}}{\partial t} + \frac{\partial \mathbf{f}(\mathbf{u})}{\partial x} =0

其中,u是守恒变量向量,f(u) 是通量函数。

步骤:
  • 离散化网格:将计算域分成若干单元,每个单元的值代表该单元的平均值。
  • 解Riemann问题:在每个时间步长,利用每个单元边界的左右状态求解局部Riemann问题。
  • 计算数值通量:根据Riemann问题的解计算数值通量,从而更新每个单元的值。
数值通量计算

通过求解Riemann问题得到,即边界的数值通量取决于左右两侧状态的Riemann解。

例如,对于左侧状态为 uL和右侧状态为 uR,数值通量 Fi+1/2可以表示为:F_{i+\frac{1}{2}}=f\left ( u^{*} \right )

其中,u∗是Riemann问题的解。

Riemann问题

(形式同Godunov中的形式)

Riemann问题是一个具有分片常数初始条件的双曲方程初值问题,初始条件形式为:

其中,uL和 uR 分别是左侧和右侧状态。

物理意义

Riemann问题模拟的是在某个初始时刻存在一个间断面(例如冲击波、接触间断等),该间断面将介质分为两个不同状态的区域。Riemann问题的解描述了在这种初始条件下,系统如何随时间演化。在有限体积方法中,用于计算单元边界上的数值通量。通过局部求解Riemann问题,可以更准确地捕捉间断和激波,确保数值解的稳定性和保守性。

模型设置

一维的pinn SWE模型

在PINN环境中对swe建模的直接方法是让网络Φ(x, t;θ)学习水的高度和动量,

直接学习水深 \tilde{h}(x, t) 和动量 \tilde{h}u(x, t)。相应的物理损失函数定义为:

由于没有直接表示速度 u 的方式,速度需要通过\tilde{u}=\frac{\tilde{hu}}{h}来近似得到;这可能引入数值误差,尤其是在训练初期网络对 \tilde{h}的预测接近零时。(可通过将SWE重写为非保守形式,并构建一个直接输出高度和速度的PINN来解决)

将损失函数调整为:

另一个方法是定义一个至少二次连续可微的标量值函数 :\phi: \Omega \to \mathbb{R}并通过定义 \tilde{h}=-\frac{\partial \phi }{\partial x}\tilde{hu}=\frac{\partial \phi}{\partial x}来简化损失函数,定义为:

给定PINN现在输出标量值函数≈φ的预测。

关于包含相关变量的模拟设置说明可见下图:

比较了这三种方法在一个简单的深度扰动场景下的特点是一个平坦的测深和初始水高度和速度,如下所示:

结果如下表所示:

可以看出:非守恒形式和守恒形式在50K次训练后的预测误差都比较好。然而,令人惊讶的是,即使标量值方法在定义上满足质量守恒,它并不自动等于一个更好的近似值。图2中的验证图清楚地显示,性能在8K次epoch之后就停滞不前了,这表明发生了某种过拟合。利用这些结果,我们可知,非守恒形式的损失函数构建效果较好,运行结果如下所示:

模型优化

为了提高模型的训练效率和预测精度,文章介绍了几种优化策略:

  • 学习率退火:动态调整学习率,帮助模型更快收敛。
  • 正弦激活函数:引入正弦激活函数,以改善模型对高频信息的表示能力。
  • 局部自适应激活函数:在每一层或每个神经元中引入可调节的缩放因子,增强模型的灵活性。
  • 注意力机制:利用注意力机制优化物理损失中每个点的权重,解决刚性PDE问题。

①变化的水深-沙洲场景

应用在复杂的一维例子上,其中流体表面的初始深度扰动以及不同的水深测量给出。完整的初始条件和边界条件定义为:

用于训练PINN的超参数选择如下:网络深度为5层宽度为50个神经元使用tanh激活函数。这个选择是通过使用标准MSE损失对参考解决方案获得的完整模拟结果进行超参数优化得到的;使用标准输入和权值归一化方法,LRA参数设为_{\alpha _{lra }} = 0.9,优化使用标准ADAM算法,学习率为1e−3。

预测结果如下图所示:

其中一段河道的预测结果:

各种优化方式的损失值如下所示,表2给出了对不同优化方法如何执行的更细粒度的分析

经过50k次训练后,总相对l2 -误差仅为8.9e−3。我们可以清楚地看到,真解的特性被准确地预测了。在区域的相反方向上传播的两个波以及在穿越沙洲水深时向区域右侧传播的波的陡度都得到了准确的分解。此外,从时空图中我们可以看出,h和u的误差主要集中在波前形成的激波上。很容易发现,除了神经元自适应激活函数方法外,所有其他优化方法都未能在预测能力方面提供实质性的改进。

在图六中可观察到,虽然自适应激活函数方法在总体相对误差中确实表现得相当好,但它们似乎处于振荡状态,这可能是不利的。(为了减轻这种行为,对学习率进行超参数优化可能就足够了)

②放射状溃坝- 2D场景

考虑一个径向溃坝的场景,我们的初始条件是一个半径为r的圆形凸起,在一个平坦的方形盆地中。边界用流出条件建模,允许波传播出域。精确的初始条件和边界条件定义为:

(xb, yb)∈∂Ω,n⊥∂Ω和域Ω选为[−2.5,2.5]⊗(−2.5,2.5),设置与①中描述的相同。

下图定性地显示了网络学习到的水高预测,以及t = 0.1和t = 0.7两个不同时间步长的绝对误差。如前所述,我们可以清楚地观察到,模拟的特征是由网络捕获的,初始凸起向外移动,同时缓慢扩散。预测中的大部分误差再次集中在从中心向外传播的陡峭波前周围:

在表III中给出了每种优化方法在该实验中获得的最佳性能。在这种情况下,LRA、Siren和Attention方法或多或少都能很好地工作,达到最佳总相对误差为6e−2:

然而,自适应激活函数方法似乎落后了。图8中的单个损失图进一步说明了这一点。结果表明,这两种方法不仅在之前的应用中表现出振荡行为,而且在训练过程中的某些点变得不稳定,从而不再产生合理的结果:

虽然提出的优化方法在各自的测试用例中表现良好,但它们也以新的超参数的形式引入了更多的复杂性,这些超参数再次需要仔细选择。否则,它们甚至可能带来比基线LRA方法更差的执行风险。


Fluent实例:横截面减小的螺纹管中的流动

几何绘制部分:

进入模型绘制软件中,将单位调整为毫米,在XY平面的YZ方向上画出一个直径为50mm,高度为100mm的圆。再使用重合命令使得该圆与Y轴贴合。

再在YZ平面上生成新的草图,绘制一条与Z轴重合的500mm的直线,该线取决于你想要的管道长度。使用扫掠命令形成螺旋管,如下图设置条件所示;生成完后,使用比例选项来调整出口处的边界,调整出口大小;最后参数为3匝,比例为2 的螺旋管。


网格划分部分:

首先使用自动划分网格命令来检查几何模型的绘制情况,查看是否存在未完成绘制的部分,以免后续网格划分无法进行,本才绘制采用四面体主导的方式;使用膨胀命令来对出口处网格进行细化,调整最大层数为3,使其边界接触的地方网格层数为3层;在对管道主题部分进行面网格划分,选取面网格划分命令的对象为管道主体:对边界进行命名后,进入求解器设置。


求解器设置

使用湍流模型进行求解,配置如下所示:

在材料数据库中选择水作为流体,后进行边界条件设置:

出口设置为压力出口,其余设置保持默认。

求解方法设置如下:

松弛因子保持默认,初始化设置如下(也可以选择“混合初始化”这样求解器将计算欧拉方程,以找出数值解的初始值)


结果展示

速度流线图:

压力云图:

水动力学方程推导

总结

通过阅读文献,了解到PINN在预测水动力学中的优势和局限性,在其中的损失函数构建中看到了优化方式和各个形式损失函数中的不足之处,并在理论学习中了解到了SWE和圣维南方程的由来和用处,在以后的学习中将会提供帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式Linux学习: platform 设备驱动实验

在Linux中,Platform(平台)机制是一个重要的设备驱动管理框架,它主要在Linux 2.6内核及以后的版本中引入。Platform机制的主要目的是提供一种统一的方式来管理那些不直接挂靠在传统物理总线(如USB、PCI、I2C、SPI等&…

单链表的应用(3)

返回倒数第k个结点 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 思路: 利用快慢指针,先让快指针走k步快慢指针一起往后遍历,直到快指针到达链表的末端此时的慢指针就是链表的倒数第k个结点 int kthToLast(…

昇思MindSpore学习总结十六 —— 基于MindSpore的GPT2文本摘要

1、mindnlp 版本要求 !pip install tokenizers0.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 该案例在 mindnlp 0.3.1 版本完成适配,如果发现案例跑不通,可以指定mindnlp版本,执行!pip install mindnlp0.3.1 !pip install mindnlp …

提供代码!直接可以运行,Chatgpt代码分享

效果演示 安装依赖库 pip install openai粘贴如下代码 # 设置 API Key import openaiopenai.api_key "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"# 设置请求参数model_engine "text-davinci-002"prompt "python的应用领域"comp…

Bonree ONE赋能汽车行业 重塑可观测性体验

随着数字化、智能化浪潮的汹涌而至,全球汽车产业正站在一个崭新的历史起点上。新能源汽车,作为这场科技革命和产业变革的领跑者,其数智化发展正呈现出前所未有的蓬勃态势。7月18-19日,第四届中国新能源汽车产业数智峰会于上海举办…

《0基础》学习Python——第二十三讲__网络爬虫/<6>爬取哔哩哔哩视频

一、在B站上爬取一段视频(B站视频有音频和视频两个部分) 1、获取URL 注意:很多平台都有反爬取的机制,B站也不例外 首先按下F12找到第一条复制URL 2、UA伪装,下列图片中(注意代码书写格式) 3、Co…

【2024】springboot O2O生鲜食品订购

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

sass版本更新,不推荐使用嵌套规则后的声明

目前在 Sass 中不推荐使用嵌套规则后的声明,在 为了通知用户即将进行的更改,并给他们时间进行更改 与之兼容的样式表。在未来的版本中,Dart Sass 将更改为 匹配纯 CSS 嵌套生成的顺序。Deprecation Warning: Sasss behavior for declarations…

视频点播项目

文章目录 视频点播技术栈与项目环境JsonCppMariaDBhttplib 工具类设计文件类Json类 数据管理模块视频信息管理(数据表设计)数据管理类设计 网络通信接口设计业务处理模块设计前端界面主页面播放页面 项目总结项目回顾项目结构关键技术点总结 视频点播 允…

el-table表头使用el-dropdown出现两个下拉框

问题描述:el-table在固定右边列时,表头使用el-dropdown会出现两个下拉框,如图所示: 解决方法: 1.只显示第一个下拉框,通过控制样式将其他的下拉框display:none; 2.如图所示,修改插槽写法&…

SpringBoot源码深度解析

今天,聊聊SpringBoot的源码,本博客聊的版本为v2.0.3.RELEASE。目前SpringBoot的最新版为v3.3.2,可能目前有些公司使用的SpringBoot版本高于我这个版本。但是没关系,因为版本越新,新增的功能越多,反而对Spri…

如何将几百兆的包优化到几十兆----记一次vue项目的打包优化过程

打包优化 现象 前段时间开发的时候遇到客户反馈的一个问题 界面无法打开,显示白屏,控制台无报错 经过我们在开发环境,测试环境反复测试都没复现出客户的问题,然后我们又不停的在生产环境上找问题,也没复现出来 最…

一文带你读懂MLIR论文,理解MLIR设计准则.

论文MLIR: Scaling Compiler Infrastructure for Domain Specific Computation MLIR:针对特定领域计算扩展编译器基础设施 文章目录 论文MLIR: Scaling Compiler Infrastructure for Domain Specific Computation1. 论文下载2. TVM关于MLIR的讨论3. 论文正文0. 摘要…

5个人人都应该学会的电脑小技巧

今天分享几个电脑常用的快捷键,可以让你的工作事半功倍,建议收藏! 不想被突然来的人看到正在浏览的网站,用CtrlW或者AltF4可以关闭当前页面,另外如果你正在看小电影也可以用这个办法关闭。 2. 同事或大Boos走了之后想…

Anthropic的Claude安卓版能否赢得用户青睐?

Anthropic的Claude安卓版能否赢得用户青睐? 前言 Anthropic 就在7月18日,这家以"可控AI"著称的初创公司再次出手,推出了Claude的Android版本应用。这款APP不仅支持实时语言翻译,更传承了Anthropic一贯的隐私保护政策。C…

腾讯云COS托管静态网站,以及如何解决访问出现了下载网页的情况

腾讯云对象存储(Cloud Object Storage,简称COS),与其他云厂商所提供的云对象存储都是面向非结构化数据,只是每个云厂商的叫法有别于他家,或许是更能彰显厂商的品牌吧! 但不管云厂商怎么给云对象…

错误:PHP:Deprecated: Required parameter $xxx follows optional parameter $yyy

前言 略 错误 Deprecated: Required parameter $xxx follows optional parameter $yyy 解决办法 设置 error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICT 参考 https://blog.csdn.net/lxw1844912514/article/details/100028023

MATLAB学习日志DAY13

13.矩阵索引(1) 13.1 下标 上图! A 的行 i 和列 j 中的元素通过 A(i,j) 表示。 例如,A(4,2) 表示第四行和第二列中的数字。 在幻方矩阵中, A(4,2) 为 15。 A(1,4) A(2,4) A(3,4) A(4,4) 用来计算 A 第四列中的…

【PG】PostgreSQL高可用之repmgr事件通知

目录 描述 结合脚本 占位符 repmgr命令 生成的事件: repmgrd 生成的事件(流复制模式): 描述 每次repmgr或repmgrd执行重大事件时,都会将该事件的记录连同时间戳、失败或成功的标识以及进一步的详细信息&#xff08…

黑马商城启动流程(微服务拆分项目)

1.虚拟机ssh(docker中布置了 mysql nacos seata(分布式事务)三个容器在同一个网络hm-net中) 2.idea(启动所有的微服务项目 ) 3.nginx 在cmd上启动 4.navicat 连接数据库 5.登录前端页面 http://localho…