关于setFields工具设置的一些疑问



  • 各位前辈好:
    我最近在做船舶阻力的模拟,先是使用静网格模拟,得到了还算满意的结果,接着把静网格改成动网格,一开始看结果感觉还算靠谱。如图所示是释放升沉和纵倾两个自由度的船舶阻力模拟的曲线图。resistance.png
    然而由于昨天服务器突然断电,我想从保存的时间步继续运算的时候,才发现一开始设置好的相分数场,在计算了一段时间之后变得非常奇怪,已经不符合物理实际。如下图是一开始设置的相分数场和计算到30s的相分数场的图片。alpha.png alpha.water.png 。断电后在latestTime时间步上继续计算的算例也是算发散了。但是如果重头开始计算是可以计算的。
    我的blockMeshDict字典如下:

    /*--------------------------------*- C++ -*----------------------------------*\
    | =========                 |                                                 |
    | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \\    /   O peration     | Version:  v1912                                 |
    |   \\  /    A nd           | Website:  www.openfoam.com                      |
    |    \\/     M anipulation  |                                                 |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       dictionary;
        object      blockMeshDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    scale   1;
    
    xL	      -17.2;  //x负向距离
    xR	       12.9;  //x正向距离
    yL	      -8.6;  //y负向距离
    yR	       0;  //y正向距离
    zB	      -4.5;  //z1
    zM1B          -0.8;//z2
    zM2B	       -0.05;  //z3
    zM2T	       0.05;  //z4
    zM1T           0.8;//z5
    zT	           2.5;  //
    
    xMesh	    26;  //x方向网格数目   
    yMesh	     8;  //y方向网格数目
    z1Mesh	    34;  //z1方向网格数目    
    z2Mesh	    34;  //z2方向网格数目
    z3Mesh	    10;  //z3方向网格数目
    z4Mesh      34;//z4方向网格数目
    z5Mesh      15;//z5方向网格数目
    
    vertices
    (
        ($xL	$yL	   $zB)//0
        ($xR	$yL	   $zB)//1
        ($xR	$yR	   $zB)//2
        ($xL	$yR	   $zB)//3
    
        ($xL	$yL	   $zM1B)//4
        ($xR	$yL	   $zM1B)//5
        ($xR	$yR	   $zM1B)//6
        ($xL	$yR	   $zM1B)//7
    
        ($xL	$yL	   $zM2B)//8
        ($xR	$yL	   $zM2B)//9
        ($xR	$yR	   $zM2B)//10
        ($xL	$yR	   $zM2B)//11
    
    
        ($xL	$yL	   $zM2T)//12
        ($xR	$yL	   $zM2T)//13
        ($xR	$yR	   $zM2T)//14
        ($xL	$yR	   $zM2T)//15
    
        ($xL	$yL	   $zM1T)//16
        ($xR	$yL	   $zM1T)//17
        ($xR	$yR	   $zM1T)//18
        ($xL	$yR	   $zM1T)//19
    
        ($xL	$yL	   $zT)//20
        ($xR	$yL	   $zT)//21
        ($xR	$yR	   $zT)//22
        ($xL	$yR	   $zT)//23
    );
    
    blocks
    (
        hex (0 1 2 3 4 5 6 7) ($xMesh $yMesh $z1Mesh) simpleGrading (1 1 0.125)
    
        hex (4 5 6 7 8 9 10 11) ($xMesh $yMesh $z2Mesh) simpleGrading (1 1 1) 
        hex (8 9 10 11 12 13 14 15) ($xMesh $yMesh $z3Mesh) simpleGrading (1 1 1) 
        hex (12 13 14 15 16 17 18 19) ($xMesh $yMesh $z4Mesh) simpleGrading (1 1 1)
    
        hex (16 17 18 19 20 21 22 23) ($xMesh $yMesh $z5Mesh) simpleGrading (1 1 8)
    );
    
    edges
    (
    );
    
    boundary
    (
        atmosphere
        {
            type patch;
            faces
            (
                (20 21 22 23)
            );
        }
        outlet
        {
            type patch;
            faces
            (
                (0 4 7 3)
                (4 8 11 7)
                (8 12 15 11)
                (12 16 19 15)
                (16 20 23 19)
            );
        }
        inlet
        {
            type patch;
            faces
            (
                (1 5 6 2)
                (5 9 10 6)
                (9 13 14 10)
                (13 17 18 14)
                (17 21 22 18)
            );
        }
        bottom
        {
            type symmetry;
            faces
            (
                (0 3 2 1)
            );
        }
        side
        {
            type symmetry;
            faces
            (
                (0 1 5 4)
                (4 5 9 8)
                (8 9 13 12)
                (12 13 17 16)
                (16 17 21 20)
    
                (2 3 7 6)
                (6 7 11 10)
                (10 11 15 14)
                (14 15 19 18)
                (18 19 23 22)
            );
        }
    );
    
    mergePatchPairs
    (
    );
    

    将前后两个边界面都划分到side这一个boundary里面,不知道是不是导致问题的原因。
    setFields字典如下:(水线位置在z=0处)

    /*--------------------------------*- C++ -*----------------------------------*\
    | =========                 |                                                 |
    | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \\    /   O peration     | Version:  v1912                                 |
    |   \\  /    A nd           | Website:  www.openfoam.com                      |
    |    \\/     M anipulation  |                                                 |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       dictionary;
        location    "system";
        object      setFieldsDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    defaultFieldValues
    (
        volScalarFieldValue alpha.water 0
    );
    
    regions
    (
        // Set cell values
        // (does zerogradient on boundaries)
        boxToCell
        {
            box (-999 -999 -999) (999 999 0);
    
            fieldValues
            (
                volScalarFieldValue alpha.water 1
            );
        }
    
        // Set patch values (using ==)
        boxToFace
        {
            box (-999 -999 -999) (999 999 0);
    
            fieldValues
            (
                volScalarFieldValue alpha.water 1
            );
        }
    );
    
    // ************************************************************************* //
    

    alpha.water的边界条件如下所示:

    /*--------------------------------*- C++ -*----------------------------------*\
    | =========                 |                                                 |
    | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \\    /   O peration     | Version:  v1912                                 |
    |   \\  /    A nd           | Website:  www.openfoam.com                      |
    |    \\/     M anipulation  |                                                 |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       volScalarField;
        location    "0";
        object      alpha;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    dimensions      [0 0 0 0 0 0 0];
    
    internalField   uniform 0;
    
    boundaryField
    {
        #includeEtc "caseDicts/setConstraintTypes"
    
        inlet
        {
            type            fixedValue;
            value           $internalField;
        }
    
        outlet
        {
            type            variableHeightFlowRate;
            lowerBound      0;
            upperBound      1;
            value           $internalField;
        }
    
        atmosphere
        {
            type            inletOutlet;
            inletValue      $internalField;
            value           $internalField;
        }
    
        hull
        {
            type            zeroGradient;
        }
    }
    
    // ************************************************************************* //
    
    

    请有经验的前辈给点建议,谢谢。:chouchou:



  • FYI:
    速度场设置出了问题,现已解决。



  • 一般有啥问题,就参照tutorial里的DTCHull算例改就行了:146:



  • @cresendo 谢谢提醒,我就是做了一点点修改,有的时候会产生挺大的问题:mihu:


Log in to reply
 


CFD中文网 | 东岳流体学术 | 东岳流体商业 | 吉ICP备20003622号-1