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. pimple算法的个人理解,其思想与使用时参数设置问题

pimple算法的个人理解,其思想与使用时参数设置问题

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

    看了Tobi写的pimple使用时的参数设置对比,还有些疑问想提出来跟大家讨论,我就想到什么就写什么啦,先说以下这几个关键字吧~

    pimple by Tobi

    nOuterCorrctors (50)
    nCorrectors (2)
    nNonOrthogonalCorrectors (0)
    turbOnFinalIterOnly (ture)

    1.在controlDict设置了基于Co数自动调节时间步长后,一般来说,调解后的时间步进的长度delta_t都要小于设置的delta_T,这时候是在每个delta_t中都要跑一遍nOuterCorrectors(50)和nCorrectors (2)对不?
    如果是,我在用DES模型算case,发现自动调节的时间步长非常小,既然如此,我干吗不用piso算法自己手动调节时间步长呢?

    2.一般而言,如何给定nOuterCorrctors 的值呢?Tobi给出了几个例子的对比,表示最后出现了非定常残差收敛曲线的样子,就认定给的值可以了么?我不知道大家是怎么给的,如何给定值并判断在每个时间步delta_t中定常收敛呢?

    3.turbOnFinalIterOnly默认为true,意义是在最后一次进行湍流修正,Tobi的解释是:
    For high turbulent flow you should add turbOnFinalIterOnly = false to your PIMPLE control
    这句话怎么理解?什么叫high turbulent flow??

    4.理论上说,RANS模型只能用在simpleFoam中才对,所以双时间步对使用URANS模型的意义非同一般,pimple的思想就是想搞一个定常的小时间步继而使用RANS模型;这让我想到热力学中平衡态的定义,在无限小的时间尺度下,系统内外势差很小,此时可以测得我想要的比如温度之类的量了。那么好,这又与第一条结论相同,我干吗不自己搞一个时间步很小的piso来算呢?

    理解可能有偏差,目前就想到这些,还请大家指教~

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

    W 1 条回复 最后回复
  • yhdthuY 离线
    yhdthuY 离线
    yhdthu 大神
    写于 最后由 编辑
    #2

    补充:
    综合1,2两点,fluent的transition模式下是可以自己手动设置双时间步的,即deltaT与将deltaT分割成n份,两个参数;但是到了OF中由于设置了基于Co自动调节deltat,其在deltaT时间步内分割的份数n就不一定了。(但是我没看到在fluent中每个deltat内松弛迭代数是多少。。)

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

    1 条回复 最后回复
  • yhdthuY 离线
    yhdthuY 离线
    yhdthu 大神
    写于 最后由 编辑
    #3

    再附上一张我的残差曲线图,大家看有问题没
    0_1496073856896_5ZZIRQ0EV5EA$X3R7EDX}4P.png

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

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

    一般而言,如何给定nOuterCorrctors的值呢?Tobi给出了几个例子的对比,表示最后出现了非定常残差收敛曲线的样子,就认定给的值可以了么?我不知道大家是怎么给的,如何给定值并判断在每个时间步delta_t中定常收敛呢?

    nOuterCorrctors无所谓,如果你已经控制好pimple的残差,他会知道收敛为止。比如你设定200,可能35就收敛了。

    turbOnFinalIterOnly这句话怎么理解?什么叫high turbulent flow??

    湍流变量方程不属于压力速度耦合方程之内,因此可以在速度压力求解之后求解一边湍流方程就可以。

    我干吗不自己搞一个时间步很小的piso来算呢?

    pimple和piso个人认为是个帮派,不同应用倾向于不同的算法,我做多相流不是pimple的粉丝,有些传热的人比较喜欢pimple,所以我只用piso,为了更好地保证相方程的传输。

    你那个残差图坐标做好调节成log..

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

    yhdthuY 1 条回复 最后回复
  • yhdthuY 离线
    yhdthuY 离线
    yhdthu 大神
    在 中回复了 李东岳 最后由 yhdthu 编辑
    #5

    @李东岳 谢谢前辈回复,如果我把simple循环设置为1就成了piso算法了哈,这样的话给一个比较小的时间步就可以计算,并满足cfl数小于0.5(我是用DES模型计算),请问此时的piso内迭代步给2或3就可以么(多相流计算)。

    请问前辈做多相流计算时,为什么会用piso呢?

    还有个问题就是,在做多相流计算时,alpha方程中的内外循环是怎么回事呢?
    关键字是nAlphaSubCycles

    谢谢前辈指导~

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

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

    请问此时的piso内迭代步给2或3就可以么

    必须要给2-3步吧?这是PISO的要求好像。

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

    请问此时的piso内迭代步给2或3就可以么

    是的,多的没必要,我一般选择2。

    做多相流计算时,为什么会用piso呢?

    这个可能更是应用导向,因为目前小的库狼数的计算时间可以忍受,并且我一直属于保守派 :expressionless:

    alpha方程中的内外循环是怎么回事呢?

    相方程需要保证更小的库狼书,因此在一个时间步多次求解。

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

    yhdthuY 1 条回复 最后回复
  • yhdthuY 离线
    yhdthuY 离线
    yhdthu 大神
    在 中回复了 李东岳 最后由 编辑
    #8

    @李东岳 谢谢前辈回复,我最近在计算空化遇到了一些问题,目前定位于相变源项对压力泊松方程的影响,虽然源项的隐式处理改善了对角占优特性,当出现空化时(液体变成气体)压力计算正常,反之,冷凝会出现局部压力过高,导致全场压力受到影响,所计算的压力结果完全是错的。但是过了几个时间步又会恢复正常,不知前辈遇到过这种问题么?

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

    1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 中回复了 yhdthu 最后由 编辑
    #9

    @yhdthu

    调解后的时间步进的长度delta_t都要小于设置的delta_T

    调节后的时间步大小取决于controlDict中的maxCo值,maxCo的默认值为1。代码见src/finiteVolume/cfdTools/general/include/createTimeControls.H 以及
    src/finiteVolume/cfdTools/general/include/readTimeControls.H。

    在每个delta_t中都要跑一遍nOuterCorrectors(50)和nCorrectors (2)对不?

    没错。

    干吗不用piso算法自己手动调节时间步长

    可以通过增大maxCo来增大自动调节的时间步长,据说PIMPLE算法的Co数可以达到10以上,不过对于用DES或LES计算的湍流问题另当别论。

    如何给定nOuterCorrctors 的值呢?

    这个只能靠经验了,不过一般肯定用不着50。

    这句话怎么理解?什么叫high turbulent flow??

    当simulationType设置为RAS或LES时,求解的是考虑湍流粘度($\nu_t$)影响的RANS/LES方程,而湍流粘度取决于求解湍流输运方程后得到的各湍流系数。

    turbOnFinalIterOnly为false代表每个PIMPLE循环内求解多次湍流输运方程,每次PIMPLE循环求解RANS/LES方程时的湍流系数都用的是上个PIMPLE循环内得到的湍流系数。

    turbOnFinalIterOnly为true则代表每个PIMPLE循环内只求解一次湍流输运方程,每次PIMPLE循环求解RANS/LES方程时的湍流系数都用的是上个时间步得到的湍流系数。

    高雷诺数流动为了精确得到速度压力场,需要每个PIMPLE循环内都求解多次湍流输运方程。

    1 条回复 最后回复

  • 登录

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