生成移动网格的基本原理是什么?

计算科学 有限差分 自适应网格细化 平流扩散
2021-12-18 01:48:19

我有兴趣为平流扩散问题实现移动网格。Adaptive Moving Mesh Methods给出了一个很好的例子,说明如何使用有限差分对一维 Burger 方程执行此操作。有人可以提供一个使用有限差分和移动网格求解一维平流扩散方程的工作示例吗?

例如,在保守的形式中,等式是,

ut=(a(x)u+dux)x

在哪里a(x)是速度(空间的函数)。初始条件u(0,x)可以指定(例如)从左到右(例如沿着管道)移动的流动物种,其中初始条件具有急剧梯度。

应该如何解决移动网格的均匀分布问题(可能使用 De Boor 算法或其他方法)?我希望自己在 Python 中实现这个,所以如果你的答案可以很容易地翻译成代码就更好了!


赏金之前的老问题

  1. 基于系统属性生成自适应网格的基本方法是什么?我应该使用通量来衡量梯度大的地方吗?
  2. 因为我寻求迭代(时间扫描)解决方案。我想从旧网格插入到新网格很重要,通常的方法是什么?
  3. 我真的很想看到一个简单问题的工作示例(如平流方程)。

关于问题细节的一些背景知识。我正在模拟一维耦合方程组,

ut=au2ux2+buux+fu(x,u,v,w)vt=av2vx2+bvvx+fv(x,u,v,w)wt=auux+avvx+fw(x,u,v,w)

这组方程描述了两个物种的平流扩散问题,其中第三个方程与其他两个方程耦合。解决方案在我的网格中心附近迅速变化,见下文(这些是插图而不是计算),

示例解决方案

请注意,下图中的对数刻度,解决方案uv变化超过数量级。在上图 (w) 中心有不连续性。我正在使用自适应迎风解决上述系统,其中离散化可以根据Péclet number的局部值从中心适应逆风主导。我正在通过时间梯形积分(“Crank-Nicolson”)隐式求解系统。

我有兴趣将自适应网格应用于此问题。我认为这很重要,因为否则形状峰的细节(w) 参数可能会丢失。与这个问题不同,我想应用一个希望简单的算法来生成网格。

由于这是一个平流扩散问题,我们可以想象一种基于通量的自适应网格方案uv在单元格边界。因为这将表明值在哪里快速变化。的巅峰w也对应于通量最大的地方。

3个回答

自适应网格是在高流场梯度区域自动聚类网格点的网格网络;它使用流场属性的解来定位物理平面中的网格点。自适应网格与控制流场方程的时间相关解结合以时间步长演变,该解以时间步长计算流场变量。在求解过程中,物理平面中的网格点以这种方式移动以“适应”大流场梯度区域。因此,物理平面中的实际网格点在求解流场的过程中一直处于运动状态,只有在流解接近稳态时才变得静止。

网格自适应用于稳定和不稳定类型的问题。在稳定流问题的情况下,网格会在预定的迭代次数后进行调整,并且网格调整将在解收敛时停止。在时间精确解的情况下,网格点运动和细化与物理问题的时间精确解一起执行。这需要物理问题的 PDE 与描述电网移动或电网适应的 PDE 的时间精确耦合。

对于较新配置的计算,依赖于网格生成的最佳实践指南和以前的经验为大量数值错误敞开了大门。网格适应方法可以显着提高解决方案的质量并保证更好的结果,因为不存在定义可以达到的网格分辨率限制的限制。

电网自适应技术分为三种基本类型,即h-方法,r- 方法和p-方法。可以找到一些混合类型的方法,例如rp-适应或hp-适应。出于这个rh类型的网格自适应技术在有限体积和有限差分方案中更受欢迎。

h类型:-

h方法涉及基于后验误差估计或误差指标的空间网格的自动细化或粗化。

r类型:-

r 自适应方法不是对网格及其连通性进行局部拓扑更改,而是通过移动固定总数的网格点的位置来对分辨率进行局部更改。

p类型:-

在有限元方法中非常流行的网格自适应方法,而不是有限体积或有限元方法。它通过丰富具有相同几何元素阶的插值函数的多项式来减少解中的误差。这里没有新的网格,要计算的几何形状,该方法的另一个优点是它可以更好地逼近不规则或弯曲的边界,灵敏度较低到纵横比和倾斜。正因为如此,它在结构应用中非常有名。

Drivingsourcesofgridadaptation

1.Featurebasedadaptation 基于特征的近似广泛使用的网格自适应方法采用解决方案的特征作为网格自适应的驱动力。这些通常使用解的特征,例如解梯度和解曲率。具有大解梯度的流动区域用更多的点来解析,并且最小意义的区域被粗化。这会导致对物理特定区域的细化,例如边界层、冲击、分离线、驻点等。在某些情况下,基于梯度的细化实际上会增加求解误差,因此存在一些基于特征的自适应问题,例如鲁棒性等。

