OF如何创建内部面,该面不影响流场,但可以监测流量
-
-
创建一个 faceZone 就可以了。可以在画完网格之后用 topoSet 来创建,如果用snappyHexMesh 画网格,也可以直接在生成网格阶段就把 faceZone 生成出来。
然后,用surfaceFieldValue 这个functionObject,设置位监控指定 faceZone 上面的流量 -
@xpqiu 非常感谢,我试试😄
-
简化模型---> 目的是监测中间面trans的流量
snappyHexMesh怎么生成trans这个监测面呢(面的几何信息,坐标大小)。还是在triSurface文件夹下stl文件中创建。
controlDict文件
按照您说的思路来的但是有些具体问题我还是不怎么明白,刚用snappyhexmesh很多不太懂,您看看怎么修改才能实现我想要的功能呢,能具体一点吗,万分感谢! -
首先,把你的监控面单独保存到一个 stl 里面
然后,snappyHexMesh 里面按照你上面图片那样,定义faceZone,比如定义为faceZone trans;
,这个trans 就是你的faceZone 名字了。functionObject里面,regionType 改为 faceZone,name 就是 trans,应该就可以了。
-
@xpqiu我这样设置了,网格就变成inlet tube trans这三个了,outlet就消失了,边界条件里面也不显示,我再试试。
-
你需要把 trans 单独拿出来作为一个单独的 stl文件,而不要让它是 test 文件的一部分。
-
@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 { } //----------------------------------------------------------- }
-
@wwj 在 OF如何创建内部面,该面不影响流场,但可以监测流量 中说:
改成这样:test2 { level (0 0); regions { trans {level (1 1); } } faceZone trans; }
-
@xpqiu 成功啦,困扰我好几天了,谢谢您了😁
-
@xpqiu
snppyhexmesh 用您说的方法可以监测内部面,但有个新的问题是,生成边界层网格后内部面边缘就被边界层挤掉了,造成监测面面积变小。加密内部面边缘后,也存在面积偏小,并且影响边界层。这里为了显示该面,增加了faceType baffle。具体如下图所示:
后来又想到您说的第一个方法,用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这个面 } } );
-
给你一个格式参考一下
{ 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中)。 -
@xpqiu采用这种方法解决了边界层挤掉面的问题,但生成的faceZone如图1所示,如果选取的box比较薄的话,生成的面不全。
box比较厚的话,生成的面是这样,监测的流量也不对。
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; } } );
-
@wwj
所以说这个坐标你要精心地选择,从你的图看,显然你的x方向坐标选择不合理。
假设有一层网格,x 坐标是 0.123456
那么你的 toposet 里面, x 最小值设置为 0.123455,最大值设置为0.123457 ,这样就能保证只选到一层了。 -
@xpqiu 调小坐标范围,问题解决了^_^