目录
摘要
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方程的简化,为模拟自由表面流动问题提供了一个合适的近似。它们被用于许多应用,例如模拟和预测海啸波或大型洪水事件,在此文献中,将重点放在双曲偏微分方程系统形式出现的浅水方程上,方程如下所示:
质量守恒方程:
质量守恒方程描述了流体的质量守恒情况,表达式为:;
动量守恒方程:
水平方向上(X):
动量守恒方程包括水平方向和垂直方向的动量守恒。其表达式分别为:
;
竖直方向上(y)
其中:
- gr 表示重力加速度,
- b(x)是描述地形(边界条件)的函数
Godunov通量法:
一种用于解决双曲守恒律的数值方法,特别适用于计算流体动力学中的激波和间断问题;基本思想是通过局部求解每个单元边界上的Riemann问题来计算数值通量,从而获得高分辨率的数值解。
基本原理:
一般的双曲守恒律可以写成如下形式:
其中,u是守恒变量向量,f(u) 是通量函数。
步骤:
- 离散化网格:将计算域分成若干单元,每个单元的值代表该单元的平均值。
- 解Riemann问题:在每个时间步长,利用每个单元边界的左右状态求解局部Riemann问题。
- 计算数值通量:根据Riemann问题的解计算数值通量,从而更新每个单元的值。
数值通量计算:
通过求解Riemann问题得到,即边界的数值通量取决于左右两侧状态的Riemann解。
例如,对于左侧状态为 uL和右侧状态为 uR,数值通量 Fi+1/2可以表示为:
其中,u∗是Riemann问题的解。
Riemann问题:
(形式同Godunov中的形式)
Riemann问题是一个具有分片常数初始条件的双曲方程初值问题,初始条件形式为:
其中,uL和 uR 分别是左侧和右侧状态。
物理意义
Riemann问题模拟的是在某个初始时刻存在一个间断面(例如冲击波、接触间断等),该间断面将介质分为两个不同状态的区域。Riemann问题的解描述了在这种初始条件下,系统如何随时间演化。在有限体积方法中,用于计算单元边界上的数值通量。通过局部求解Riemann问题,可以更准确地捕捉间断和激波,确保数值解的稳定性和保守性。
模型设置
一维的pinn SWE模型
在PINN环境中对swe建模的直接方法是让网络Φ(x, t;θ)学习水的高度和动量,
直接学习水深 和动量 。相应的物理损失函数定义为:
由于没有直接表示速度 的方式,速度需要通过来近似得到;这可能引入数值误差,尤其是在训练初期网络对 的预测接近零时。(可通过将SWE重写为非保守形式,并构建一个直接输出高度和速度的PINN来解决)
将损失函数调整为:
另一个方法是定义一个至少二次连续可微的标量值函数 :并通过定义 和来简化损失函数,定义为:
给定PINN现在输出标量值函数≈φ的预测。
关于包含相关变量的模拟设置说明可见下图:
比较了这三种方法在一个简单的深度扰动场景下的特点是一个平坦的测深和初始水高度和速度,如下所示:
结果如下表所示:
可以看出:非守恒形式和守恒形式在50K次训练后的预测误差都比较好。然而,令人惊讶的是,即使标量值方法在定义上满足质量守恒,它并不自动等于一个更好的近似值。图2中的验证图清楚地显示,性能在8K次epoch之后就停滞不前了,这表明发生了某种过拟合。利用这些结果,我们可知,非守恒形式的损失函数构建效果较好,运行结果如下所示:
模型优化
为了提高模型的训练效率和预测精度,文章介绍了几种优化策略:
- 学习率退火:动态调整学习率,帮助模型更快收敛。
- 正弦激活函数:引入正弦激活函数,以改善模型对高频信息的表示能力。
- 局部自适应激活函数:在每一层或每个神经元中引入可调节的缩放因子,增强模型的灵活性。
- 注意力机制:利用注意力机制优化物理损失中每个点的权重,解决刚性PDE问题。
①变化的水深-沙洲场景
应用在复杂的一维例子上,其中流体表面的初始深度扰动以及不同的水深测量给出。完整的初始条件和边界条件定义为:
用于训练PINN的超参数选择如下:网络深度为5层,宽度为50个神经元,使用tanh激活函数。这个选择是通过使用标准MSE损失对参考解决方案获得的完整模拟结果进行超参数优化得到的;使用标准输入和权值归一化方法,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和圣维南方程的由来和用处,在以后的学习中将会提供帮助。