并行系统上的最优不连续 Galerkin (DG) 求解器

计算科学 有限元 并行计算 不连续-galerkin
2021-12-18 08:41:28

我正在寻找在并行系统上实现 DG 的最佳方法。在我的研究中,我遇到了两种类型的问题。

对于第一个问题,我正在解决一个与时间无关的(稳态)边值问题。我最终得到刚度矩阵乘以我的未知数向量等于体积积分源函数的向量。在这种情况下,在我看来,我必须将系统作为一个整体来求解,因为表面通量隐含在相邻解中。

对于第二个问题,我正在解决一个与时间相关的初始值问题。在应用显式时间离散化方案后,我最终得到了质量矩阵,我必须将其反转并乘以刚度矩阵的向量乘以前一个时间步的解向量加上我的体积积分源项。在这种情况下,在我看来,我不必将系统作为一个整体来求解,因为上一个时间步的表面通量是已知的,并且可以根据需要传递给每个本地系统。

我目前在全球范围内解决这两种情况。相反,是否可以在每个单元上本地解决这两种情况?对我来说,这似乎极大地提高了并行效率(通过域分解),而不是尝试解决全局系统(尽管可以使用 Trilinos 或其他库来实现一些并行性来执行稀疏矩阵运算)。

谢谢!

1个回答

对于双曲线问题,使用 DG 求解与时间相关的问题通常非常快(由于 CFL 条件,扩散型问题可能会更加困难),并且是 Hesthaven/Warburton 的《节点间断 Galerkin 方法》一书中大部分内容的主题. 这本质上是并行的,并且可以使内存效率和可扩展性非常高(例如,参见 Warburton 关于 GPU 上节点 DG 的论文)。

求解隐式/稳态方程更加微妙,或者至少有更多选择。使用迭代方法求解 DG 系统(CG 表示对称、正定算子或一般的 GMRES)和良好的预处理器通常是实现良好并行可扩展性的方法。一些预处理器比其他的更可扩展/更有效,预处理器的最佳选择可能取决于您的问题和硬件的细节。

一些流行的 DG 预处理器包括重叠/非重叠加性 Schwarz 方法以及一些粗网格求解器和代数或几何多重网格。像 ILU 或稀疏近似逆 (SPAI) 方法这样的黑盒代数求解器也可以做得很好,尽管它们的可扩展性有点多变。

您提到了域分解(DD);有趣的是,对于 DG,非重叠 Schwarz 方法与具有特定传输条件的标准 DD 方法相当接近(参见Gander 和 Hajian 的这篇论文)。