完全多重网格收敛速度太慢。可能是什么原因造成的?

计算科学 多重网格
2021-12-04 23:32:21

我已经在 Matlab 中编写了完整的多重网格,但它的收敛速度似乎不够快。当我增加网格数或迭代次数时,它会收敛到解析解。但是 FMG 不应该需要那么多迭代,它甚至应该适用于更少的网格。

我意识到这是一个非常模糊的问题,但是有什么想法为什么会这样吗?

1个回答

我假设您正在解决一个很好的椭圆问题,例如具有平滑系数的拉普拉斯算子。(您应该始终首先检查此友好设置中的收敛性。)

  1. 确认插值是必要的准确。以顶点为中心的 MG 通常的规则是插值和限制阶数之和至少应与算子的阶数一样高,最好更高。对于以细胞为中心(聚集)的粗化,这一要求减少了一个数量级。对于 FMG,您应该在第一次访问精细网格时使用更高阶的插值(当您传输完整的解决方案而不仅仅是更正时)。您可以使用分析函数验证准确性顺序。
  2. 检查平滑器是否稳定并正确阻尼(如果适用)。在结构化网格上,您可以确认平滑器的性能与本地傅立叶分析的分析预测相匹配。
  3. 检查两个网格收敛因子是否与局部傅里叶分析的预测相匹配。(用解析解来解决问题,甚至解决Ax=0初步猜测x0.)
  4. 检查以上是否满足具有两个以上网格的 V 循环。
  5. 检查您是否在一个 F 循环中达到离散化错误。

有关上述问题的更多详细信息和更深入的信息,请参阅Achi Brandt 的多重网格指南。您可能还会发现此建议很有帮助。