CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    overpimpleDyMFoam +颗粒边界处理

    OpenFOAM
    3
    20
    557
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • L
      lys 最后由 编辑

      在overpimpleDyMFoam 中加入了拉格朗日模块,但是发现动网格下移动物体边界处颗粒捕捉的不好,会有部分颗粒进入固体内部,请问大家有好的建议吗?
      因为计算问题的限制(涉及到大变形),没有采用变形网格类的动网格技术,我在颗粒求解模块中也添加了固体壁面反弹的颗粒处理约束,但是效果没有完全约束住。
      44d8745a-3f42-43a9-af54-c178f172a03b-image.png

      f2e1ff28-66b2-4525-aa33-388cb1e7905e-image.png

      星 1 条回复 最后回复 回复 引用
      • 星
        星星星星晴 @lys 最后由 编辑

        @lys 你好,并不了解overpimpleDyMFoam,但是这个部分是动网格?

        请问你在什么时候parcel.evolve()的会不会是在你网格移动之前?还是在你网格移动之后?

        另外你的paraview显示的是2D还是3D?中间是个球还是圆柱?

        m.sui20@foxmail.com

        L 1 条回复 最后回复 回复 引用
        • L
          lys @星星星星晴 最后由 编辑

          @星星星星晴 这部分是动网格技术中的重叠网格,颗粒的演化是在最后,应该是网格移动后,因为是先求的流体,然后再求的颗粒运动,
          这是个2维问题,中间是个圆柱,不存在视觉假象

          星 2 条回复 最后回复 回复 引用
          • 星
            星星星星晴 @lys 最后由 编辑

            @lys 嗯嗯 重叠网格部分我也不是很了解:xinlei: 请问能否讲一下这个部分是怎么处理的?

            正常情况下验证过parcel放在pimple之前或者之后应该是不太影响结果的(同事验证过, dilute),但是你这个case改变了mesh,就不好说了。或许你应该放在pimple之前,这样会导致 $n_t$ 的时候用的是$n_{t-1}$的流场, 但是这样仍然无法规避网格变动的情况。

            你可以先跑一个无重叠网格的case,判断一下,是否是重叠网格的问题。parcel应该都是在网格内部的,所以如果出现在非网格处的话,能让我想到的只有你的重叠网格引起的问题了,是不是应该在重叠网格处理部分也加入关于parcel的处理。而且我在kinematicCloud.C 中看了一下,preEvolve的地方他会updateCellOccupancy(),所以parcel会在计算的时候重新计算当前cell内的parcel信息。

            m.sui20@foxmail.com

            1 条回复 最后回复 回复 引用
            • 星
              星星星星晴 @lys 最后由 编辑

              @lys 另外你用的什么版本of,引用的什么cloud

              m.sui20@foxmail.com

              L 1 条回复 最后回复 回复 引用
              • L
                lys @星星星星晴 最后由 编辑

                @星星星星晴
                两个版本都用了,of2206的overpimpleFoam的基础上,我给加了LPT,但是就是我觉得不理想

                星 2 条回复 最后回复 回复 引用
                • 星
                  星星星星晴 @lys 最后由 编辑

                  @lys 哦哦,可能是你的其他模型不够吧,受力都有啥?particle turbulence dispersion model?1way 还是2way这些东西是有影响的,particle maxCo是多少?

                  m.sui20@foxmail.com

                  L 1 条回复 最后回复 回复 引用
                  • L
                    lys @星星星星晴 最后由 编辑

                    @星星星星晴 受力主要阻力,重力,流体惯性力(压力梯度力),虚拟质量力,应该比较全了,2-way的,湍流脉动力确实没有考虑,颗粒Co=0.3,感觉跟这个关系不大,主要是边界没起到时时刻刻的不可穿透条件

                    星 1 条回复 最后回复 回复 引用
                    • 星
                      星星星星晴 @lys 最后由 编辑

                      @lys 你可以试试Co小一点,这个也有影响的,判断你的拉格朗日dt. 正常情况下是需要考虑dispersion的,不然particle的RMS是错的(个人经验)。不过of自带的dispersion model 也不咋地,不过你可以试试看。也要看你用什么turbulence。 RANS 还是LES,RANS需要,LES怎么说呢,理论上也是是需要的,但是好多人不用。OF也没有默认的LES的turbulence dispersion。俩模型都$k-\varepsilon$的。你也没说你用的啥turbulence

                      我做过和你类似的,不过不是圆柱,不是你的重叠网格,是tablet周围被snappyhexmesh加密过,完全没有你说的情况,particle就是碰到壁面就没了,个人认为,是因为你的重叠网格,也不知道这个重叠网格怎么做的,另外如果你particle很小,不是dense的话,有些模型不用考虑,完全是浪费时间。shear-lift?不好意思,有些词我想不起来中文教材怎么叫了。。。

                      m.sui20@foxmail.com

                      1 条回复 最后回复 回复 引用
                      • 星
                        星星星星晴 @lys 最后由 编辑

                        另外请问你的source term在各个方程里面加了么?

                        @lys 在 overpimpleDyMFoam +颗粒边界处理 中说:

                        @星星星星晴
                        两个版本都用了,of2206的overpimpleFoam的基础上,我给加了LPT,但是就是我觉得不理想

                        m.sui20@foxmail.com

                        L 1 条回复 最后回复 回复 引用
                        • L
                          lys @星星星星晴 最后由 编辑

                          @星星星星晴 你说的sourceTerm是颗粒对流体的作用力吗

                          星 1 条回复 最后回复 回复 引用
                          • 李东岳
                            李东岳 管理员 最后由 编辑

                            @lys 在 overpimpleDyMFoam +颗粒边界处理 中说:

                            会有部分颗粒进入固体内部

                            具体没太细看啊,我插一句,是不是需要看一下你这个颗粒定义在哪套网格上了,如果定义在A网格上,壁面在B网格上,那是不是肯定会发生这个现象。

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

                            星 L 2 条回复 最后回复 回复 引用
                            • 星
                              星星星星晴 @lys 最后由 编辑

                              @lys 比如ueq里面的 + parcels.SU(U) 这一项,其他的有加么

                              // Solve the Momentum equation
                              
                              MRF.correctBoundaryVelocity(U);
                              
                              tmp<fvVectorMatrix> tUEqn
                              (
                                  fvm::ddt(rho, U) + fvm::div(phi, U)
                                + MRF.DDt(rho, U)
                                + turbulence->divDevTau(U)
                               ==
                                  rho()*g
                                + parcels.SU(U)
                                + fvOptions(rho, U)
                              );
                              fvVectorMatrix& UEqn = tUEqn.ref();
                              
                              UEqn.relax();
                              
                              fvOptions.constrain(UEqn);
                              
                              if (pimple.momentumPredictor())
                              {
                                  solve(UEqn == -fvc::grad(p));
                              
                                  fvOptions.correct(U);
                                  K = 0.5*magSqr(U);
                              }
                              

                              m.sui20@foxmail.com

                              L 1 条回复 最后回复 回复 引用
                              • 星
                                星星星星晴 @李东岳 最后由 编辑

                                @李东岳 正常情况下 cloud里面会有updateCellOccupancy这个方程,会自动更新当前cell中parcel的占用什么的,如果在solver中把parcels.evolve(); 放到mesh.changing之后就应该没事,但是很奇怪,他的parcel会进入空的地方。。

                                m.sui20@foxmail.com

                                1 条回复 最后回复 回复 引用
                                • L
                                  lys @李东岳 最后由 编辑

                                  @李东岳 这是重叠网格,按道理讲是可以更新背景网格的流场信息,然后颗粒在更新后的流场信息作用下,是可以实现壁面效应捕捉的。但也有可能,颗粒只是感受到了流场,而没有实际发生壁面碰撞,所以导致颗粒穿透壁面,这是不是意味着overset 方法是不适用颗粒求解的,所以openFOAM-ESI版本下就没有现成的overset求解器+LPT

                                  1 条回复 最后回复 回复 引用
                                  • 李东岳
                                    李东岳 管理员 最后由 编辑

                                    你的A网格如果没有壁面,但是壁面定义在网格B上,那拉格朗日栗子同时也定义在A上,那A网格那面不就没有壁面了么。流场的话,重叠网格做了插值处理。栗子,是不是也要做B网格壁面-A网格壁面的映射,然后并反弹处理?

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

                                    1 条回复 最后回复 回复 引用
                                    • L
                                      lys @星星星星晴 最后由 编辑

                                      @星星星星晴 这项时肯定要加的
                                      6142cf0d-817f-4049-89b6-61f2eec66290-image.png

                                      星 1 条回复 最后回复 回复 引用
                                      • 星
                                        星星星星晴 @lys 最后由 编辑

                                        @lys 嗯,就是确认一下别拉下什么东西没加就难受了。

                                        所以说,那些particle 应该是在$n-1$步时还在网格里,然后网格发生变化,可能就不在网格里了,这部分parcel就没办法算了。

                                        1. 把parcel.evolve() 放到 bool changed = mesh.update() 前面,让parcel用上一步的旧网格试试看
                                        2. 另外如果你的Euler time step $\Delta t_E$ 足够小,就是你每次更新网格的间隔减小,会不会也一定程度上减少这样的发生呢?
                                        3. 调整动网格或者在parcel部分,判断内部是否有parcel,有parcel就挪他们到wall表面。

                                        m.sui20@foxmail.com

                                        1 条回复 最后回复 回复 引用
                                        • L
                                          lys 最后由 编辑

                                          @星星星星晴

                                          星 1 条回复 最后回复 回复 引用
                                          • 星
                                            星星星星晴 @lys 最后由 编辑

                                            @lys ?怎么 有解决么?

                                            m.sui20@foxmail.com

                                            1 条回复 最后回复 回复 引用
                                            • First post
                                              Last post