CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    DPMFoam injectionModels 中初始速度 U0

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

      各位大佬好,

      本人在模拟Diaz bubble column时,在kinematicCloudProperties里的injectionModels中给定如下代码,
      be53c2b8-306d-4dee-b932-4889c3dd79ad-image.png
      在给定parcelsPerSecond后,颗粒入口的速度理论上来说应该等于parcelsPerSecond*颗粒体积/入口面积,但是不知道此处U0的作用是什么,我改变U0的值从0到100m/s 发现结果只有微小的差异。因此想知道U0的作用是什么?应该如何给定U0的值呢?还望大佬指点一二!
      下图为U0为1m/s和100m/s时水相的速度分布
      1.png
      100.png

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

        U0的作用应该是微乎其微。因为这个U0的速度进来之后,直接就被drag force改变了。另外云图其实看的不准确。你可以对比一下线图。

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

        J 1 条回复 最后回复 回复 引用
        • J
          Jasper 0 @李东岳 最后由 编辑

          @李东岳 谢谢李老师的回复,我做了速度矢量图,能看出来有微小的差异。但我想知道颗粒从入口进来的速度不是应该通过 parcelsPerSecond颗粒体积/入口面积 得来的吗?如果按U0进来的话,那进来的颗粒数是不是变成parcelsPerSecond=U0入口面积/颗粒体积 了?但通过对比U0=1 和100 我发现,入口的速度主要跟设置的parcelsPerSecond有关,就是不知道U0起了个什么作用。。。
          1.png
          100.png

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

            @jasper-0 在 DPMFoam injectionModels 中初始速度 U0 中说:

            parcelsPerSecond颗粒体积/入口面积 得来的吗?

            这是计算的粒子数量。U0是粒子进来的初始速度。这种流动主要是drag决定的速度。你给U0=0也可以。

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

            J 2 条回复 最后回复 回复 引用
            • J
              Jasper 0 @李东岳 最后由 编辑

              @李东岳 感谢李老师的解答,我发现模拟气泡的话确实主要跟曳力有关。U0 主要取决于颗粒的性质,刚改了颗粒密度为2500模拟固体injection,发现U0 的改变对结果影响很大,现在有了基本了解了:146:

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

                U0 就是parcel的初始速度。
                因为你现在用的是气泡,parcel的密度远远小于周围流体的密度,如东岳大佬所说,在计算drag的时候就直接给处理掉了。所以你才能发现改变颗粒密度为2500以后就影响很大。

                而且你也要看你是2-way 还是1-way。
                如果你只是1-way倒还好,影响不大,因为只有fluid to parcel,
                如果你要考虑2-way的话,parcel to fluid 就是个问题了。

                @jasper-0 在 DPMFoam injectionModels 中初始速度 U0 中说:

                颗粒入口的速度理论上来说应该等于parcelsPerSecond*颗粒体积/入口面积

                parcel的入口速度就是U0只是在你射入以后,就被couple了

                injection model

                1. 选择喷射模型
                2. 初始化: 什么时候开始喷射,喷射的总数量,总体积(flowrate 时间积分),根据parcelbasisbasistype计算nParticle,这些影响到你的总flow rate
                3. 设置 injection position and cell
                4. 设置parcel properties: 速度和parcel直径

                m.sui20@foxmail.com

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

                  @星星星星晴
                  感谢大佬的悉心解答!我现在改用patchFlowRateInjection,但是对于parcelConcentration的定义不是很明确,以下是我的代码。我看了下PatchFlowRateInjection.H,发现定义为 Parcels to introduce per unit volume flow rate m3 [n/m3],这意思是不是说每进来1立方米水携带多少个粒子?比如我的流量为0.001 m3/s,每秒携带10个粒子,那parcelConcentration是不是应该是10000?

                  injectionModels
                      {
                          model1
                          {
                             type             patchFlowRateInjection;
                              phi alphaPhi.water;
                              patch            inlet;
                              duration         10;
                              SOI              0;
                          parcelBasisType  fixed;
                              massTotal        5.257e-3;
                              nParticle        1;
                              concentration 1;
                              parcelConcentration 21220659079;
                  
                              sizeDistribution
                              {
                                  type        fixedValue;
                                  fixedValueDistribution
                                  {
                                      value   3e-4;
                                  }
                              }
                  
                          }
                  
                  星 1 条回复 最后回复 回复 引用
                  • J
                    Jasper 0 @李东岳 最后由 李东岳 编辑

                    @李东岳
                    李老师好,我发现一个问题,还是对于Diaz bubble column这个算例,压力p的边界条件设为如下:

                    internalField   uniform 1e5;
                    
                    boundaryField
                    {
                        ".*"
                        {
                            type            fixedFluxPressure;
                            phi             phi.water;
                            value           $internalField;
                        }
                    }
                    

                    然而在计算结果中并没有得到静水压力,上下面的水压差只有5.2,感觉是用空气密度算出来的压力差,这应该对计算结果会造成影响吧? 是不是DPMFoam只能应用于空气为连续项的情况啊?
                    34c00cd8-ad69-4204-a987-a1756837850d-image.png

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

                      @jasper-0 不好意思,我没用过这个injection model,我建议你要是有功夫就研读一下injection model 的具体喷射方式和计算过程,这个东西完全能用手算的。这样你才能知道到底哪一项对你喷射的颗粒有什么变化。
                      大致看的样子这个parcelconcentration 影响到的是你喷射parcel 数量。

                      template<class CloudType>
                      Foam::label Foam::PatchFlowRateInjection<CloudType>::parcelsToInject
                      (
                          const scalar time0,
                          const scalar time1
                      )
                      {
                          if ((time0 >= 0.0) && (time0 < duration_))
                          {
                              scalar dt = time1 - time0;
                      
                              scalar c = concentration_.value(0.5*(time0 + time1));
                      
                              scalar nParcels = parcelConcentration_*c*flowRate()*dt;
                      
                              Random& rnd = this->owner().rndGen();
                      
                              label nParcelsToInject = floor(nParcels);
                      
                              // Inject an additional parcel with a probability based on the
                              // remainder after the floor function
                              if
                              (
                                  nParcelsToInject > 0
                               && nParcels - scalar(nParcelsToInject) > rnd.globalScalar01()
                              )
                              {
                                  ++nParcelsToInject;
                              }
                      
                              return nParcelsToInject;
                          }
                          else
                          {
                              return 0;
                          }
                      }
                      

                      m.sui20@foxmail.com

                      J 1 条回复 最后回复 回复 引用
                      • J
                        Jasper 0 @星星星星晴 最后由 编辑

                        @星星星星晴 多谢大佬,不好意思刚看到,通过代码看确实是喷射parcel数量

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