图片缩略图

基于SIMPLE算法的二维盖驱动空腔流动

版本1.1.0 (7.59 KB) 乔丹Sarfi
用SIMPLE算法求解了经典的盖驱动空腔稳态流动问题。
5.0
7评级

58下载

更新08年8月2018年

视图版本历史

查看许可协议

边界条件:

V =0。u=0在右,左,下,和u=盖子速度在顶部BC

数值方法:

求解速度-压力耦合的简单算法。要了解交错网格中的索引工作原理,请查看“Versteeg, Malalasekera:计算流体动力学简介”教科书。控制方程的离散化是以本书为基础的。每次迭代都用Jacobi方法更新u和v。每次迭代均采用五对角矩阵算法直接求解压力修正方程。收敛需要正确选择欠松弛因子。对于这类问题,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'值将以这种方式设置。你最终会得到一个五对角线系数矩阵。

我已经写了这个代码在并行使用PETSc (C语言)。我将很快在GitHub上上传它。它比这个版本快得多,因为:
它是并行的,而不是串行的,所以你可以使用多个处理器。
2) C版本通过迭代几次解决动量方程,不像MATLAB版本只做一个雅可比扫描。
3)最重要的是,PETSc采用了Krylov子空间迭代法(类型:GMRES),同时还使用了pre冷气机(我发现Additive schwartz PC最好)来求解动量和压力校正,这在收敛速度上比Jacobi方法更高效。

引用作为

乔丹Sarfi(2021)。基于SIMPLE算法的二维盖驱动空腔流动(//www.tatmou.com/matlabcentral/fileexchange/68348-2d-lid-driven-cavity-flow-using-simple-algorithm), MATLAB中央文件交换。检索

意见及评分(14

Sambit Supriya破折号

我有个问题,这个问题中考虑了什么压强边界条件?
如果有人能说清楚,那就太好了。

马克

@atafiroozi -当压力松弛参数减小时,解将收敛。当网格被细化时,这个值必须进一步减小。
@sanjana malaimagal基于有限体积法

佳娜malaimagal

有人会说,离散化是基于有限差分法还是有限体积法

你好,我认为弛豫不能在速度场中使用,只能在p*中使用

深Morzaria

谁能告诉我为什么动量方程中的速度是明确计算出来的?难道它们不应该同时使用相邻的速度来计算吗?

明明张

@domenico bianchi Hi,他/她用C/ c++优先编写MATLAB代码,所以列优先和行优先有时会让人困惑:)

川西王

太棒了!

默罕默德

罗宾

伟大的工作!
对于未来的更新,当您初始化Ap为稀疏(N,N),而不是零(N,N)时,每次迭代将会快75%左右。

多梅尼科比安奇

在系数文件的矩阵中,我认为可变位置应该使用可变stride=imax来评估,而不是像你写的那样stride=jmax。在您的代码中imax=jmax是偶然的,但显然,如果需要更改,您必须使用正确的stride值。你能查一下吗?

atafiroozi

这段代码在Re=1000时不收敛,我不知道为什么。
我很感激你的帮助。

Yerkanat aydarken

约ch

MATLAB版本兼容性
创建R2018a
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区可以如何帮助您!

开始狩猎!