nparticle数值设定



  • 我现在在用Openfoam里的MPPICFoam 做固液共存的模拟。MPPICFOAM中的nparticle这个参数,是否对parcel中所含particles数量有要求?我看了几个例子,nparticle基本上就是1, 100,1000。 在我的模拟中,虽然固体颗粒的volume fraction 比较小,但是粒子的体积非常小,所以固体颗粒的数量级还是很大的,所以我想问下,是否可以把nparticle的数值选择更大一些?希望指教。。。


  • 网格教授 OpenFOAM教授 管理员

    可以,不过想到一个问题是固液体系和气固体系的固相应力是否有变化?这个我不太清楚,可能文献里面会讨论。



  • @李东岳 好的谢谢李老师,我还有个问题,我tutorial中MPPICFoma/InjectionChannel/constant/kinematicCloudProperties中找到的代码是这样的

    solution
    {
        active          true;
        coupled         true;
        transient       yes;
        cellValueSourceCorrection on;
    
        interpolationSchemes
        {
            rho.air         cell;
            U.air           cellPoint;
            mu.air          cell;
        }
    
        averagingMethod basic;
    
        integrationSchemes
        {
            U               Euler;
        }
    
        sourceTerms
        {
            schemes
            {
                U semiImplicit 1;
            }
        }
    }
    
    constantProperties
    {
        rho0            1000;
    
        alphaMax        0.9;
    }
    
    subModels
    {
        particleForces
        {
            WenYuDrag
            {
                alphac alpha.air;
            }
        }
    
        injectionModels
        {
            /*
                % matlab/octave calculation of flow rate
                alpha=0.1
                U=20
                A=0.01^2
                Q=U*A
                d=650e-6
                v=(4/3)*pi*(d/2)^3
                n=1
                rate=alpha*Q/(v*n)
            */
    
            model1
            {
                type            patchInjection;
                parcelBasisType fixed;
                patchName       lowerInlet;
                U0              (18.7939 6.8404 0);
                nParticle       1;
                parcelsPerSecond 1390885;
                sizeDistribution
                {
                    type        normal;
                    normalDistribution
                    {
                        expectation 650e-6;
                        variance 25e-6;
                        minValue 500e-6;
                        maxValue 800e-6;
                    }
                }
                flowRateProfile constant 1;
                massTotal       0;
                SOI 0;
                duration 60;
            }.........
    

    我想问下,这个例子是液体中有空气粒子,还是空气中有液体的粒子?
    如果我做的是水中有固体颗粒的话,

     interpolationSchemes
        {
            rho.air         cell;
            U.air           cellPoint;
            mu.air          cell;
        }
    和subModels
    {
        particleForces
        {
            WenYuDrag
            {
                alphac alpha.air;
            }
        }
    

    中的rho.air U.air mu.air alpha.air 是不是得改成 rho.solid U.solid mu.solid alpha.solid? 还是rho.water U.water mu.water alpha.water?


  • 网格教授 OpenFOAM教授 管理员

    自带的算例是空气中含有固体颗粒。如果你要做固液,你不用管他具体叫什么名字,改具体的数值就可以。比如rho.air设置为水的密度而不是空气的密度。

    你的固液共存是什么工况?



  • @李东岳 你好,李老师,我做的固液共存就是水中有盐颗粒,简单地说就是海水,实际上盐是以很小的颗粒溶解在水中。

    我简单做了下模拟,先不考虑颗粒间的碰撞,假设盐颗粒有同样的 2e-6m的直径大小。但是程序运行到0.6second左右的时候停止了。报错是这样的

    :[13] #0  Foam::error::printStack(Foam::Ostream&) addr2line failed
    [13] #1  Foam::sigFpe::sigHandler(int) addr2line failed
    [13] #2  ? addr2line failed
    [13] #3  ?
    [13] #4  ?
    [13] #5  ?
    [13] #6  ?
    [13] #7  ?
    [13] #8  ?
    [13] #9  ?
    [13] #10  __libc_start_main addr2line failed
    [13] #11  ?
    [linuxbmc0108:31135] *** Process received signal ***
    [linuxbmc0108:31135] Signal: Floating point exception (8)
    [linuxbmc0108:31135] Signal code:  (-6)
    [linuxbmc0108:31135] Failing at address: 0x803d0000799f
    [linuxbmc0108:31135] [ 0] /lib64/libc.so.6(+0x35270)[0x7f1c42e49270]
    [linuxbmc0108:31135] [ 1] /lib64/libc.so.6(gsignal+0x37)[0x7f1c42e491f7]
    [linuxbmc0108:31135] [ 2] /lib64/libc.so.6(+0x35270)[0x7f1c42e49270]
    [linuxbmc0108:31135] [ 3] MPPICFoam[0x44a24e]
    [linuxbmc0108:31135] [ 4] MPPICFoam[0x4471b5]
    [linuxbmc0108:31135] [ 5] MPPICFoam[0x443b68]
    [linuxbmc0108:31135] [ 6] MPPICFoam[0x442e23]
    [linuxbmc0108:31135] [ 7] MPPICFoam[0x442470]
    [linuxbmc0108:31135] [ 8] MPPICFoam[0x43347c]
    [linuxbmc0108:31135] [ 9] MPPICFoam[0x42de0d]
    [linuxbmc0108:31135] [10] /lib64/libc.so.6(__libc_start_main+0xf5)[0x7f1c42e35c05]
    [linuxbmc0108:31135] [11] MPPICFoam[0x42a829]
    [linuxbmc0108:31135] *** End of error message ***
    /*-------------------------------------------------------
    

    请问您知道这是什么错误吗?
    另外,kinematicCloudProperties我是这样改的:

    solution
    {
        active          true;
        coupled         true;
        transient       yes;
        cellValueSourceCorrection on;
    
        interpolationSchemes
        {
            rho.water         cell;
            U.water           cellPoint;
            mu.water         cell;
        }
    
        averagingMethod basic;
    
        integrationSchemes
        {
            U               Euler;
        }
    
        sourceTerms
        {
            schemes
            {
                U semiImplicit 1;
            }
        }
    }
    
    constantProperties
    {
        rho0            1000;
    
        alphaMax        0.9;
    }
    
    subModels
    {
        particleForces
        {
            WenYuDrag
            {
                alphac alpha.water;
            }
    		gravity;
        }
    
        injectionModels
       {
            model1
            {
                type            patchInjection;
                patchName       INLET;
                massTotal       1;
                parcelBasisType fixed;
                nParticle       1000;
                parcelsPerSecond 14204579; 假设volume fracton of particle 是0.01,经过计算得
                                                                到这个数值
                SOI             0;
                U0              (0 0 -0.17);
                duration 60;
                flowRateProfile constant 1;
    
                sizeDistribution
                {
                    type        fixedValue;
                    fixedValueDistribution
                    {
                        value   2e-6;
                    }
                }
            }
        }
    
    
        dispersionModel none;
    
        patchInteractionModel localInteraction;
    
        localInteractionCoeffs
        {
            patches
            (
               SYMMETRY
               {
                    type rebound;
                    e    1;
                    mu   0;
               }
    
               PERMEAT
               { 
                    type rebound;
                    e    1;
                    mu   0;
               }
    
               WALL
               {
                    type rebound;
                    e    1;
                    mu   0;
               }
    
               "INLET|OUTLET"
               {
                    type escape;
               }   
            );
        }
    
        heatTransferModel none;
    
        surfaceFilmModel none;
    
        packingModel none;
    
        dampingModel relaxation;
    
        relaxationCoeffs
        {
            timeScaleModel
            {
                type nonEquilibrium;
                alphaPacked 0.58;
                e 0.9;
            }
        }
    
        isotropyModel stochastic;
    
        stochasticCoeffs
        {
            timeScaleModel
            {
                type isotropic;
                alphaPacked 0.58;
                e 0.9;
            }
        }
    
        stochasticCollisionModel none;
    
        radiation off;
    }
    
    
    cloudFunctions
    {}
    

    请问是哪个地方设置不对吗?谢谢李老师


  • 网格教授 OpenFOAM教授 管理员

    看不出来具体原因,把你的错误log多贴几个时间步骤



  • @李东岳 你好李老师,我现在用Glyph来现实出paticles, 然后用Clip-box,切分出来一个区域,现在我就想计算下这个box区域里的particles数量,您可以看下下面的图。 我在网上找了,但是没有想过信息啊,请问怎么能实现 这个功能呢?

    0_1516625163831_x.png


  • 网格教授 OpenFOAM教授 管理员

    寻找计算域内某一块的粒子数量,这个问题暂时我还没有简单的思路。目前有个想法是把这部分网格单独分块出来,然后找字典里面的粒子信息,但是感觉很麻烦。

    paraview能处理最后,你有解决方式了么。



  • @李东岳
    您好,李老师,我现在的做法就是不用Glyph来显示particles,直接在paraview中load 原始particles,再用clip的box来划分出一个区域,这样在information中,number of cells=number of pints的值就是这个box中 particles的真实数量。
    但是现在出现了一个新问题,我知道单个 particle体积,这个box中particles的数量,nparticles的值我也知道,这样通过计算 :particle的体积particle个数nparticle就计算出这个box中particles的体积数,用这个数除以Box的体积就应该能算出这个box中particle的体积分数,即 alpha(volume fraction of particle). 但是算出来的这个数总是比我初始设定的particle体积分数要小很多,请问您知道是什么原因吗?