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. 关于setFields工具设置的一些疑问

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

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

    各位前辈好:
    我最近在做船舶阻力的模拟,先是使用静网格模拟,得到了还算满意的结果,接着把静网格改成动网格,一开始看结果感觉还算靠谱。如图所示是释放升沉和纵倾两个自由度的船舶阻力模拟的曲线图。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:

    1 条回复 最后回复
  • 一 离线
    一 离线
    一朵苍凉
    写于 最后由 编辑
    #2

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

    L 1 条回复 最后回复
  • C 离线
    C 离线
    cresendo
    写于 最后由 编辑
    #3

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

    一 2 条回复 最后回复
  • 一 离线
    一 离线
    一朵苍凉
    在 中回复了 cresendo 最后由 编辑
    #4

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

    1 条回复 最后回复
  • 一 离线
    一 离线
    一朵苍凉
    在 中回复了 cresendo 最后由 编辑
    #5

    @cresendo 您好,还是之前paraview显示的场出现马赛克状显示混乱的问题,但是完全不影响对受力的求解,您觉得会不会是symmetryPlane的问题?

    C 1 条回复 最后回复
  • C 离线
    C 离线
    cresendo
    在 中回复了 一朵苍凉 最后由 编辑
    #6

    @一朵苍凉 你是不是采用renumberMesh -overwrite了,网格的序号对不上了?我之前也遇到过类似的问题

    一 1 条回复 最后回复
  • B 离线
    B 离线
    BlookCFD
    写于 最后由 编辑
    #7

    这个问题跟setFields什么关系?
    另外,这很可能是你续算操作本身的问题,应该将续算每一个步骤仔细说明一下

    1 条回复 最后回复
  • 一 离线
    一 离线
    一朵苍凉
    在 中回复了 cresendo 最后由 编辑
    #8

    @cresendo 对,我用了这个工具,不是说可以使矩阵更加对角占优以提高求解效率嘛:chouchou:

    C 1 条回复 最后回复
  • 一 离线
    一 离线
    一朵苍凉
    写于 最后由 编辑
    #9

    @blookcfd 谢谢回复,续算就是在原来计算的时间步上,重新decompose然后将controlDict调成latestTime进行的。

    1 条回复 最后回复
  • C 离线
    C 离线
    cresendo
    在 中回复了 一朵苍凉 最后由 编辑
    #10

    @一朵苍凉 这个操作必须要在求解前完成(也就是在输出时间步之前),否则这会导致polymesh里网格的编号与时间步里的编号不一致,所以会在后处理时发生这个问题。这个问题在中文网里有专门的帖子,你可以搜搜看:146:

    一 1 条回复 最后回复
  • 一 离线
    一 离线
    一朵苍凉
    在 中回复了 cresendo 最后由 编辑
    #11

    @cresendo 太感谢了,这个问题困扰我好久了,你也是做海洋结构物吗,感觉咱们方向很像,能不能加个微信想向你请教请教:140:

    C 1 条回复 最后回复
  • C 离线
    C 离线
    cresendo
    在 中回复了 一朵苍凉 最后由 编辑
    #12

    @一朵苍凉 主页里有我邮箱,可以邮件再联系:ok3:

    一 1 条回复 最后回复
  • 一 离线
    一 离线
    一朵苍凉
    在 中回复了 cresendo 最后由 编辑
    #13

    @cresendo :emmm你邮箱是不是隐藏了,我没看见诶

    C 1 条回复 最后回复
  • C 离线
    C 离线
    cresendo
    在 中回复了 一朵苍凉 最后由 编辑
    #14

    @一朵苍凉 songtao.chen@sjtu.edu.cn

    1 条回复 最后回复
  • L 离线
    L 离线
    lyc
    在 中回复了 一朵苍凉 最后由 编辑
    #15

    @一朵苍凉 楼主您好,我想请问一下,setFieldsDict能否设置初始矢量场,比如速度。我尝试了一次,将fieldValues下面的volScalarField改成了volVectorField但是系统报错,显示:Expected a '(' while reading VectorSpace
    谢谢前辈!

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wangwang
    在 中回复了 lyc 最后由 编辑
    #16

    @lyc 你好,看这个报错是不是漏写了括号?比如(1 0 0)-> 1 0 0

    L 1 条回复 最后回复
  • L 离线
    L 离线
    lyc
    在 中回复了 wangwang 最后由 编辑
    #17

    @wangwang 谢谢前辈,是的发现问题了

    1 条回复 最后回复

  • 登录

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