* full *多重网格算法如何运行?


12

因此,我了解(或至少我相信我知道)V周期的运行方式。我已经在Matlab中编写了V周期的一维递归版本。但是,当我为FMG运行代码时,我的解决方案并未收敛。我相信我的麻烦在于我对FMG实际部分的理解。我目前所知道的是:

  1. 只是之前FMG插值,我放松了我的解决方案u
  2. 插值两个错误 (?)u
  3. 执行2网格v循环,将错误传递到v循环(?)
  4. 放宽错误(在第二个最粗网格上)
  5. 插值和错误u
  6. 通过添加错误来更新u
  7. 运行一个v周期,然后从步骤4开始重复。

我不确定顺序,但是我插值并传递给v周期的确切信息也可能是错误的。如果我在算法中缺少任何内容,请告诉我。

Answers:


11

您从哪儿插值出“错误”?(以及如何测量错误?)

在更细的网格的第一次访问,整个解决方案 必须插入,最理想的是采用更高阶的运营商(例如,后处理/重建的FEM解决方案)。这FMG插值ü ^ h^ h ^ h ü ^ h。(可以使用普通插值I H h = I H h,但这通常会降低效率,至少对于平滑问题而言如此。)uuhIHhuHIhH=IhH

在FMG插值后,您只需应用一个或多个V周期(或W周期等)。(在限制之前,请确保至少运行一个平滑器。)最常见的选择是线性缺陷校正,其中仅限制残余,而自然近似法(FAS)是自然的用于非线性问题,因为它避免了全局线性化(例如,Newton或Picard)。rh=Ahuhbh

在FAS,精细栅格状态是使用限制状态限制算 。线性缺陷校正多网格(便利属性)不需要状态限制。最常见的状态限制是节点注入(对于FD和FE)和粗略的单元平均(对于FV和混合FE)。现在,我们可以将FAS粗网格方程式(对于非线性A有效)写为u~HI^hHu~hA

AHuH=IhHbhbH+AHI^hHu~hIhHAhu~hτhH

bHτhHuhAHI^hHuh=bH+τhHuhu~h+IHh(uHI^hHu~h)


在计算从最细网格到最粗网格的残差时,计算出了误差。每个网格的初始近似值为零,然后通过某种迭代方法将其放宽。
AlanH

错误(对解决方案的最初猜测)如何在所有这些方面起作用?
AlanH

1
uhIHhuH

在Briggs的两网格校正方案中,特别提到了从粗网格到精细网格的内插误差。听起来固执,但这与您所解释的有所不同吗?
AlanH

1
T=IP1Aen+1=Ten
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.