dynamic and static mesh 相结合问题 (pointwise生成网格)



  • 各位好,

    本人刚开始做动网格的数值模拟问题,想用interPhaseChangeDymFoam solver 来模拟流动问题。最近看了movingCone 和propeller 这二个OpenFOAM自带的例子。可是对其中的细节还不了解。。。

    我用修改的movingCone这例子来解释我想要做的模拟。原本的例子在movingWall动起来之后整个流场的网格都在动,我想把流场分成2部分,movingWall只在其中一个zone运动,另一个区域里的网格不动。

    我想用pointwise来生成整个网格。。。请问各位有推荐的帖子和算例么。。。

    谢谢

    Untitled Diagram.png



  • 怎么感觉大家都不在论坛上啊。。。

    请有动网格经验的人士给些建议啊~~~~~~



  • @walli1986dynamic and static mesh 相结合问题 (pointwise生成网格) 中说:

    原本的例子在movingWall动起来之后整个流场的网格都在动,我想把流场分成2部分,movingWall只在其中一个zone运动,另一个区域里的网格不动。

    目前你需要自己写代码实现相关的功能。默认是全场网格点的运动。可以设置不同的区域,仅仅移动某些区域内的点。

    https://github.com/OpenFOAM/OpenFOAM-dev/blob/master/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C


  • 自由表面模型副教授 OpenFOAM教授

    @walli1986 这个比较复杂,我们以前准备重叠网格先用第三方软件单独生成背景网格和物体网格,然后使用mergeMeshes命令,再结合一串辅助命令最后再配置好zone就可以使用了。我贴一个我们以前一个算例的代码

    #!/bin/sh
    # Source tutorial run functions
    . $WM_PROJECT_DIR/bin/tools/RunFunctions
    
    mkdir constant
    cp -rf bodyMesh/constant/polyMesh constant
    mergeMeshes .. case_01 . backgroundMesh
    rm -rf constant/polyMesh
    mv 0.*/polyMesh constant
    rm -rf 0.*
    rm -f constant/polyMesh/pointZones constant/polyMesh/pointZones.gz constant/polyMesh/faceZones constant/polyMesh/faceZones.gz constant/polyMesh/cellZones constant/polyMesh/cellZones.gz
    
    # Make cell zones for all regions and clean up
    regionCellSets
    setSet -batch setBatch.batch
    rm -f constant/polyMesh/sets/*_old constant/polyMesh/sets/*_old.gz
    rm -f constant/polyMesh/sets/cellRegion0 constant/polyMesh/sets/cellRegion0.gz constant/polyMesh/sets/cellRegion1 constant/polyMesh/sets/cellRegion1.gz
    setsToZones
    

    setBatch.batch文件

    cellSet sphere new cellToCell cellRegion0
    cellSet background new cellToCell cellRegion1
    
    cellSet cellRegion0 delete
    cellSet cellRegion1 delete
    quit
    

    topoSetDict文件:

    actions
    (
      {
        name    c0;
        type    cellSet;
        action  new;
        source sphereToCell;
        sourceInfo
        {
            centre          (0 0 0);
            radius          0.03499999;
        }
      }
      
      {
        name    c0;
        type    cellSet;
        action  invert;
      }
      
      {
        name    c0;
        type    cellSet;
        action  delete;
      }
    );
    

    不过现在我们只使用STAR CCM+,网格转换很快捷,以plus系列为例,只要运行ccmToFoam <ccm-file>就可以了,动网格就再加一个setFields



  • @队长别开枪 @东岳

    谢谢您和东岳的回复。。。 我已经找到方法去移动局部网格了,不过现在还有个问题,那个movingCone 算例里设置移动速度用的是uniform value. 在不修改code的情况下,我能给一个简单的方程控制移动速度么?我看到有些例子里用什么table来控制一些速度啥的,不过我不太清楚它是怎么实现的。你们有相关的资料么?

    或者,我能让code读一个文档么?这个文档是我自己定义的移动速度,不是一个简单的函数,不过也是一条曲线。。。

    谢谢你们的回复!!!


  • 自由表面模型副教授 OpenFOAM教授

    @walli1986 把你的速度函数离散化,然后用table就可以了。
    table: inline list of (time value) pairs; interpolates values linearly between times.
    (from https://cfd.direct/openfoam/user-guide/v6-boundaries/)



  • @队长别开枪 @东岳

    十分感谢您的指点,我现在会正确设置网格移动的方向和距离了。这个论坛真的给我们提供了一个学习的好地方。

    现在想请教一个网格的问题,不知道是在这里接着发好,还是另发一个贴好。

    第一个图显示计算模型的示意图,红色的是移动边界,但只向右边移动。。。第二个图是我画的一个很粗糙的网格,目的就是想看看怎样进行网格分布。我把动网格移动的区域弄成沿着水平方向规则的网格。那些标记为1,2,3,4的区域是我单独分开的。现在看起来 2,3,4 的网格还行。 就是不知道怎么画 1 处的网格。

    各位有更好的方法来划分区域么?

    movingWall.png
    zoom.png


  • 自由表面模型副教授 OpenFOAM教授

    @walli1986 我这有个不大成熟的分区方案(粗线),如图所示
    微信图片_20190708223130.png



  • @队长别开枪

    谢谢您的建议,感觉这个方案可行。 我尽早试试,给您答复。。。

    谢谢


Log in to reply