2.Truncationerrorbasedadaption 截断误差是偏微分方程与其离散方程之间的差异。截断误差是更合适的方法来查找应该在哪里进行适配。基于截断误差的自适应背后的一般概念是在模拟域上平均分布误差以减少总离散化误差。对于简单的方程,截断误差的评估是最简单的工作,但对于复杂的方案,它是困难的,因此需要不同的方法来达到这个目的。对于简单的离散化方案,可以直接计算截断误差。对于难以直接评估截断的更复杂的方案,需要一种估计截断误差的方法。

3.Adjointbasedadaptation 下一个有希望的方法是伴随方法。它非常适合估计每个单元或元素对任何感兴趣的解决方案函数(如升力、阻力和力矩)中的离散化误差的局部贡献。因此,根据解决方案的要求,它在有针对性的网格自适应中很有用,因此它也称为面向目标的自适应。

一切顺利!

References:

[1] Fidkowski Krzysztof J. 和 Darmofal David L. 计算流体动力学中基于输出的误差估计和网格自适应的回顾。AIAA 杂志,49:673–694,2011。

[2] 约翰·坦内希尔理查德·普莱彻和戴尔·安德森。计算流体力学和传热。泰勒和弗朗西斯,1997。

[3] JD Jr. 安德森。计算流体动力学:应用基础。McGraw Hill Inc.,1995。

[4] Roy Christopher J. cfd 中驱动网格自适应的策略。在第 47 届 AIAA 航空航天科学会议上,包括新视野论坛和航空航天博览会,2009 年。

[5] McRae Scott D. r-refinement 网格自适应算法和问题。应用力学与工程中的计算方法,189:1161-1182, 2000。

[6] Ivanenko Sergey A. Azarenok Boris N. 和唐涛。基于godunovs方案的自适应网格重分布方法 通讯。数学。科学,1:152-179。

[7] Ahmadi Majid 和 Ghaly Wahid S. 使用具有解决方案适应的有限体积方法模拟级联中的无粘性流动。在 CASI 第 6 届空气动力学研讨会上,1997 年。

[8] Jasak H. 和 Gosman AD 有限体积方法的自动分辨率控制,第 1 部分:后验误差估计。数值传热,Taylor & Francis,38:237–256, 2000。

[9] Jasak H. 和 Gosman AD 有限体积方法的自动分辨率控制,第 2 部分:自适应网格细化和粗化。数值传热,Taylor & Francis,38:257–271, 2000。

[10] Thompson David S. Soni Bharat K.、Koomullil Roy 和 Thornburg Hugh。基于点重分布的解自适应网格策略。应用力学与工程中的计算方法,189:1183-1204,2000。

[11] Venditti David A. 和 Darmofal David L. 功能输出的伴随误差估计和网格适应:应用于准一维流。计算物理学杂志,164:204–227,2000。

[12] Balasubramanian R. 和 Newman JC 比较基于伴随和基于特征的网格适应功能输出。流体数值方法国际期刊,53:1541-1569,2007。

[13] 哈特曼·拉尔夫。空气动力学中的误差估计和基于伴随的自适应。在欧洲计算流体动力学会议上,2006 年。

我(仍然)正在为此寻找好的答案。我使用多级自适应网格,我使用某种标准进行细化。从事 FEM 的人们喜欢使用相当便宜的(计算上)严格的误差估计,并将其用作细化标准。对于我们做 FDM/FVM 的我们来说,我没有找到任何这样的估计。

在这种情况下,如果您想严格地进行细化,即基于对实际误差的某种估计进行细化,那么您(几乎)唯一的选择是理查森外推法。例如,Berger 和 Oliger (1984)使用这种方法来开发他们的块结构 AMR 双曲线求解器。该方法是通用的,您几乎可以使用理查森外推法解决任何问题。唯一的问题是它很昂贵,尤其是对于瞬态问题。

除了理查森外推,所有其他标准(以我的拙见)只是临时的。是的,您可以在“感兴趣的数量”上设置某个阈值并在此基础上进行细化。您可以使用一定数量的通量或衍生物来警告一些大梯度并使用它。或者,如果您正在跟踪界面,则可以根据您与界面的接近程度进行优化。当然,所有这些都非常便宜,但它们并不严谨。

至于网格之间的插值,您通常需要至少与求解器一样准确的东西。有时可以构建满足某些属性的插值,例如质量守恒或凸的,因此不会引入新的极值。我注意到最后一个属性有时对整个方案的稳定性非常重要。

如果它确实是一维的,那么您可能在这里不需要任何自适应网格,对于这样一个简单的问题,您可能可以使用静态网格解决所有您需要的问题,并具有现代工作站的计算能力。但在时间积分过程中,周期性地识别强调数值分辨率的区域,在此处添加网格点(并从过度分辨率区域中删除网格点),并内插到新网格中,这是一个完全合理的策略。但这不应该太频繁地进行,因为插值可能会很昂贵,并且会在整体计算中增加数值误差。