cfd软件中用到了哪些常用的矩阵库?



  • 最近想重新用c++写一个求解器,对于矩阵的求解这块之前用的是自己编的代码,用高斯迭代法求解,算法十分慢。在我与openfoam计算时间的比较中发现自己的算法比他们慢很多倍。我觉得矩阵的求解方法是重要原因。求教如openfoam、su2这类软件中或者其他朋友的in house code用的矩阵是用什么方法求解的?有没有哪位高手推荐一个适合cfd算法的矩阵库


  • OpenFOAM教授

    @搬运工 CFD 中的矩阵都是大型稀疏矩阵,直接求解代价太大,因此一般都是给初值迭代求解。



  • 你写的可压还是不可压求解器?如果是不可压,方程分离式求解,按照OpenFOAM给的方法写就可以。
    如果是可压的话,高斯迭代法还是太慢,现在最火的是LU-SGS法。



  • @搬运工

    高斯迭代法处理20阶矩阵就已经非常慢了。通常和多重网格+高斯赛德尔求解器一起处理。并且OpenFOAM这种成熟的商软里面矩阵求解器算法非常精炼。通常由主求解器+预处理+光顺+重组构成。多重网格更是复杂。另外,在编程的时候使用动态、寻址的方法寄存系数。

    所以如果你要写一个快速的求解器:

    1. 使用外挂包;
    2. 潜心研究稀疏线性系统求解理论;我建议花大量时间研读:YousefSaad, 2003。看看大型稀疏矩阵怎么求解的。而不是3/4阶矩阵的高斯塞德尔求解器。:cheeky:

Log in to reply