请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 623|回复: 0

[代码资源] 【源码】2D Lid驱动腔流使用简单算法

[复制链接]
字体大小: 正常 放大

477

主题

4

听众

1394

积分

  • TA的每日心情

    2021-1-13 09:31
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2021-1-1 09:05 |显示全部楼层
    |招呼Ta 关注Ta

    边界条件:

    两边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方法更高效。

    1 V/ s& m) _0 Q# f! o, \. A4 [% ^( `
      e9 J) ?8 y5 P# K

    cavityFlow2D.zip

    7.84 KB, 下载次数: 0, 下载积分: 体力 -2 点

    售价: 1 点体力  [记录]

    zan
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2021-2-27 23:21 , Processed in 0.767416 second(s), 54 queries .

    回顶部