“不完全矩形”网格上的多重网格

计算科学 多重网格
2021-12-03 07:52:52

多重网格介绍通常使用矩形网格。值的插值是直截了当的:只需在粗网格的两个相邻节点之间的边缘上进行线性插值,即可找到该边缘上细网格节点的值。

对于 FEM 应用程序,我有一个“拓扑”矩形的网格,因此节点连接就像在矩形网格上一样。然而,节点在网格上并没有完全对齐,但可能会移动很短的距离,以便更好地适应几何形状,同时仍然保持连接,就像在完美的矩形网格中一样。

网格看起来像这样:Mesh example您会看到:连接是“常规矩形”,但节点位置不是。

在这样的设置下,我可以想象几个“合理的”几何插值方案。

一般的问题是:multigrid 是否需要一个完美对齐的矩形网格,或者它是否也适用于上述情况,只要插值是“好”的?还是在这种情况下使用代数多重网格更好?(我不喜欢它,因为它不像几何多重网格那么直观。)

2个回答

Multigrid 不需要笛卡尔(矩形)均匀网格。它需要的是您可以定义精细和粗略级别(可能是递归的,如果您想从两级方案转到多级方案),并且您可以在这些级别之间定义插值运算符。解释这一点的最简单方法是,如果你确实有一个笛卡尔网格,但实际上你可以从任何粗网格开始,对其进行一次细化,就像这样:你有一个更细的网格。

换句话说,最简单的方法不是将适合多重网格的网格视为细网格以及如何找到较粗的网格,而是从粗网格开始,通过均匀细化从中获得更精细的级别(即,每个四边形都是分为四个较小的)。由于始终可以进行统一细化,因此这很容易为您提供层次结构。这与粗化相反,如果只给定一个特定的网格,这并不总是可能的,因此定义网格层次结构要复杂得多。(这就是为什么人们提出代数多重网格方法来仅基于矩阵定义粗略级别,而不考虑创建它的底层网格。)

假设您有以下由矩形元素组成的网格:

在此处输入图像描述

现在,如果您假设一个正常的结构化矩形网格执行插值,那么您将引入与这种不准确插值相关的错误。换句话说,当您限制残差向量并延长误差向量时,插值会产生错误。

现在,如果您的网格“接近”成为一个正常的结构化笛卡尔网格,那么这可能会起作用,至少一开始是这样,但我怀疑会发生以下两种情况之一,具体取决于您的网格距离矩形有多远:

1)您可能会发现多重网格首先开始收敛。毕竟最初你的错误还是很大的,你的“近似”插值实际上只是意味着一些节点被稍微过度表示,而一些节点被稍微表示不足。但是,您可能会发现,随着解变得更加准确并且插值误差变得更加重要,收敛会停滞。

2)另一种可能性是多重网格最终会收敛,但如果您使用了正确的插值,则不会那么快。

基本上,通过您的插值,您会不准确地衡量某些节点的重要性。例如,在 2D 中,如果您将给定节点加权为:

[0.250.50.250.51.00.50.250.50.25]

实际上,因为您的网格不完全是笛卡尔坐标,它应该是:

[0.250.550.250.551.00.490.280.520.30]

那么这将导致一些错误。此错误是否会阻止收敛可能取决于您的网格距离笛卡尔坐标有多远。

虽然 AMG 更难以理解/实施,但听起来它是您网格的正确方法。将几何多重网格应用于“近似”矩形网格可能会起作用,但我猜它充其量只是一种创可贴解决方案。希望这可以帮助。

更新:我认为我的回答可能有些混乱。我并不是说几何多重网格只适用于笛卡尔网格,而是说在笛卡尔网格上定义插值(因此限制)很容易,而在非结构化网格上这可能很困难。例如,考虑一个带有三角形网格的简单二维域的情况。细化这个网格很容易——至少在概念上是这样——但是你将如何定义粗网格和细网格之间的插值算子?我更喜欢 AMG 只是因为它更像一个“黑匣子”求解器,即不需要关于底层网格的信息,但这只是我个人的偏见/怪癖。只要您可以提供准确的插值运算符,几何多重网格就可以工作。