想实现在模型内部添加连续随机颗粒,想问问关于patchInjection和coneNozzleInjection的入射函数



  • 大家好,关于两相流,我想在openfoam中实现一个功能。如图1,流体相从入口截面A进入圆管,然后在圆管中间某一个位置有截面B,将这个面作为一个虚拟入口面,添加随机分布的离散的颗粒(这个面只是用于添加颗粒,而不影响流场)。相当于流体在经过截面B的时候,遇到了这些凭空出现的颗粒并一起流入区域D。并且颗粒的添加需要是连续的和随机分布的。

    0_1543993193059_图片1.jpg 图1.

    我有试过将截面B创建为一个Patch,然后选用patchInjection添加颗粒,但是试过边界条件为zeroGradient, inletOutlet等,计算都无法收敛。

    现在选用的方法是使用coneNozzleInjection,将其outerDiameter设置为直径大小,innerDiameter设置为0,目前可以实现连续的颗粒入射,但是有一个问题是颗粒都集中在中央,如图2所示的白色颗粒,并不是像patchInjection一样的随机分布。

    0_1543993362150_未命名图片.png 图2.

    所以现在想问问:
    1.怎样将patchInjection里关于颗粒入射的函数加入到coneNozzleInjection里,从而在后者里实现随机分布地连续入射?
    2.有没有其他的思路可以实现这一功能?
    在此先谢谢各位了。


  • 网格教授 OpenFOAM教授 管理员

    你可以试试ManualInjection手动注入这种方式:

    User specifies:
          - Total mass to inject
          - Parcel positions
          - Initial parcel velocity
    


  • @东岳 谢谢东岳老师回复。我只知道ManualInjection需要一个position file来定义颗粒的初始位置,虽然这个初始位置可以定义一批随机的值,但是并不是连续的吧。请问连续注入不同位置的随机分布的颗粒,可以通过这个实现吗?


  • 网格教授 OpenFOAM教授 管理员

    我看了下,确实不是连续的。在ManualInjection.C文件中:

    template<class CloudType>
    Foam::scalar Foam::ManualInjection<CloudType>::timeEnd() const
    {
        // Injection is instantaneous - but allow for a finite interval to
        // avoid numerical issues when interval is zero
        return ROOTVSMALL;
    }
    

    我看了一下,可以用cellZoneInject:

    Description
        Injection positions specified by a particle number density within a cell
        set.
    
        User specifies:
          - Number density of particles in cell set (effective)
          - Total mass to inject
          - Initial parcel velocity
    
        Properties:
          - Parcel diameters obtained by PDF model
          - All parcels introduced at SOI
    

    你试试这个?

    PS. 你需要用topoSet做一个cellSet出来toturial里面有