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
25 帖子 11 发布者 28.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Y 离线
    Y 离线
    yuan_neu
    在 中回复了 李东岳 最后由 编辑
    #15

    @李东岳

    重新看了一下icoFoam,恍然大悟。因为通过压力的修正,速度也得到更新。H 操作相当于也更新了HbyA。
    但是貌似这种求解思路与原始的piso算法还是有些区别的。最明显的是,没有了二次修正。我对此的理解是,因为icoFoam里面没有忽略掉式7-39(computational methods for fluid dynamics P175)右边的第二项,
    0_1489643730610_upload-27534b17-accf-4624-8809-3469da030b9e
    所以这个二次修正式可以省略。

    请问这样的理解对吗?

    赵 1 条回复 最后回复
  • 赵 离线
    赵 离线
    赵一铭
    在 中回复了 yuan_neu 最后由 编辑
    #16

    @yuan_neu 这个是压力修正方程,和icoFoam完全对不上啊。

    1 条回复 最后回复
  • 赵 离线
    赵 离线
    赵一铭
    在 中回复了 李东岳 最后由 编辑
    #17

    @李东岳 在 关于piso循环的二次修正的一个疑问 中说:

    Jasah建议一般情况下不进行压力非矩形修正,

    http://www.cfd-china.com/topic/840/运行出错/5
    好像这个帖子里面进行非正交修正解决问题了?

    1 条回复 最后回复
  • D 离线
    D 离线
    duo
    写于 最后由 编辑
    #18

    请教一下,大家想要了解piso循环的算法是可以理解的,但是大多数情况下piso循环部分的代码好像并不需要修改,我理解只要写出正确的UEqn就可以了,piso循环对于一般的UEqn都是适用的,是这样吗?什么情况下需要修改piso循环中的代码呢?谢谢!

    1 条回复 最后回复
  • 赵 离线
    赵 离线
    赵一铭
    写于 最后由 编辑
    #19

    我觉得UEqn并不是重要的,更重要的是pEqn,有的时候UEqn并没有求解...

    1 条回复 最后回复
  • 程 离线
    程 离线
    程迪
    在 中回复了 hongfu2233 最后由 编辑
    #20

    @hongfu2233
    非正交修正是这样的:

    • fvm::laplacian返回的是fvMatrix,fvMatrix既包含矩阵M,又包含源项b。
    • fvc::laplacian返回的volScalarField,相当于只有b,没有M。

    非正交修正是把laplacian算子分成正交部分和非正交部分

    • 对于fvc而言,反正两部分最后要加在一起,无所谓啦,都一样;
    • 而fvm只能对正交部分进行隐式离散,相关的系数进入矩阵M(并非不能对非正交部分进行隐式离散,而是这样的话M矩阵就不是和mesh对应的lduMatrix相同的稀疏结构了),非正交部分显式离散,进入源项b中。
    • 这种伎俩叫延迟修正(deferred correction),我看来其实就是部分隐式部分显式的离散。

    部分显式部分隐式的离散会带来信息滞后的问题,比如说$\Delta p^{(n)} = s$方程整成了$L_I(p^{(n)})=s - L_E(p^{(n-1)})$,虽然$\Delta p^{(n)} = L_I(p^{(n)})+L_E(p^{(n)})$,但是$\Delta p^{(n)} \ne L_I(p^{(n)})+L_E(p^{(n-1)})$,除非$p^{(n)}=p^{(n-1)}$,也就是$p$已经收敛

    所以说对于fvc而言,这没有任何问题,但对于fvm而言,你一次求解只能求得:$p^{(n)}=L_I^{-1}(s - L_E(p^{(n-1)})) \ne \Delta^{-1}(s)$,这个误差只有靠不断地求解同样的方程(比如pEqn),也就是非正交修正(nonOrthogonalCorrection)中看似没有变化的那个pEqn来消除。在非正交修正的迭代过程中,其实每次解的方程不是不变的,只是其中的fvm::laplacian生成的隐式项系数没有变化,显式项是和你给的$p$有关的,是有变化的,所以实际上实现的是上述的$p^{(n-1)}$到$p^{(n)}$的迭代修正循环。

    其实OpenFOAM中很多的延迟修正都是类似的部分隐式部分显式离散,比如High Resolution格式和High Order格式的差值也是这么搞的。

    这种半隐式离散理论上必须达到最终收敛才是和全隐式离散是一样的解,但是只要显式部分远小于隐式部分,问题也不大,甚至收敛阶数和速度也不太受影响。不过对于压力方程还是解得准确点儿好。

    已婚,勿扰。
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    H yhdthuY 2 条回复 最后回复
  • 程 离线
    程 离线
    程迪
    在 中回复了 李东岳 最后由 编辑
    #21

    @李东岳

    也可以认为每次对fvm::laplacian的调用都进行了非正交修正。

    已婚,勿扰。
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    1 条回复 最后回复
  • H 离线
    H 离线
    hongfu2233
    在 中回复了 程迪 最后由 编辑
    #22

    @程迪 回答地太清晰了!非常感谢!

    1 条回复 最后回复
  • yhdthuY 离线
    yhdthuY 离线
    yhdthu 大神
    在 中回复了 程迪 最后由 编辑
    #23

    @程迪 看样子,用PISO的时候,非正交修正算是内迭代步的内迭代步了?目的只有一个,就是修正信息延迟的问题

    长风破浪会有时,直挂云帆济沧海

    程 1 条回复 最后回复
  • 程 离线
    程 离线
    程迪
    在 中回复了 yhdthu 最后由 编辑
    #24

    @yhdthu
    sorry,我还没完全明白piso算法是怎么回事儿呢。。。

    已婚,勿扰。
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

    1 条回复 最后回复
  • W 离线
    W 离线
    wh3296
    在 中回复了 wwzhao 最后由 编辑
    #25

    @wwzhao 在 关于piso循环的二次修正的一个疑问 中说:

    OpenFOAM认为在低库朗数情况下,动量方程中的非线性项 ∇⋅(uu)∇⋅(uu)\nabla \cdot (\textbf u \textbf u) 对系统的影响远比速度压力耦合对系统的影响小,因此在循环时不更新速度。

    请问,这样是不是意味着:
    PISO算法中,每一时间步最终迭代后所满足动量方程的对流项 fvm::div(phi,U),其中phi为上一时间步的值,U为该时间步的值。

    1 条回复 最后回复

  • 登录

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