Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. InterFoam求解孔隙尺度气液两相流中气泡内形成漩涡应如何解决

InterFoam求解孔隙尺度气液两相流中气泡内形成漩涡应如何解决

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 2 发布者 675 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • J 离线
    J 离线
    JDZhang
    写于 最后由 编辑
    #1

    各位大神好,我通过InterFOAM和VOF跑气液两相流过程中,气液混合注入时入口速度仅1e-3m/s,但孔隙内的气泡速度达到4m/s的量级。
    通过流线发现,气泡内形成涡,自身旋转造成了很大的流速,这应该如何解决呢。
    3a5b659c-9c1f-42c9-8cd2-8dcd348a5c81-image.png 73797fea-2300-41e9-a282-29818c938226-image.png

    1 条回复 最后回复
  • J 离线
    J 离线
    JDZhang
    写于 最后由 编辑
    #2

    这是速度云图,可以看出,气相区域的速度显著高于入口的气相速度2e-3,不符合物理常识,请各位赐教,该如何解决这个问题呢
    image.png

    1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    写于 最后由 编辑
    #3

    我算气液两相流的时候也确实遇到了这样的问题,某些情况下气泡内部的气体速度明显比外部液体的大,但没你差距这么明显。我感觉我那个是比较合理的。
    感觉和网格分辨率有关。你这样的情况,最小尺寸的那些固壁圆,网格分辨率有多大?有20个网格/直径?

    J 1 条回复 最后回复
  • J 离线
    J 离线
    JDZhang
    在 中回复了 学流体的小明 最后由 编辑
    #4

    @学流体的小明 拜托下能否给看下我的边界条件是否准确
    /--------------------------------- C++ -----------------------------------
    | ========= | |
    | \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
    | \ / O peration | Version: 2312 |
    | \ / A nd | Website: www.openfoam.com |
    | \/ M anipulation | |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
    version 2.0;
    format ascii;
    arch "LSB;label=32;scalar=64";
    class volScalarField;
    location "0";
    object alpha.water;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    dimensions [0 0 0 0 0 0 0];

    internalField uniform 1;

    boundaryField
    {
    walls
    {
    type zeroGradient;
    }
    inLet
    {
    type codedFixedValue;
    value uniform 1;
    name inletProfile2;
    code #{
    const fvPatch& boundaryPatch = patch();
    const vectorField& Cf = boundaryPatch.Cf();
    scalarField& field = *this;

            scalar miny1 = 0.0e-3;
            scalar maxy1 = 0.005e-3;//gas两个数中间进气
            scalar miny2 = 0.01e-3;
            scalar maxy2 = 0.015e-3;//gas两个数中间进气
            scalar miny3 = 0.02e-3;
            scalar maxy3 = 0.025e-3;//gas两个数中间进气
            scalar miny4 = 0.03e-3;
            scalar maxy4 = 0.035e-3;//gas两个数中间进气
            scalar miny5 = 0.04e-3;
            scalar maxy5 = 0.045e-3;//gas两个数中间进气
            scalar miny6 = 0.05e-3;
            scalar maxy6 = 0.055e-3;//gas两个数中间进气
            scalar miny7 = 0.06e-3;
            scalar maxy7 = 0.065e-3;//gas两个数中间进气
            scalar miny8 = 0.07e-3;
            scalar maxy8 = 0.075e-3;//gas两个数中间进气
            scalar miny9 = 0.08e-3;
            scalar maxy9 = 0.085e-3;//gas两个数中间进气
            scalar miny10 = 0.09e-3;
            scalar maxy10 = 0.095e-3;//gas两个数中间进气
    		
            forAll(Cf , faceI)
            {
                if(
                    (Cf[faceI].y() > miny1) &&
                    (Cf[faceI].y() < maxy1) 
                  )
                {
                    field[faceI] = 0;
                }
    			
                if(	
                    (Cf[faceI].y() > miny2) &&
                    (Cf[faceI].y() < maxy2) 
                  )
                {
                    field[faceI] = 0;
                }
                if(	
                    (Cf[faceI].y() > miny3) &&
                    (Cf[faceI].y() < maxy3) 
                  )
                {
                    field[faceI] = 0;
                }
    			if(	
                    (Cf[faceI].y() > miny4) &&
                    (Cf[faceI].y() < maxy4) 
                  )
                {
                    field[faceI] = 0;
                }
    			if(	
                    (Cf[faceI].y() > miny5) &&
                    (Cf[faceI].y() < maxy5) 
                  )
                {
                    field[faceI] = 0;
                }
                if(
                    (Cf[faceI].y() > miny6) &&
                    (Cf[faceI].y() < maxy6) 
                  )
                {
                    field[faceI] = 0;
                }
    			
                if(	
                    (Cf[faceI].y() > miny7) &&
                    (Cf[faceI].y() < maxy7) 
                  )
                {
                    field[faceI] = 0;
                }
                if(	
                    (Cf[faceI].y() > miny8) &&
                    (Cf[faceI].y() < maxy8) 
                  )
                {
                    field[faceI] = 0;
                }
    			if(	
                    (Cf[faceI].y() > miny9) &&
                    (Cf[faceI].y() < maxy9) 
                  )
                {
                    field[faceI] = 0;
                }
    			if(	
                    (Cf[faceI].y() > miny10) &&
                    (Cf[faceI].y() < maxy10) 
                  )
                {
                    field[faceI] = 0;
                }
            }
        #};
    }
    outLet
    {
        type            zeroGradient;
    }
    front
    {
        type            empty;
    }
    back
    {
        type            empty;
    }
    sand
    {
        type            constantAlphaContactAngle;
        theta0          45;
        limit           gradient;
        value           uniform 0;
    }
    //hydrate
    //{
    //    type            constantAlphaContactAngle;
    //    theta0          34;
    //    limit           gradient;
    //    value           uniform 0;
    //}
    clay
    {
        type            constantAlphaContactAngle;
        theta0          24;
        limit           gradient;
        value           uniform 0;
    }
    

    }

    // ************************************************************************* //
    /--------------------------------- C++ -----------------------------------
    | ========= | |
    | \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
    | \ / O peration | Version: 2312 |
    | \ / A nd | Website: www.openfoam.com |
    | \/ M anipulation | |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
    version 2.0;
    format ascii;
    class volScalarField;
    object p_rgh;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    dimensions [1 -1 -2 0 0 0 0];

    internalField uniform 0;

    boundaryField
    {
    inLet
    {
    type fixedFluxPressure;
    }
    outLet
    {
    type fixedValue;
    value uniform 0; // 指定出口压力
    }

    walls
    {
        type            zeroGradient;
    }
    
    front
    {
    	type            empty;
    }
    back
    {
    	type            empty;
    }
    sand
    {
        type            zeroGradient;
    }
    //hydrate
    //{
    //    type            fixedFluxPressure;
    //}
    clay
    {
        type            zeroGradient;
    }
    

    }

    // ************************************************************************* //
    /--------------------------------- C++ -----------------------------------
    | ========= | |
    | \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
    | \ / O peration | Version: 2312 |
    | \ / A nd | Website: www.openfoam.com |
    | \/ M anipulation | |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
    version 2.0;
    format ascii;
    class volVectorField;
    location "0";
    object U;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    dimensions [0 1 -1 0 0 0 0];

    internalField uniform (0 0 0);

    boundaryField
    {
    inLet
    {
    type codedFixedValue;
    value uniform (1e-2 0 0);//液体速度
    name inletProfile1;

        code 
        #{
            const fvPatch& boundaryPatch = patch();
            const vectorField& Cf = boundaryPatch.Cf();
            vectorField& field = *this;
    
            scalar miny1 = 0.0e-3;
            scalar maxy1 = 0.005e-3;//gas两个数中间进气
            scalar miny2 = 0.01e-3;
            scalar maxy2 = 0.015e-3;//gas两个数中间进气
            scalar miny3 = 0.02e-3;
            scalar maxy3 = 0.025e-3;//gas两个数中间进气
            scalar miny4 = 0.03e-3;
            scalar maxy4 = 0.035e-3;//gas两个数中间进气
            scalar miny5 = 0.04e-3;
            scalar maxy5 = 0.045e-3;//gas两个数中间进气
            scalar miny6 = 0.05e-3;
            scalar maxy6 = 0.055e-3;//gas两个数中间进气
            scalar miny7 = 0.06e-3;
            scalar maxy7 = 0.065e-3;//gas两个数中间进气
            scalar miny8 = 0.07e-3;
            scalar maxy8 = 0.075e-3;//gas两个数中间进气
            scalar miny9 = 0.08e-3;
            scalar maxy9 = 0.085e-3;//gas两个数中间进气
            scalar miny10 = 0.09e-3;
            scalar maxy10 = 0.095e-3;//gas两个数中间进气
    		
            forAll(Cf , faceI)
            {
                if(
                    (Cf[faceI].y() > miny1) &&
                    (Cf[faceI].y() < maxy1) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }
                if(
                    (Cf[faceI].y() > miny2) &&
                    (Cf[faceI].y() < maxy2) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }
                if(
                    (Cf[faceI].y() > miny3) &&
                    (Cf[faceI].y() < maxy3) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }		
                if(
                    (Cf[faceI].y() > miny4) &&
                    (Cf[faceI].y() < maxy4) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }	
                if(
                    (Cf[faceI].y() > miny5) &&
                    (Cf[faceI].y() < maxy5) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }
                if(
                    (Cf[faceI].y() > miny6) &&
                    (Cf[faceI].y() < maxy6) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }
                if(
                    (Cf[faceI].y() > miny7) &&
                    (Cf[faceI].y() < maxy7) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }
                if(
                    (Cf[faceI].y() > miny8) &&
                    (Cf[faceI].y() < maxy8) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }		
                if(
                    (Cf[faceI].y() > miny9) &&
                    (Cf[faceI].y() < maxy9) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }	
                if(
                    (Cf[faceI].y() > miny10) &&
                    (Cf[faceI].y() < maxy10) 
                  )
                {
                        field[faceI] = vector(1e-2, 0, 0);//气体速度
                }									
            }
        #};
    }
    
    outLet
    {
        type            zeroGradient;
    }
    
    walls
    {
        type            noSlip;
    }
    
    front
    {
    	type            empty;
    }
    back
    {
    	type            empty;
    }
    
    sand
    {
        type            noSlip;
    }
    
    //hydrate
    //{
    //type               noSlip;
    //}
    
    clay
    {
        type            noSlip;
    }
    

    }

    // ************************************************************************* //

    1 条回复 最后回复
  • J 离线
    J 离线
    JDZhang
    写于 最后由 编辑
    #5

    image.png这是这是网格,现在的孔径在10微米左右

    1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    写于 最后由 编辑
    #6

    边界条件应该没啥问题,就是接触角边界条件,我用的时候可能会搞反0°和180°,你自己最好确定一下。
    这种网格,大网格和小网格之间的变化是2倍的变化,有些地方生成的可能也不是很好。反正你现在是二维,要不就全加密到最小的尺寸?

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]