CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    关于二维模型的计算,这两种snappyHexMesh方法有什么不同,应该采用哪一个?

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

      利用二维水槽来研究波浪-圆柱固体耦合,水槽的前后两面(sides)的边界条件为empty,以下这两种网格划分方式有什么区别?:

      方法一:
      (1)先使用blockMesh划分背景网格;
      (2)在生成的‘’polyMesh‘’文件夹下的‘’boundary''文件中,将sides的type由empty修改为wall;
      (3)再执行snappyHexMesh生成带有圆柱固体的网格;
      (4)再将‘’polyMesh‘’文件夹下的‘’boundary''文件中 sides的type由wall修改为empty,从而开展后续的二维数值计算。

      这种网格生成的方法只需13.33s,如下图所示
      4444444444444444.png

      方法二:
      (1)先使用blockMesh划分背景网格;
      (2)直接执行snappyHexMesh生成带有圆柱固体的网格,以开展后续的二维数值计算。

      这种网格生成的方法在生成过程中会有这样的提示

      生成提示.png

      网格生成时间需要417秒

      生成时间1.png

      这两种方法所需的时间差别很大,生成网格的cells和faces数相同,points数略有不同,但是计算结果也不完全相同,有差别。

      请老师们指点,两种网格划分的区别,二维模型的流固耦合计算,应该选择哪种方法?

      史 1 条回复 最后回复 回复 引用
      • DY大世界
        DY大世界 最后由 编辑

        @东岳 @队长别开枪 @史浩
        没有人回复,所以冒昧的艾特大佬们了,麻烦老师帮助看一下该问题,十分抱歉十分感谢!:xiexie:

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

          snappyHexMesh默认出的是三维网格,你二维网格后来怎么处理的?没看到你处理啊

          线上CFD课程开始报名:http://www.dyfluid.com/class.html

          CFD高性能服务器 http://dyfluid.com/servers.html

          DY大世界 1 条回复 最后回复 回复 引用
          • DY大世界
            DY大世界 @李东岳 最后由 编辑

            @东岳
            谢谢李老师的回复!!

            这两种方法都是在数值计算前把front和back两个面(sides)的边界条件设置为empty后才进行计算的,边界设置成empty就是表明模型是二维的了。

            在网格划分的过程中,我在blockMesh中将这两个面的边界设置为empty,

            两种方法的区别就是:

            方法一是:在使用snappyHexMesh前先将这两个面的边界改为wall,这样在snappyHexMesh过程中就没有图2的警示了,而且网格划分消耗的时间很少。在使用完snappyHexMesh后再把边界由wall改为empty进行数值计算。

            方法二是:在使用snappyHexMesh时不修改front和back的边界条件,两个面的type依然是empty,这样就会出现图二的警示,而且计算时间很长。

            但是这两种方法得到的cells和faces是相同的,就是points稍有不同,不过数值计算结果也是略有差异。所以实际最好采用哪种方法来划分网格进行二维数值计算呢。

            方法一中我把front和back的边界改为wall后再使用snappyHexMesh,是考虑snappyHexMesh只能划分三维网格,所以边界的type如果是empty应该就不合适了,所以系统也会出现警示。但是仿真的是二维模型,所以在网格划分完成后再将这两个面的type改为empty。

            9b793fa2-2744-4d73-85a2-af30fbcf8aa6-image.png

            1 条回复 最后回复 回复 引用
            • X
              xpqiu 教授 最后由 编辑

              这两种应该都不对
              snappyHexMesh会在三个方向上都加密。对于二维网格,要求是 empty 方向上只有一层网格(或者层数要是一样的),用snappyHexMesh加密,empty方向上的网格层数可能在不同位置会不一样。你可以截图看一下,x,y,z,三个方向分别做一个slice,看看是不是我说的那样。如果empty方向上的网格不是一层,那么二维计算是有问题的。
              为了得到empty方向上只有一层网格,有一个办法是先按照你描述的第一种方法用snappyHexMesh生成网格,然后,再用 extrudeMesh 来把某一个 empty patch 拉升一层网格,这样得到的就是常见的二维网格了。

              DY大世界 2 条回复 最后回复 回复 引用
              • DY大世界
                DY大世界 @xpqiu 最后由 编辑

                @xpqiu 收到!感谢老师的指导!巨谢!:146:

                1 条回复 最后回复 回复 引用
                • DY大世界
                  DY大世界 @xpqiu 最后由 编辑

                  @xpqiu

                  老师不好意思又打扰您了,按照您的指点现在划分的网格在empty方向上处处都有只有一层网格了;

                  但是不知道为什么现在网格是二维的了,但计算确发散了。利用extrudeMesh将三维网格转换为二维网格需要注意什么吗,现在不管怎么调试都是出现下图所示。

                  ee6215f2-23c3-4a64-abe6-00dcf9c966f7-image.png

                  X 1 条回复 最后回复 回复 引用
                  • 史
                    史浩 讲师 @DY大世界 最后由 编辑

                    @DY大世界 久闻snappyHexMesh大名,遗憾从来没用过,平时计算的季和模型都比较简单:mihu: 抱歉,估计忙不上你什么忙
                    你在文中说网格和计算结果都会略有不同,有没有图可以展示一下他们的不同?

                    让我们随波逐流

                    DY大世界 1 条回复 最后回复 回复 引用
                    • X
                      xpqiu 教授 @DY大世界 最后由 编辑

                      @DY大世界
                      extrudeMesh 之后,是否运行了 checkMesh 来检查网格质量?
                      不确定你的流程是否对,可以参考一下 /tutorials/incompressible/pimpleFoam/RAS/wingMotion 这个算例。这个是用 snappyHexMesh 生成 2d 网格的例子。

                      DY大世界 2 条回复 最后回复 回复 引用
                      • DY大世界
                        DY大世界 @xpqiu 最后由 编辑

                        @xpqiu 好的,谢谢老师的指点回复!

                        1 条回复 最后回复 回复 引用
                        • DY大世界
                          DY大世界 @史浩 最后由 编辑

                          @史浩 好的,很感谢大佬的回复,我对比看看结果!

                          1 条回复 最后回复 回复 引用
                          • DY大世界
                            DY大世界 @xpqiu 最后由 编辑

                            @xpqiu 你好大神,我想再问您一下,这两天我看了一些文献,有很多文章都是在使用snappyHexMesh后,没有再用extrudeMesh命令,而是直接把前后面的type设置成empty进行计算。但是仿真结果与试验的对比也挺好。

                            我想问一下这种使用snappyHexMesh后通过直接设置front和back的type为empty的方法,能否表示二维模型,这种网格是算二维的还是三维的。因为他们的计算结果精度挺好,是否表明这种方法对于二维模型是可行的?

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

                              把文章贴上来看看,这应该是错误的

                              线上CFD课程开始报名:http://www.dyfluid.com/class.html

                              CFD高性能服务器 http://dyfluid.com/servers.html

                              DY大世界 1 条回复 最后回复 回复 引用
                              • DY大世界
                                DY大世界 @李东岳 最后由 编辑

                                @东岳 感谢李老师回复!

                                例如这篇文章没有提到extrudeMesh,说的是将三维转换成二维只需要将边界指定为empty。

                                41957e73-5e1b-430b-b3b5-16e1a30804bf-image.png

                                现在我的案例是关于波浪-固体耦合的,如果不用extrudeMesh还好,一使用计算就发散,不知道使用extrudeMesh后还有什么要求,比如setFields什么的。

                                1 条回复 最后回复 回复 引用
                                • X
                                  xpqiu 教授 @DY大世界 最后由 编辑

                                  @DY大世界 某个方向设置为 empty,那么这个方向的流场就不会再计算。以前的版本如果empty方向的网格不是固定层数,是无法计算的,checkMesh 也会报一个提示:

                                   ***Total number of faces on empty patches is not divisible by the number of cells in the mesh. Hence this mesh is not 1D or 2D.
                                  

                                  经测试,现在新的版本可以计算,但是结果我没有验证过。从计算的角度来讲,即使这样算出来结果是合理的,也增加了很多没必要的计算,因为这样处理,网格数量会比单层的2维网格多很多。
                                  另外,假设举个例子,一个方形计算区域,中心部分用snappyHexMesh进行了加密,然后x 方向设置为 empty ,那么你计算完的结果,在x 方向上不同位置的截面上流场可能是不一样的,因为网格数量可能不一样,这样显然跟二维计算的概念是不符合的。

                                  DY大世界 1 条回复 最后回复 回复 引用
                                  • DY大世界
                                    DY大世界 @xpqiu 最后由 编辑

                                    @xpqiu 非常感谢大佬的回答,那不用extrudeMesh命令所得到的确实是不正确的二维网格。而且我对比了使用extrudeMesh与不使用extrudeMesh的计算案例,得到的结果也是不完全吻合。:xiexie:

                                    1 条回复 最后回复 回复 引用
                                    • S
                                      Samuel-Tu 最后由 Samuel-Tu 编辑

                                      @xpqiu @DY大世界
                                      我也遇到这个问题了。看网上说的是先createPatch,就是说把empty的一个面先提取出来,然后用extrudeMesh把这个patch沿着垂直方向推一个网格,形成三维的网格。但是我发现,沿着那个方向竟然不是一层网格。原因在于悬挂节点,因为shm的时候用了refine的设置,加密的交界面是悬挂节点,这导致在extrude的时候没法是一层网格,见下图
                                      首先是我按上述说法做出的沿厚度方向只有一层网格的图:
                                      jiami.png
                                      然后提取加密交接面的网格,外表看起来是一层网格
                                      xuangua.png
                                      然而细看,竟然是两层网格
                                      wangge.png
                                      我就是通过patch extrude出来的一层网格,但是有的地方(主要是加密变化造成的悬挂节点的地方)还是出现两层网格,很疑惑。。

                                      X 1 条回复 最后回复 回复 引用
                                      • C
                                        cresendo 最后由 编辑

                                        @Samuel-Tu 你好,最近自己也刚好尝试过一个二维算例,网格划分参照的是OpenFOAM/OpenFOAM-8/tutorials/incompressible/pimpleFoam/RAS/wingMotion这个自带算例。里面包括如何先用snappy划分,再利用extrudeMesh和createPatch。会不是顺序有哪里出错了呢

                                        S 1 条回复 最后回复 回复 引用
                                        • S
                                          Samuel-Tu @cresendo 最后由 编辑

                                          @cresendo 顺序没有错,那个案例我看过,下午我再去检查一下那个wingMotion案例的网格是否是严格二维的。。因为按理说二维网格的厚度方向只能有一层网格,但是只要shm里用了refine加密,加密的截面上就有悬挂节点,加密截面的那里extrudeMesh生成网格在厚度方向就不止一层网格了

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

                                            为何不extrude之后再加密?

                                            线上CFD课程开始报名:http://www.dyfluid.com/class.html

                                            CFD高性能服务器 http://dyfluid.com/servers.html

                                            S 1 条回复 最后回复 回复 引用
                                            • V
                                              veen 最后由 编辑

                                              cfmesh好像能定义不同方向不同的加密

                                              S 1 条回复 最后回复 回复 引用
                                              • S
                                                Samuel-Tu @李东岳 最后由 编辑

                                                @李东岳 在shm里面加密的原因是第一步切割和第二步snap的时候能更好的拟合stl文件。。extrude之后加密对shm是没有影响,但是对拟合stl文件里的形状就没有作用了。。。我现在是现在gmsh里面画好渐变 网格,在shm里面就不refine了

                                                1 条回复 最后回复 回复 引用
                                                • S
                                                  Samuel-Tu @veen 最后由 编辑

                                                  @veen cfmesh试过,算的很快,但是遇到复杂的模型发现网格效果没有shm好。。。

                                                  V 1 条回复 最后回复 回复 引用
                                                  • V
                                                    veen @Samuel-Tu 最后由 编辑

                                                    @Samuel-Tu 好滴,gmsh和salome哪个好一些呢?

                                                    S 1 条回复 最后回复 回复 引用
                                                    • X
                                                      xpqiu 教授 @Samuel-Tu 最后由 李东岳 编辑

                                                      @Samuel-Tu

                                                      有可能是 paraview 显示的问题,你把 decompose polyhedra mesh 关掉再看看网格。
                                                      snappyHexMesh 画二维网格的流程可以参考 tutorials 里面 incompressible/pimpleFoam/RAS/wingMotion 这个算例,前面也有人提到了。

                                                      S 1 条回复 最后回复 回复 引用
                                                      • S
                                                        Samuel-Tu @veen 最后由 编辑

                                                        @veen 我对gmsh熟一点,但是我感觉salome上限更高。。一般我只用salome画stl几何文件,不怎么用它画网格,没太搞明白如何精准设置网格类型和参数,如果有教程可以推给我看看。。

                                                        1 条回复 最后回复 回复 引用
                                                        • S
                                                          Samuel-Tu @xpqiu 最后由 Samuel-Tu 编辑

                                                          @xpqiu 我算了这个算例,结果如下:
                                                          首先看全局的网格似乎确实只有一层:
                                                          11111.png
                                                          提取一下加密界面的网格发现:
                                                          22222.png
                                                          还是有这种两层的网格。

                                                          @xpqiu 在 关于二维模型的计算,这两种snappyHexMesh方法有什么不同,应该采用哪一个? 中说:

                                                          有可能是 paraview 显示的问题,你把 decompose polyhedra mesh 关掉再看看网格

                                                          我没有找到这个按钮,但是后来我打开了VTK Polyhedra按钮,发现确实是显示的问题,双层网格不见了,加密界面都是单层的多面体了。
                                                          ffefef.png

                                                          X 1 条回复 最后回复 回复 引用
                                                          • X
                                                            xpqiu 教授 @Samuel-Tu 最后由 李东岳 编辑

                                                            @Samuel-Tu 在 关于二维模型的计算,这两种snappyHexMesh方法有什么不同,应该采用哪一个? 中说:

                                                            嗯,看来是显示的问题

                                                            Decomopose polyhedra 我指的是如下按钮,用 paraview 打开 .foam 后缀读取 openfoam 结果的时候有这个选项。
                                                            或者还有一个方法是用 foamToEnsight 转换成 ensight 格式来看
                                                            047ca4c4-2c55-40bd-864b-a0486210bee8-image.png

                                                            1 条回复 最后回复 回复 引用
                                                            • V
                                                              veen 最后由 编辑

                                                              @Samuel-Tu 最近几天看了看salome,感觉照着官方的tut操作一遍,使用上应该没啥问题了,除了操作有点繁琐,其他感觉用起来还挺顺手的,我先学学,学会了可能在b站录个系列教程。
                                                              salome的第一个tut就可以创建只有一层的网格,楼主有需要可以自己去看看。
                                                              af242c29-951a-483a-ac92-5df791958c1f-image.png

                                                              S 1 条回复 最后回复 回复 引用
                                                              • S
                                                                Samuel-Tu @veen 最后由 编辑

                                                                @veen 好的。等你的教程,嘿嘿

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