SnappyHexMesh(之三)全局参数
转载:知乎大神 中国空气动力研究与发展中心 力学博士 刘云楚 的文章
5.3全局参数(Global)
snappyHexMesh采用自上而下生成网格的方法,即先生成求解域内体网格,在将体网格拟合到几何表面。全局性参数设置主要包含全局网格细化控制参数(castellatedMesh-Controls)与面贴合参数设置(snapControls)。
5.3.1全局网格细化参数
全局网格细化参数在castellatedMeshControls中设置,其目的为细化背景网格(例如:采用blockMesh生成的网格文件),通过细化背景网格以使几何特征与几何表面上拥有一定网格量,以提高几何特征捕捉的准确性。同时通过参数设置,保证网格细化时尺寸变化尽量平缓。
完整命令输入示例如下:
castellatedMeshControls { maxLocalCells 10500000; maxGlobalCells 80000000; minRefinementCells 1; maxLoadUnbalance 0.2; nCellsBetweenLevels 3; resolveFeatureAngle 30; allowFreeStandingZoneFaces false; locationInMesh (0 0 0); features ( … ); refinementRegions { … } refinementSurfaces { … } }
其中features、refinementRegions、refinementSurfaces为局部网格细化功能,会在后面章节详细讲解。本章节主要针对网格细化时全局性优化算法控制参数,并展示一些重要参数的网格控制效果图。
全局最大网格量maxGlobalCells
网格细化过程中的最大允许网格划分数量。该功能主要目的是保证网格细化过程中,避免划分网格量太大,导致计算机内存溢出。当划分网格量超过此值时,细化过程将立即终止。此时,局部细化功能可能终止运行(例如,未执行某些体域或面域的细化)。
注:其最大网格量是在网格创建步骤中,未去除计算域外单元时的总单元数。最终生成的单元总数可能比此值小。
单核最大网格量maxLocalCells
该参数主要应用于网格并行计算,其指定了细化网格过程中每个处理器处理的最大数量网格数。若太小将导致处理器间迭代次数增加,计算效率降低。设置合理的单核最大网格量可极大地提高网格并行计算效率,有助于平衡每个处理器的网格计算量。如果单核处理实际单元数量大于该设定参数,则网格分配算法由平衡细化后单元数控制(默认算法)改为加权平衡细化前单元数控制。固设置该参数时请保证一定的富余量,经常重新平衡每个处理器计算量将减慢网格生成过程。
注:在大型集群网格并行计算时,从最优单核计算效率上考虑,单核单线程网格计算量可控制在3-5十万个网格之间。
最大负载平衡参数maxLoadUnbalance
该参数主要应用于网格并行计算。用户可通过设置该值,以允许各个处理器间网格计算负载一定程度上不均衡。当该参数值为0时,即强制负载平衡,即各处理器间处理的网格量严格保持单元总数/计算核数。较低的值(例如0)可能会导致系统频繁的均衡网格负载量。而参数值设置为1时,则完全禁用网格均衡操作。
最小细化单元数minRefinementCells
该参数指定了需细化特征的最小单元数。若特征上网格单元数量小于该参数,则停止对其细化。例如:进行表面细化算法时,软件可能会对小特征面上几个单元网格进行大量细化迭代,占用了较多计算资源,而细化后的网格质量并不理想。用户可以通过该参数,停止其细化迭代。
注意:除非要细化表面上没有网格单元,否则至少要执行一次迭代。
缓冲层数nCellsBetweenLevels
snappyHexMesh网格拆分采用八叉树法,在网格等级相差较大区域,网格尺寸大小变化比较剧烈。用户可用使用nCellsBetweenLevels参数指定不同细化级别之间的缓冲区体网格层数,使网格大小变化更平缓,该参数值必须大于或等于1。
若用户设置参数值为1,则表示不添加过渡区域。越大的值可使得网格大小过渡越平缓,但将导致网格量增加。
下图显示了不同缓冲层数参数设置,其体网格缓冲区网格过渡差异。
图1. 不同缓冲层参数网格生成
注:建议参数值设为3,既保证了不同单元等级间网格过渡性,也将网格数量控制在可接受范围内。
自动检测角resolveFeatureAngle
若用户想自动加密相交面、边以及曲率较大的面、边时,可使用resolveFeatureAngle参数。当曲率变化角超过该参数值时,特征区域网格使用最大面细化等级,而低于此角度的特征均采用最小面细化级别。默认参数值为30,参数值设置为360时,表示关闭此功能。
该参数生效的前置条件:1、面细化参数中最小和最大细化等级需不同。2、面贴合过程中特征捕捉需采用隐式方法。
特征处细化效果如下例所示:
图2. 单个面、边的曲率较大部分细化情况
图3.相交面、边夹角部分细化情况
网格域控制点locationInMesh
snappyHexMesh网格划分方法需要用户先提供一套背景网格,然后根据用户导入的封闭几何文件划分网格。在此过程中,用户可通过设置网格域控制点(locationInMesh)参数,指定需要保留背景网格表面与封闭几何表面之间的网格,还是封闭几何内部的网格。保留区域网格中需包含指定的参数点,该点的位置不能和网格单元的面或边重合(如下图所示)。
1、控制点位于封闭几何体内部,网格生成效果如下:
图4. 控制点参数网格效果展示
2、控制点位于封闭几何体与背景网格区域之间,网格生成效果如下:
图5. 控制点参数网格效果展示
允许有独立面allowFreeStandingZoneFaces
该参数定义是否允许几何中有独立的面存在。若设置参数值为false,则表示在面加密(refinementSurfaces)中用户指定的faceZones仅位于相应cellZones的边界上,作为不同域之间交界面。若该参数值为true,则允许此faceZones作为独立面域(例如:挡板界面等)。如果用户没有指定faceZones,则该参数不生效。