是否有任何方法可以将微小的更改合并到已求解的网格中以加快粒子单元求解器的收敛速度?

计算科学 迭代法 电磁学 多重网格
2021-12-02 23:17:20

我正在尝试执行106在相当大的网格上进行时间步长静电粒子单元模拟,计算资源非常有限(单个 GPU)。由于大量的时间步长以及每个时间步长都重新求解网格这一事实,这需要一段时间。

使用基于小波的泊松求解器的 Particle-in-cell 光束动力学模拟中,Terzic 等人提出了一个非常有趣的建议:

一个这样的优势是能够使用前一个时间步的解作为在一个时间步后求解泊松方程时使用的初始近似值:这个简单的想法被发现对收敛的迭代次数有显着影响......

在 PIC 仿真中使用迭代求解器的第三个优势来自于仿真过程本身的性质:泊松方程重复求解,每个仿真时间步一次,源项从一个求解到下一个求解仅略有变化。这意味着每次求解泊松方程时,上一个时间步的解都可以作为解的合理初始近似,收敛到解所需的迭代次数将显着减少。

这似乎可以节省大量时间,尤其是因为从一次到另一次的变化可能只会影响光束周围的几个单元。

不幸的是,基于 FFT 的技术有一些缺点,包括难以处理内部边界。

有没有办法用传统的非小波求解器(如多重网格)来实现这种“智能初始近似”增量?这是我刚刚错过的常用技术吗?

1个回答

每个迭代求解器(Jacobi、SSOR、CG 等)都从初始近似值开始。经常只使用零向量,但使用上一时间步的解并没有错。事实上,从之前的时间步长推断到当前时间步长是一个更好的主意——作者显然错过了这个主意!

对于一些迭代求解器,使用良好的初始猜测可以显着减少达到某个容差所需的迭代次数。这似乎特别适用于定点迭代(上面列表中的 Jacobi,SSOR),但它对 Krylov 空间方法(上面列表中的 CG)的迭代次数影响很小。