边界条件:
所有边的V都是0。u=0左右和底部,u=顶部BC的盖子速度
数值方法:
用于解决速度-压力耦合的简单算法。要了解在交错网格中索引是如何工作的,请查看“Versteeg, Malalasekera:计算流体动力学介绍”教科书。控制方程的离散化是基于这本教科书。u和v在每次迭代中都用Jacobi方法更新。在每次迭代中,采用五对角矩阵算法直接求解压力修正方程。收敛所需的欠松弛因子的正确选择。Jacobi方法是解决这类问题效率最低的方法,但它简单易解。我们鼓励您应用其他迭代方法,如逐行TDMA、Guess-seidel、多重网格或SOR,以更快地收敛。
压力校正:
我经常看到人们用SIMPLE算法解决压力修正方程,因为P'的bc不清楚。以下是解决方法:
压力是一个相对的概念。因此,作为边界条件,将域中一个节点的压力固定为零,其他节点的压力就会相对于那个点进行测量。通常的做法是让P(1,1)=0,因为P(1,1)已知P'(1,1)=0,但你需要在其他节点计算P'。很明显,对于底部壁上的P'点aS = 0因为它下面没有P'节点但它有aW aE aN。其他边界P'值将这样设置。你会得到一个五对角系数矩阵。
我用petc (C语言)并行编写了这段代码。我很快会把它上传到GitHub上。它比这个版本快得多,因为:
它是并行的而不是串行的,所以你可以使用多个处理器。
2) C版本通过迭代几次来解决动量方程,不像MATLAB版本只做一次雅可比扫描。
3)最重要的是,PETSc采用了Krylov子空间迭代法(类型:GMRES),并使用了预调节器(我认为Additive Shwartz PC最好)来求解动量和压力校正,在收敛速度上比Jacobi方法更有效。
乔丹Sarfi(2021)。基于SIMPLE算法的二维盖驱动空腔流动(//www.tianjin-qmedu.com/matlabcentral/fileexchange/68348-2d-lid-driven-cavity-flow-using-simple-algorithm), MATLAB中央文件交换。检索.