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. PISO算法讨论

PISO算法讨论

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

    岳子老师,我最近看了一些关于PISO算法的资料,有些疑问想跟您请教。SIMPLE算法略去相邻网格的速度修正值,PISO算法的核心是考虑了这部分,并且采用两次修正的方式来求解速度修正方程。第一次修正相当于SIMPLE算法,得到所有网格的速度修正值,进行第二次修正。
    在您写的不可压+瞬态这篇文章里,PISO算法部分好像并没有体现两次修正,那么怎么能体现出这是PISO算法呢?

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

    SIMPLE算法略去相邻网格的速度修正值,PISO算法的核心是考虑了这部分,并且采用两次修正的方式来求解速度修正方程

    哪个资料说的

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    Y 1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 是这本书上说的
    c5792ebf-5769-4d40-a49f-8a37af4a9971-image.png
    6b6c9932-14db-4d89-adde-3f75a5a59f6f-image.png
    e90a7bcd-a487-49ee-9881-1ec29bd224db-image.png
    c9a53089-c705-40f6-a68b-26b62bc7e881-image.png

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

    122页画红线那个,我不觉得是他写的那样。OpenFOAM里面的PISO同样略去了临点。

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    Y 1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #5

    @李东岳 老师,这就是我想请教您的。我看您在用户手册上写到过,您跟的Issa讨论过PISO算法,那么openfoam中的PISO是Issa提出的那样吗?还是PISO算法发展到现在已经有很多变体了。

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

    我之前见过weller说过:至少rhoPimpleFoam这个求解器,是Henry Weller完全自己推出来的。没参考任何资料。

    我看过1985年原生的PISO算法,现在有点忘了,我只记得OpenFOAM的pisoFoam的算法。大略看一眼的话,OpenFOAM跟原生的PISO有区别,你看原生的PISO湍流模型就知道。

    9月CFD算法编程课: http://dyfluid.com/class.html

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

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

    如果这本书是你买的,你可以给他发邮件问一下他书里面说的,OpenFOAM中的pisoFoam,哪里体现了并没有略去临点的思想。

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    Y 2 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #8

    @李东岳 好的老师。再向您请教个问题,icoFoam里面,fvSolution下定义了pRefCell和pRefValue,在求解方程中用到的p是已经减去这个值的吗?

    Y 1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 yjc95 最后由 编辑
    #9

    @yjc95 老师,我看源代码解决这个问题了,是先减去参考点的值再求解压力方程。

    1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #10

    @李东岳 老师,还有几个问题向您请教。

    1.

    $ \triangledown p $离散后为啥要除以体积?
    62aa6a52-6d70-4355-abe3-3b862c9c1e8f-image.png

    2.

    这三段代码对应的应该是(3)、(4)、(5)都除以$ \Delta t$ 吧?
    05a3286c-2e1d-451b-9eac-6a9ce7efccbf-image.png

    3.

    icoFoam.C源代码中,

            if (piso.momentumPredictor())
            {
                solve(UEqn == -fvc::grad(p));
            }
    
    // Non-orthogonal pressure corrector loop
                while (piso.correctNonOrthogonal())
    

    中piso.momentumPredictor()和piso.correctNonOrthogonal()是在哪个文件中定义的?constant和system两个文件夹下没找到。

    4.

    icoFoam.C源代码中,HbyA的定义为啥是HbyA(constrainHbyA(rAU*UEqn.H(), U, p)),constrainHbyA啥意思?

    5.

    组建phiHbyA用到的 fvc::flux(HbyA) + fvc::interpolate(rAU)*fvc::ddtCorr(U, phi)是啥意思呢?

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #11
    1. 方程就是这样离散的
    2. 已更新
    3. fvSolution
    4. 参考无痛苦笔记
    5. ddtCorr确保时间步更小的时候结果正确,算法我还没看

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    Y 1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #12

    @李东岳

    1. 方程(27)等号右边等于
      \begin{equation}
      \Delta t \int_{}^{}\frac{1}{A}\bigtriangledown pd\textbf{S}
      \end{equation}

    \begin{equation}
    =\Delta t\sum \frac{1}{A_{f}}(\bigtriangledown p)_{f}\cdot \textbf{S}
    \end{equation}
    面上压力梯度咋就变成了方程(26)矩形框的那部分?

    3.cavity案例的fvSolution里p-preconditioner DIC对应piso.momentumPredictor,因为有DIC这一设置,所以if为真,执行动量预测步。同样在fvSolution里,PISO-nNonOrthogonalCorrectors 0对应的应该是piso.correctNonOrthogonal,但值为0,while语句不执行,就不会求解压力方程了。但运行该案例,是有求解压力的。

    4.无痛苦笔记中没有关于constrainHbyA的解释。

    Y 2 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #13

    你得方程2,里面的$\nabla p$还需要继续化简

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    Y 1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #14

    @李东岳 在 PISO算法讨论 中说:

    你得方程2,里面的$\nabla p$还需要继续化简

    我就想问该怎么化简呀0.0

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

    化简成26行括号里面的形式

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    Y 1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #16

    @李东岳 在 PISO算法讨论 中说:

    化简成26行括号里面的形式

    这样化简的原理是啥呀?没想明白

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

    $\nabla p=\frac{1}{V}\int \nabla p \rd V$ 是基本的离散法则。我向你推荐算法课 http://dyfluid.com/class.html

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    Y 2 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #18

    @李东岳 在 PISO算法讨论 中说:

    $\nabla p=\frac{1}{V}\int \nabla p \rd V$ 是基本的离散法则。我向你推荐算法课 http://dyfluid.com/class.html

    好的:140:

    1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 李东岳 最后由 编辑
    #19

    @李东岳 在 PISO算法讨论 中说:

    $\nabla p=\frac{1}{V}\int \nabla p \rd V$ 是基本的离散法则。我向你推荐算法课 http://dyfluid.com/class.html

    老师,我突然想明白了,$\bigtriangledown p$是定义在体心上的,当然就等于控制体内各处压力梯度的值之和除以体积了。脑子一下子短路了(T_T)

    1 条回复 最后回复
  • Y 离线
    Y 离线
    yjc95
    在 中回复了 yjc95 最后由 编辑
    #20

    @yjc95 在 PISO算法讨论 中说:

    @李东岳

    1. 方程(27)等号右边等于
      \begin{equation}
      \Delta t \int_{}^{}\frac{1}{A}\bigtriangledown pd\textbf{S}
      \end{equation}

    \begin{equation}
    =\Delta t\sum \frac{1}{A_{f}}(\bigtriangledown p)_{f}\cdot \textbf{S}
    \end{equation}
    面上压力梯度咋就变成了方程(26)矩形框的那部分?

    3.cavity案例的fvSolution里p-preconditioner DIC对应piso.momentumPredictor,因为有DIC这一设置,所以if为真,执行动量预测步。同样在fvSolution里,PISO-nNonOrthogonalCorrectors 0对应的应该是piso.correctNonOrthogonal,但值为0,while语句不执行,就不会求解压力方程了。但运行该案例,是有求解压力的。

    4.无痛苦笔记中没有关于constrainHbyA的解释。

    老师,问题3,piso.correctNonOrthogonal对应的是fvSolution下的PISO-nCorrectors,因为我把这一行注释之后报错了。

    1 条回复 最后回复

  • 登录

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