Homework1:2D Thermal (time implicit) and Poisson solver based on FDM with CG and MGPCG

具体代码在已经上传git: GitHub - Trigolds/TaichiX: Taichi projects of Trigolds
里面有4个独立的程序:Poisson_CG, Poisson_MGPCG, Thermal2D_CG和Thermal2D_MGPCG.
关于Poisson,本质上是一个基于共轭梯度法(Conjugate Gradient)的有限差分(FDM)求解器。
程序中的例子是求解Poisson方程: Poisson(x,y) = 10.0.
这个方程的解析形式是:f(x,y) = 2x**2 + 3y**2
程序最后会打印出解析解和数值解做对比。
另外一个带MGPCG的程序则是在CG基础之上加入了multi-grid方法。
例子给出的是V cycle,可以选择两种smoother: Jacobi and Gauss–Siedel。
有兴趣的同学可以对比一下MGPCG和CG,以及不同smoother对收敛性的影响。
Thermal2D则是基于Poisson的2D非稳态扩散求解器,模拟四周边界高温传导到内部低温的过程。
采用隐式时间离散格式(back-euler)。
结果如下图:
GIF 7-11-2020 9-55-17 PM

4 个赞