Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 如何加速压力求解器收敛

如何加速压力求解器收敛

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 3 发布者 3.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    写于 最后由 编辑
    #1

    使用interFoam计算气泡槽道流,发现压力求解器的收敛速度比较慢。
    已经使用过两种方法:

    第一种是GAMG求解器,在大部分情况下效率都比较好。但是在一些算例中,气泡贴近壁面,很多气泡间产生了斥力,斥力是作为一个源项添加到动量方程UEqn当中的,见 https://cfd-china.com/post/37476。
    斥力在许多气泡之间产生之后,可以明显感觉到GAMG求解器迭代次数增加,消耗时间变长。

    p_rgh
        {
            solver          GAMG;
            tolerance       1e-09;
            relTol          0.002;
            smoother        GaussSeidel;
        }
    p_rghFinal
        {
            $p_rgh;
            tolerance       1e-8;
            relTol          0;
        }
    

    于是使用了第二种PCG求解器,仅在“斥力在许多气泡之间产生”这一情况下表现好一些。

    p_rghFinal
        {
            solver          PCG;
            preconditioner
            {
                preconditioner  GAMG;
                tolerance       1e-8;
                relTol          0;
                nVcycles        2;
                smoother        DICGaussSeidel;
                nPreSweeps      2;
            }
            tolerance       1e-08;
            relTol          0;
        }
    

    比如下面这张图,在将GAMG求解器替换为PCG之后,迭代次数大大减小,计算速度也变大(子图上面的紫色线,在10000迭代步之前有个转折,转折之前,每计算一步需要的执行时间ExecutionTime越来越大,转折之后紫色线斜率基本固定,每计算一步需要的执行时间基本固定)。
    50c91403-4d5c-4d26-b12d-5f606ac3b390-image.png


    我的问题是:

    1. 我现在的库朗数和界面库朗数都是0.5,敢放松库朗数的限制以使用大时间步长吗?

    2. 有什么方法可以加快压力求解器的收敛吗?有什么推荐压力求解器?或者PIMPLE算法的一些设置?目前的PIMPLE设置是这样的:

    PIMPLE
    {
        momentumPredictor no;
        nOuterCorrectors 1;
        nCorrectors     3;
        nNonOrthogonalCorrectors 0;
    }
    

    求各位大佬指教!🙏🙏

    C 1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 学流体的小明 最后由 编辑
    #2

    @学流体的小明 前段时间我用PIMPLE,发现设置momentumPredictor no;,结果会不准确还容易发散。改为momentumPredictor yes;,并且设置nCorrectors 2;

    根据李老师的解析,nOuterCorrectors要设置大一点,可以CFL大于1。但根据我的计算momentumPredictor要设置为yes,否则结果不太准确

    d5147a57-057b-40c6-8201-c6bd0c95e627-image.png
    5e295269-6579-42da-941f-58bd8faf951d-image.png

    李东岳李 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 coolhhh 最后由 李东岳 编辑
    #3

    @coolhhh 他这个吧,多相流比较不好整。尤其是要对alpha进行推进。大库朗数风险还是太大了。

    根据李老师的解析,nOuterCorrectors要设置大一点,可以CFL大于1。但根据我的计算momentumPredictor要设置为yes,否则结果不太准确

    这个我还没详细研究。不过我可以把你的发现更新在我的网站上。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    写于 最后由 编辑
    #4

    谢谢两位老师讨论。
    我还是比较接受李老师的意见,不敢把库朗数增大。
    压力求解器能想办法让收敛快一些吗?

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #5

    压力求解器那个也没有。不过你可以试试metis分解。这个比scotch计算的要快。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    学流体的小明学 1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 李东岳 最后由 编辑
    #6

    😅我自己写的程序必须是simple的分解,scotch都不能用,更不用说metis了

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]