使用 MPI 的并行 2d 热方程(隐式时间步长)

计算科学 pde 正则 mpi
2021-12-05 22:01:06

我试图用向后欧拉时间步长和二阶空间有限差分来求解时间相关的热方程。这导致需要倒置泊松系统。在串行中,这很容易解决,但我不确定如何与 MPI 并行进行。有谁知道如何用 MPI 求解 2d 热方程(隐式)?我正在使用一维并行化。我在网上寻找了不同的并行求解器,但很难找到一篇真正清楚地解释如何实现这个问题的论文。任何参考资料都会有所帮助。

注意:我真正解决的是二维热方程,其中我在周期性水平和垂直的二阶有限差分中使用光谱微分(fft)(所以我在顶部和底部边界指定 dirichlet BC)。我通过将域分解为水平行的条带来并行化我的域,这样计算全局 fft 对每个进程来说都是微不足道的。然后我试图解决一个基本上是垂直方向的修正热方程系统。如果我的域被分解为由行带组成的列组,那么这将是微不足道的,因为它相当于解决一堆三对角系统。我可以做的一件事是进行 MPI_ALLTOALL 调用,解决每个进程上的三对角系统,然后 MPI_ALLTOALL 回调,但这是通信密集型的。

1个回答

使用 PETSc 或 Trilinos 等库。它们为您提供并行线性系统的数据结构和可以在它们上工作的算法,例如 CG 或 GMRES 的并行实现。PETSc 手册提供了有关如何使用所有这些的大量示例。我很确定,实际上甚至有一个教程程序已经让你达到了 90%。