边界条件: 两边v都等于0。u=0左右底部,u= BC顶部的上盖速度 数值方法: 用于解决速度-压力耦合的简单算法。交错网格u和v的交错网格索引如何工作,请查看“Versteeg, Malalasekera:计算流体动力学导论”教科书。控制方程的离散化是以这本教科书为基础的。每次迭代都用Jacobi方法更新u和v。每次迭代采用五对角矩阵算法直接求解压力修正方程。适当选择收敛所需的欠松弛因子。Jacobi方法是求解这类问题效率最低的方法,但它简单易行。你被鼓励应用其他的迭代方法,如逐行TDMA,猜想-赛德尔,多重网格或SOR更快收敛。 压力校正: 我经常看到人们在用简单算法求解压力校正方程时遇到困难,因为P'的bc不清楚。以下是解决方法: 压力是一个相对的概念。因此,将定义域内一个节点的压力设为零作为边界条件,其他节点相对于该点的压力将被测量。设置P(1,1)=0是一种常见的做法,因为P(1,1)已知P'(1,1)=0,但你需要在其他节点上计算P'很明显,对于一个位于底壁上的P'点,aS = 0,因为在它下面没有P'节点,但它有aW,aE,aN。其他边界P'值将这样设置。你会得到一个由系数组成的五对角矩阵。 我已经使用PETSc (C语言)并行编写了这段代码。我很快就会把它上传到GitHub上。它比这个版本快得多,因为: 1)它是并行的而不是串行的,所以你可以你可以使用多个处理器。 2) C版本通过迭代几次来求解动量方程,而MATLAB版本只做了一次Jacobi扫描。 3)最重要的是PETSc采用Krylov子空间迭代法(类型:GMRES),同时使用预调节器(我发现添加剂Shwartz PC最好)求解动量和压力修正,在收敛速度上比Jacobi方法更高效。
0 ]: D2 b0 B: d1 C3 F, z$ _; y/ P: ?. |, O- {$ s. f# q6 b9 p6 c
|