SnappyHexMesh是OPENFOAM®开源软件中的一个网格生成工具,它基于Hex-dominant网格算法类型。这个工具生成由六面体(hex)和分割六面体(split-hex)元素组成的三维非结构化或混合网格。
使用Hex-dominant网格方法工作的优势在于,六面体和分割六面体元素可以在不损失太多网格质量的情况下细分到非常细的尺度,从而提高潜在的模拟速度和准确性。这与使用四面体元素形成对比,四面体元素可以更自动化地适应复杂几何形状,但在没有额外手动细化的情况下,可能会面临某些几何特征的网格质量问题。
通常,使用由六面体单元组成的参考基础网格来投影并贴合到几何体上。网格细化可以灵活地指定在边缘、表面以及内部或外部体积上,以获得最佳几何特征分辨率和最终网格质量。每个迭代都完全支持并行计算,并进行负载平衡。
1.Hex-dominant网格生成方法
使用snappyHexMesh算法的基本Hex-dominant方法包括4个主要步骤:
1)在第一步,即Castellated网格步骤中,围绕对象创建参考基础网格(带或不带细化)。
2)接下来,在Snapping步骤中,将Castellated网格贴合到对象表面上。
3)如果指定,将在选定的表面生成网格层,并调整以适应主网格,这是在Layer Addition步骤中进行的。
4)最后,在Mesh Quality Assessment步骤中,检查最终网格是否有非法/坏单元,并进行进一步迭代,直到达到质量标准。
这四个步骤将在下面简要描述并说明:
2.Castellated网格步骤
在Castellated网格步骤中,基础网格是在Base Mesh Box的界限内创建的。
Base Mesh Box或Background Mesh Box在网格化过程中作为基础网格的领域。这个网格纯粹包含由用户定义数量的六面体元素。需要注意的是,对于任何方向,单元格的数量必须大于1,从而形成3D网格。
在下面的图中,使用围绕车辆主体的外部网格作为网格化过程的示例。下图显示了Base Mesh Box围绕对象。
然后,在Base Mesh Box界定的整个空间内生成Base Mesh,如下图所示。
3.单元格分割
在移除体内网格单元之前,根据指定的边缘和表面细化对基础网格进行细化,然后在靠近物体表面的地方进行分割。
4.单元格移除
在物体附近的网格细化和分割后,根据材料点的规格移除单元格。
这至少需要一个由领域内表面界定的区域。在材料点所在的网格空间保持不变,而其他空间中的单元格被移除。因此,在这种情况下,材料点可以位于基础网格盒的界限和物体表面之间的任何空间。
5.区域细化
最后,根据指定的区域细化和细化级别,进一步细化网格空间。之后,Castellated网格看起来类似于下图所示。
6.Snapping步骤
snappyHexMesh算法的下一步是将Castellated网格(阶梯型网格)贴合或投影到物体表面上。这个过程通过以下算法完成:
将Castellated网格的单元格顶点位移到物体表面上。
然后,由于位移的顶点,放松内部网格。
检查是否有违反网格质量参数的坏单元。
重复该过程,直到达到质量标准。
Snapping过程后的内部网格如下所示:
7.Layer Addition
根据网格设置规范,可能会在选定的或所有表面上生成由与表面对齐的六面体单元组成的分层网格。
这个过程也是迭代进行的,并涉及多个步骤来生成所需的网格。这里只讨论方法,而设置在_Main Settings_ > _Layer Refinements_中有更详细的说明。
主要步骤如下:
将内部贴合的网格从物体表面沿法线方向推回指定的距离(厚度值)。
然后放松内部网格并检查以满足质量参数,否则,减小厚度。
如果满足质量标准,则插入层。如果不是,则重复前几步。
如果无法达到所需的质量标准,则不插入层。
8.网格质量评估
作为最后一步,检查网格的质量标准,并循环网格化过程,直到所有检查通过或达到整体迭代限制。
如果在达到迭代限制时检查失败,生成的网格可能包含坏元素或单元。