CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    OF如何创建内部面,该面不影响流场,但可以监测流量

    OpenFOAM
    内部面,内部边界条件
    2
    15
    1077
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • W
      wwj 最后由 编辑

      c0915a77-4ddc-45d8-ac9d-e5db2b95812b-image.png

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

        创建一个 faceZone 就可以了。可以在画完网格之后用 topoSet 来创建,如果用snappyHexMesh 画网格,也可以直接在生成网格阶段就把 faceZone 生成出来。
        然后,用surfaceFieldValue 这个functionObject,设置位监控指定 faceZone 上面的流量

        W 1 条回复 最后回复 回复 引用
        • W
          wwj @xpqiu 最后由 编辑

          @xpqiu 非常感谢,我试试😄

          1 条回复 最后回复 回复 引用
          • W
            wwj 最后由 编辑

            简化模型---> 目的是监测中间面trans的流量 5b2ea749-7642-4918-b2e8-e00f0f33e612-image.png
            snappyHexMesh怎么生成trans这个监测面呢(面的几何信息,坐标大小)。还是在triSurface文件夹下stl文件中创建。
            580a4f70-b98b-4e90-b058-74789fd7fa40-image.png
            controlDict文件
            9c78d542-f3f1-4f8f-813a-bc085eeb7f1e-image.png
            按照您说的思路来的但是有些具体问题我还是不怎么明白,刚用snappyhexmesh很多不太懂,您看看怎么修改才能实现我想要的功能呢,能具体一点吗,万分感谢!

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

              @wwj

              首先,把你的监控面单独保存到一个 stl 里面
              然后,snappyHexMesh 里面按照你上面图片那样,定义faceZone,比如定义为 faceZone trans; ,这个trans 就是你的faceZone 名字了。

              functionObject里面,regionType 改为 faceZone,name 就是 trans,应该就可以了。

              W 1 条回复 最后回复 回复 引用
              • W
                wwj @xpqiu 最后由 编辑

                @xpqiu我这样设置了,网格就变成inlet tube trans这三个了,outlet就消失了,边界条件里面也不显示,我再试试。

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

                  @wwj

                  你需要把 trans 单独拿出来作为一个单独的 stl文件,而不要让它是 test 文件的一部分。

                  W 1 条回复 最后回复 回复 引用
                  • W
                    wwj @xpqiu 最后由 wwj 编辑

                    @xpqiu,我分开试了也不行,您看看还有其他问题吗

                    
                    //-----------------------------------------------------------
                    geometry
                    {
                        geo1.stl    //文件名
                        {
                            type triSurfaceMesh;
                            name test1; 
                            regions
                            {                  			
                                tube
                                {name tube;}	
                                outlet
                                {name outlet;}
                                inlet
                                {name inlet;}
                            }
                        }
                        geo2.stl    //文件名
                        {
                            type triSurfaceMesh;
                            name test2; 
                            regions
                            {                  			               
                               trans
                               {name trans;}	
                            } 
                        }      
                    }
                    
                    castellatedMeshControls
                    {
                        maxLocalCells 100000;                   //单核最大网格量
                        maxGlobalCells 2000000;                 //全局最大网格量
                        minRefinementCells 0;                   //最小细化单元数
                        maxLoadUnbalance 0.10;                  //最大负载平衡参数(0-1)
                        nCellsBetweenLevels 2;                  //缓冲层数(1表示不过渡)
                        resolveFeatureAngle 60;		            //自动检测角.值越小,锐利边缘的分辨率越好。	
                        planarAngle 30;                         //如果未指定,则与resolveFeatureAngle相同
                        allowFreeStandingZoneFaces true;        //允许有独立面
                        locationInMesh (10 0 0);               //网格域控制点
                    
                        //-----------------------------------------------------------
                        features     //特征的细化参数.允许显式的特征边缘细化,并为由其边缘相交的任何像元选择一个级别。
                        (
                            {
                                file "geo1.eMesh";   //surfaceFeatures命令自动创建在triSurface/下,注意名称/surfaceFeaturesDict一致.
                                level 0;
                            }
                            {
                                file "geo2.eMesh";   
                                level 0;
                            }
                         
                        );   
                        //-----------------------------------------------------------
                        refinementSurfaces  //Surface based refinement
                        {
                           test1
                           {
                               level (0 0);	               
                                regions
                                {
                                    tube
                                    {level (1 1); patchInfo {type wall;}}	                
                                    inlet
                                    {level (1 1); patchInfo {type patch;}}
                                    outlet
                                    {level (1 1); patchInfo {type patch;}}	
                     	                        
                                }       
                            } 
                            test2
                            {
                                level (0 0);	               
                                 regions
                                 {         
                                    trans
                                    {level (1 1); faceZone trans;  }                              
                                 }       
                             }                                      
                        }
                        //-----------------------------------------------------------
                        refinementRegions   //Region-wise refinement
                        {
                      
                        }
                        //-----------------------------------------------------------  
                    }
                    
                    
                    
                    X 1 条回复 最后回复 回复 引用
                    • X
                      xpqiu 教授 @wwj 最后由 编辑

                      @wwj 在 OF如何创建内部面,该面不影响流场,但可以监测流量 中说:
                      改成这样:

                              test2
                               {
                                   level (0 0);	               
                                    regions
                                    {         
                                       trans
                                       {level (1 1);  }                              
                                    } 
                                 faceZone trans;      
                               }                           
                      
                      
                      W 2 条回复 最后回复 回复 引用
                      • W
                        wwj @xpqiu 最后由 编辑

                        @xpqiu 成功啦,困扰我好几天了,谢谢您了😁

                        1 条回复 最后回复 回复 引用
                        • W
                          wwj @xpqiu 最后由 编辑

                          @xpqiu
                          snppyhexmesh 用您说的方法可以监测内部面,但有个新的问题是,生成边界层网格后内部面边缘就被边界层挤掉了,造成监测面面积变小。加密内部面边缘后,也存在面积偏小,并且影响边界层。这里为了显示该面,增加了faceType baffle。具体如下图所示:
                          590f0107-fba1-423e-b93e-a7ed45d7360e-image.png

                          后来又想到您说的第一个方法,用topoSet,但不知道sourceInfo怎么写,卡到了这里

                          actions
                          (
                              {
                                  name   trans; // 给所生成的集合命名
                                  type    faceZoneSet;   // 需要生成的集合类型,有pointSet/faceSet/cellSet/faceZoneSet/cellZoneSet
                                  action  new;      // 操作类型,new/add/delete/subset/clear/invert/remove
                                  source  setToFaceZone; // 操作对象, pointToCell/boxToCell等
                                  sourceInfo  // 操作对象的信息
                                  {
                                     //不知福怎么描述trans这个面
                                  }
                              }
                          );
                          
                          
                          X 1 条回复 最后回复 回复 引用
                          • X
                            xpqiu 教授 @wwj 最后由 编辑

                            @wwj

                            给你一个格式参考一下

                                {
                                    name    samplingFace;
                                    type    faceSet;
                                    action  new;
                                    source  boxToFace;
                                    box     (2.6 0.75 0)(2.64 0.8 0.1);
                                }
                                {
                                    name    samplingFace;
                                    type    faceZoneSet;
                                    action  new;
                                    source  setToFaceZone;
                                    faceSet    samplingFace;
                                }
                            

                            要创建 faceZone 得先创建 faceSet,上面第一部分是创建 faceSet,第二部分是根据 faceSet 创建 faceZone。
                            创建faceSet 的时候,你需要仔细设置 box 坐标,保证这个 box 只会框选到你需要的面(面心在这个box的face都会提取到faceSet中)。

                            W 1 条回复 最后回复 回复 引用
                            • W
                              wwj @xpqiu 最后由 编辑

                              @xpqiu采用这种方法解决了边界层挤掉面的问题,但生成的faceZone如图1所示,如果选取的box比较薄的话,生成的面不全。
                              e62cc17a-4a4f-46ad-81b4-e8a90424b28c-image.png
                              box比较厚的话,生成的面是这样,监测的流量也不对。
                              35115d21-5abb-474d-9b1d-7a24f91e4577-image.png

                              topoSetDict文件

                              actions
                              (
                                  {
                                      name   preTrans; 
                                      type    faceSet;   
                                      action  new;       
                                      source  boxToFace;
                                      sourceInfo
                                      {
                                          box (20 -15 -15)(20.5 15 15);
                                      }       
                                  }
                              
                                  {
                                      name    trans;
                                      type    faceZoneSet;
                                      action  new;
                                      source  setToFaceZone;
                                      sourceInfo
                                      {
                                          faceSet preTrans;
                                      }
                                      
                                  }
                              );
                              
                              X 1 条回复 最后回复 回复 引用
                              • X
                                xpqiu 教授 @wwj 最后由 编辑

                                @wwj
                                所以说这个坐标你要精心地选择,从你的图看,显然你的x方向坐标选择不合理。
                                假设有一层网格,x 坐标是 0.123456
                                那么你的 toposet 里面, x 最小值设置为 0.123455,最大值设置为0.123457 ,这样就能保证只选到一层了。

                                W 1 条回复 最后回复 回复 引用
                                • W
                                  wwj @xpqiu 最后由 编辑

                                  @xpqiu 调小坐标范围,问题解决了^_^

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