对于 Navier-Stokes 的给定不连续 galerkin (DG) 实现,目标是 10,000 到 1,000,000 个 3D 4 阶单元,我在后端使用 PETSc 的线性/非线性求解器套件。在我看来,隐式求解离散化有两种广泛的方法。可以以稀疏格式显式地形成雅可比矩阵并使用任何可用的工具来求解它,或者使用雅可比自由牛顿-克雷洛夫方法,通过有限差分评估右手边来近似雅可比向量乘积。我看到的每个优点和缺点:
显式雅可比行列式
- 缺点 - 需要大量内存(确切地说是多少?我可以用 <100GB 的总内存来做到这一点吗?)
- Con - 需要编写代码来评估雅可比并存储它
- Pro - 允许使用 PETSc 中已经存在的黑盒预处理器
无雅可比牛顿-克雷洛夫
- Pro - 最小的内存需求
- Con - 不知道重新线性化的频率或使用的有限差分步骤,重新启动的频率等。
- Con - 必须编写自己的前置条件。
我想从那些更熟悉这些方法的人那里得到一些关于它们的优缺点的意见。我是否正确假设显式雅可比会更快?