我正在研究使用双时间步进的流体求解器,一切运行良好,除了伪时间的收敛速度很慢。我想加速收敛。我知道通常使用多重网格方法,但我正在考虑探索另一种方法,希望它更容易实现。
我开始阅读有关序列收敛加速的文献。在这种情况下,我的序列是伪时间 Navier-Stokes 方程的更新解,如果一切顺利,序列收敛到一个常数场(或者,伪时间导数收敛到零)作为无限数量采取了措施。我在这方面的阅读使我了解了矢量外推方法和相关算法,但我不确定有几点。
为了论证起见,考虑降秩外推法 (RRE) 方法。该算法可在本报告的表 3.1 中找到。总之,您收集了一组解向量(在一个时间步长上求解您的方程并存储更新的值)。然后,计算解的导数(或者实际上只是存储来自流体求解器的增量,因为无论如何这都是我们计算的),结果向量成为一个大矩阵中的列。找到这个大矩阵的 QR 分解并解决最小二乘问题,并使用结果推断您的解向量。希望你的收敛加速。
首先,在这种情况下,这些真的有帮助吗?我认为他们可以,但我对这一切有点模糊。
其次,这些方法可以在本地应用还是需要同时应用于模拟中的所有单元?我读过的所有内容都显示了解决方案向量。但不知道是不是长,或者如果我可以在每个单元格中进行 QR 分解以获得外推向量。在大规模并行模拟中,逐点分解和全域分解之间的成本存在很大差异。链接的报告说它可以在子域上完成,这似乎暗示它至少是一个“区域”(如,不是逐点但至少在处理器内)QR 分解。