我编写的多重网格代码有问题。如果我在 2D 中求解拉普拉斯方程并使用超过 5 个网格级别,则 V 循环会在几个循环后停止收敛(见下文,收敛因子 > 1)。在网格级别 3,您可以看到递归 V 循环实际上增加了误差(缺陷的 L2 范数)。如果我使用较少的网格级别,我的代码会按预期收敛。我怀疑这是边界条件的问题,因为在 V 周期 2 之后,靠近边界的缺陷非常高。
对于狄利克雷边界,我将鬼点添加到最精细的网格以保存边界值。当我限制缺陷时,我将粗网格鬼点处的缺陷值设置为零。我还有什么需要担心的吗?
V-CYCLE 1
LEVEL ACTION ERROR
1 Initial 4.566101e-01
1 Relaxation sweep 1 1.375412e-01
2 Initial 4.264610e-02
2 Relaxation sweep 1 2.082439e-02
3 Initial 1.580465e-02
3 Relaxation sweep 1 9.881322e-03
4 Initial 8.008788e-03
4 Relaxation sweep 1 5.150501e-03
5 Initial 4.121322e-03
5 Relaxation sweep 1 2.643638e-03
5 Relaxation sweep 400 1.525026e-18
5 Coarse grid corr. 4.253979e-03
5 Relaxation sweep 1 1.356265e-03
4 Coarse grid corr. 1.301027e-02
4 Relaxation sweep 1 4.956990e-03
3 Coarse grid corr. 3.427880e-02
3 Relaxation sweep 1 1.421168e-02
2 Coarse grid corr. 8.532111e-02
2 Relaxation sweep 1 3.721634e-02
1 Coarse grid corr. 2.409762e-01
1 Relaxation sweep 1 1.022146e-01
CONVERGENCE FACTOR: 0.223855
V-CYCLE 2
LEVEL ACTION ERROR
1 Initial 1.022146e-01
1 Relaxation sweep 1 6.796567e-02
2 Initial 5.807979e-02
2 Relaxation sweep 1 4.311037e-02
3 Initial 3.733848e-02
3 Relaxation sweep 1 2.717026e-02
4 Initial 2.302219e-02
4 Relaxation sweep 1 1.627633e-02
5 Initial 1.341552e-02
5 Relaxation sweep 1 9.233742e-03
5 Relaxation sweep 400 5.981442e-18
5 Coarse grid corr. 1.660509e-02
5 Relaxation sweep 1 5.472094e-03
4 Coarse grid corr. 4.952103e-02
4 Relaxation sweep 1 1.951415e-02
3 Coarse grid corr. 1.255826e-01
3 Relaxation sweep 1 5.395197e-02
2 Coarse grid corr. 2.973566e-01
2 Relaxation sweep 1 1.349677e-01
1 Coarse grid corr. 6.812406e-01
1 Relaxation sweep 1 3.210040e-01
CONVERGENCE FACTOR: 3.140491