Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

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

    OpenFOAM
    4
    9
    5777
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • yhdthu
      yhdthu 讲师 last edited by yhdthu

      看了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 Reply Last reply Reply Quote
      • yhdthu
        yhdthu 讲师 last edited by

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

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

        1 Reply Last reply Reply Quote
        • yhdthu
          yhdthu 讲师 last edited by

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

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

          1 Reply Last reply Reply Quote
          • 李东岳
            李东岳 管理员 last edited by

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

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

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

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

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

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

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

            CFD高性能服务器 http://dyfluid.com/servers.html

            yhdthu 1 Reply Last reply Reply Quote
            • yhdthu
              yhdthu 讲师 @李东岳 last edited by yhdthu

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

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

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

              谢谢前辈指导~

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

              1 Reply Last reply Reply Quote
              • 赵
                赵一铭 last edited by

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

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

                1 Reply Last reply Reply Quote
                • 李东岳
                  李东岳 管理员 last edited by

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

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

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

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

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

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

                  CFD高性能服务器 http://dyfluid.com/servers.html

                  yhdthu 1 Reply Last reply Reply Quote
                  • yhdthu
                    yhdthu 讲师 @李东岳 last edited by

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

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

                    1 Reply Last reply Reply Quote
                    • W
                      wwzhao 教授 @yhdthu last edited by

                      @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 Reply Last reply Reply Quote
                      • First post
                        Last post

                      CFD中文网 | 东岳流体 | 京ICP备15017992号-2
                      论坛登录问题反馈可联系 li.dy@dyfluid.com