我正在尝试解决非结构化网格上的欧拉方程。因此,问题归结为解决稀疏矩阵的Ax=b位置。A知道我以串行方式使用 Gauss-Seidel (GS) 但是,我需要一个并行代码。由于网格是非结构化的,我不能使用红黑 GS。这种情况有没有快速的并行求解器?
非结构化网格上稀疏矩阵的并行求解器
计算科学
并行计算
稀疏矩阵
非结构化网格
2021-12-15 18:44:53
3个回答
我建议使用 PETSc,它具有 GMRES、bi Conjugate Gradient 等并行求解器。还可以使用多个预处理器。此外,还可能有 SNES 非线性求解器的选项。至于哪一组求解器+预处理器组合效果最好,它可能是特定于问题的。PETSc 将允许您轻松地在它们之间切换。
您可能还希望考虑使用 FEniCS+PETSc。使用 FEniCS,您可以指定方程的弱形式,它会计算出如何为您组装矩阵。FEniCS 与 PETSc 求解器连接以进行计算。事实上,对“petsc euler equations”的简单谷歌搜索会产生以下链接:http ://www.csc.kth.se/~jjan/transfer/reportMHAF.pdf 。在附录中,您可以看到 FEniCS 源代码来执行线性化欧拉方程(以及不可压缩的 Navier Stokes 方程)。
如何求解稀疏线性系统的问题在计算科学中无处不在。一般来说,方法越好,实施起来就越困难和复杂。我怀疑 AMG(代数多重网格)将是解决您描述的问题的最佳方法,因为多重网格方法是目前解决线性系统最快的方法之一。但是,如果您自己实现它,它将比您当前的 GS 困难得多(尤其是并行)。如果您只是在寻找一个包裹,那么我会使用基里尔的答案。至少我会按照上面的建议甚至 SOR 研究 GMRES 或 BiCGStab。您绝对可以找到比 GS 更快的方法。
其它你可能感兴趣的问题