CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

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

    OpenFOAM
    3
    9
    2673
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • W
      walli1986 最后由 编辑

      各位好,

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

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

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

      谢谢

      Untitled Diagram.png

      队长别开枪 1 条回复 最后回复 回复 引用
      • W
        walli1986 最后由 编辑

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

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

        1 条回复 最后回复 回复 引用
        • 李东岳
          李东岳 管理员 最后由 编辑

          @walli1986 在 dynamic and static mesh 相结合问题 (pointwise生成网格) 中说:

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

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

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

          2023年线下CFD课 报名正式启动 http://dyfluid.com/class.html
          CFD高性能服务器 http://dyfluid.com/servers.html

          1 条回复 最后回复 回复 引用
          • 队长别开枪
            队长别开枪 教授 @walli1986 最后由 编辑

            @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。

            W 1 条回复 最后回复 回复 引用
            • W
              walli1986 @队长别开枪 最后由 编辑

              @队长别开枪 @东岳

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

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

              谢谢你们的回复!!!

              队长别开枪 1 条回复 最后回复 回复 引用
              • 队长别开枪
                队长别开枪 教授 @walli1986 最后由 编辑

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

                W 1 条回复 最后回复 回复 引用
                • W
                  walli1986 @队长别开枪 最后由 编辑

                  @队长别开枪 @东岳

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

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

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

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

                  movingWall.png
                  zoom.png

                  队长别开枪 1 条回复 最后回复 回复 引用
                  • 队长别开枪
                    队长别开枪 教授 @walli1986 最后由 编辑

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

                    W 1 条回复 最后回复 回复 引用
                    • W
                      walli1986 @队长别开枪 最后由 编辑

                      @队长别开枪

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

                      谢谢

                      1 条回复 最后回复 回复 引用
                      • First post
                        Last post