学习中心

Course:

Using Swept Meshes for Model Geometries

如何控制扫掠网格划分


在上一篇文章中,我们讨论了在 COMSOL Multiphysics® 中使用 扫掠 操作进行网格划分时对几何结构的要求。接下来,我们将进一步讨论如何获得高质量的扫掠网格。那么,要生成高质量的扫掠网格,最重要的设置和考虑因素是什么呢?本文我们将讨论这个问题以及更多其他问题。请注意,我们假设将要进行扫掠网格操作的每一个域都满足上一篇文章中讨论的所有要求。

选择源面和目标面

在本课程的第二部分,我们了解到扫掠的方向非常重要,因为软件需要将源面映射到目标面上。这是否意味着我们需要手动选择源面和目标面呢?不一定。大多数情况下,软件会自动检测源面和目标面,只有在扫掠方向不明确的情况下,才需要手动选择源面或目标面:扫掠可能有多种不同的路径,但是其中一种是最合适的路径,这将取决于物理场。在并行地对多个域进行网格划分时,更是如此。不过,即使在这种情况下,通常只需要选择源面就足够了,因为 COMSOL Multiphysics® 会根据您选择的源面自动检测目标面。

Two images of a block geometry with two arrows pointing in the different possible directions that a Swept mesh operation can take.

使用 扫掠 对长方体进行网格划分时,会存在两个不同的扫掠方向(如箭头所示)。左侧视图中, COMSOL Multiphysics® 自动选择了源面(洋红色)和目标面(橙色)。右侧视图中,使用了用户定义的源面进行扫描,其中 COMSOL Multiphysics®已经自动检测了目标面。(为便于查看,隐藏了前侧面。)

面网格由扫掠操作自动生成:源面用四边形(即 quad)网格(也可选择三角形)划分,链接面用 映射 网格划分,目标面网格与源面一致(如果您想了解更多其他方法,详见 文档)。下图示例中,源面使用了三角形网格进行划分。

Two images of a block geometry meshed with different sweep directions; in the left image, the left face of the block is purple, and the right face of the block is orange. In the right image, the top face of the block is purple, and the bottom face of the block is orange.

采用两种扫掠方式生成的面网格(隐藏了前侧面,用灰色网格表示链接面网格)。右侧扫掠网格的源面是由用户定义的,左侧网格的源面是由软件自动识别的(在这两种情况下, 分布 字节点都是沿着扫描方向作用的,下文将详细介绍),因此生成了两种不同的网格。根据物理场的不同,一种网格可能优于另一种网格。

也可以选择先手动生成源面的面网格,然后再添加 扫掠 网格操作。在下文 在什么情况下需要对源面预划分网格?如何操作?章节中,我们将会介绍更多详细信息。

控制网格大小和分布

我们已经在博客文章 使用不同尺寸设置进行网格划分的最佳方式 进行了详细解释,一个好的划分策略是使用一个具有多个局部大小属性的网格划分操作,而不是重复多个网格划分操作。这也与网格划分算法的 并行化 有关。 扫掠操作也不例外,让我们来看看有哪些属性可用。如果想添加属性,请右键单击 扫掠 节点并选择 大小分布

大小

大小 节点常用于设置域中的最大或最小单元尺寸,其数值可能取决于物理变量、参数或包含变量和参数的表达式。如需对特定源面上的网格单元大小进行更多控制,请参见下文后续章节 "在什么情况下需要对源面预划分网格?如何操作?"

The boundaries of a heating element are selected in blue. The boundaries of a heating element are selected in blue. 为加热回路中选中的(蓝色)边界添加一个大小属性 ,用于控制网格单元尺寸。

分布

对于 扫掠 操作, 分布 属性用于指定沿扫掠方向的网格单元层数。这一功能常用于无限元域,如下方 电机移动设备 示例模型所示。 该域内的网格单元层能够逐步吸收波能,避免产生虚假反射,从而模拟设备处于无限域中的状态,并将计算焦点集中在紧邻区域。若需要控制沿某条边的分布,则需要先对其进行预网格划分,具体方法见下文。最终效果由分布类型 及其相关设置决定。若希望在多个域中获得相近的单元尺寸,建议改用 大小 属性。

有关处理无限元域的更多信息,请参见文章 "无限元域的几何建模和网格划分" 。

On the left, a yellow rectangular box with triangular shapes on the surface and cyan rectangular shapes along the edges an corners, and on the right, concentric yellow spherical layers made up of rectangular elements surround a rectangular device. On the left, a yellow rectangular box with triangular shapes on the surface and cyan rectangular shapes along the edges an corners, and on the right, concentric yellow spherical layers made up of rectangular elements surround a rectangular device. 电机(左)与移动设备(右)的边界,通过 扫掠 分布 节点对多层结构进行网格划分,以此在无限域中开展建模仿真。

默认的 分布类型 为固定单元数。将此设置更改为 预定义 可指定线性或指数增长的单元分布,有助于相邻域的单元之间平滑的过渡,适用于某些物理场(如流体力学)。

在设置任何预定义分布时,单元数 和单元大小比 (最大单元大小 和最小单元大小 之间的比)都是输入的数值:

A graph shows the lengths of the domains in an asymmetric distribution. A graph shows the lengths of the domains in an asymmetric distribution.
A graph shows the lengths of the domains in a symmetric distribution. A graph shows the lengths of the domains in a symmetric distribution.

不对称(左)和对称(右)分布的不同长度的定义。总长度记为  


虽然在大多数情况下,可以通过手动调整参数来获得满意的网格,但您可能希望对网格的增长速度有更多的控制。下表列出了非对称分布的一些关系式。对称分布取决于 的奇偶性,但如果将  和  分布替换为  和 ,则对称分布近似(当 为偶数时相等)。

表达式 线性 指数

其中, 和相邻单元()之间的最大局部增长率 有可能是已知的。

比如说,您希望  与横截面上的网格大小相等,而最大增长率由全局的大小节点确定。如何推导出  呢?让我们用指数分布来找出答案。

  1. 一般来说,最大单元的大小是有上限的,因此 。第一步是确保即使在  时也是如此(我们的目标是使用尽量少的单元数划分网格)。因此,从上表的最后一行可以得到:

  2. 由此,通过重新排列上表最后一行和 的定义,可以推导出  和  :

  3. 最后,利用上表第二行, 可以近似为与  最接近的整数。

The mesh for the fluid flow domain surrounding an Ahmed body, where the coarser mesh that's farther from the body is yellow and the finer mesh that's closer to the body is green. The mesh for the fluid flow domain surrounding an Ahmed body, where the coarser mesh that's farther from the body is yellow and the finer mesh that's closer to the body is green. 为了平滑地增加网格单元的大小,利用指数分布定义了 Ahmed 类车体 后方的 扫掠 网格(黄色)。


添加边界层网格有时可以替代在扫掠中使用预定义分布。如下图所示。

Two side-by-side figures of the Steam Reformer tutorial model geometry showing the inserted boundary layer mesh highlighted in blue on the right.

 蒸汽重整器 教程模型的几何结构。这个示例在圆柱体的入口处使用了边界层网格,而不是对称分布。蓝色表示边界层网格单元。

也可以选择先手动为源面生成面网格,再添加 扫掠 网格操作。这样一来,你便可以借助网格操作(例如 大小分布 子节点)在源面上获得理想的面网格,随后将其扫掠生成三维网格。相关示例可查看此处

在什么情况下需要对源面预划分网格?如何操作?

虽然可以通过 扫掠 操作自动完成域的面网格划分,但在某些情况下,您需要对执行 扫掠 操作的源面进行网格预划分,即通过预先的操作划分网格。

需要注意的是,在添加 扫掠 操作之前已经被划分网格的所有面都可能会被自动选择为源面。必要情况下,您可以使用 自由四边形自由三角形,或 映射 操作对源面进行网格预划分(相关示例可查看此处)。在对源面进行网格预划分的一些场景中,可以使用:

  • 大小 属性,用于控制源面网格大小。
  • 边界层网格。对于扫掠网格,建议扫掠之前在源面添加边界层(见下图)。
  • 源面上的映射网格。
Three side-by-side figures of the Steam Reformer tutorial model geometry showing the boundary layer mesh. Three side-by-side figures of the Steam Reformer tutorial model geometry showing the boundary layer mesh. 蒸汽重整器 教程模型的几何结构。首先在源面添加了边界层网格。

注意:如果在进行扫掠 操作前,已对多个面进行了网格划分,请确保: 1. 使用 映射 操作对链接面进行网格划分。 2. 任何预划分网格的目标面与源面精确匹配。(要达到此效果,可使用相同网格属性或复制网格。)

预划分网格边同样十分有用。例如, 操作可以考虑曲率因子 ,同时保持增长率连续变化。

左侧图显示了待划分网格的几何体的 平均曲率 。中间图先对顶部边链进行网格划分,顶部曲线的曲率因子为 0.1,而底部曲线的为 0.2。需要注意的是,网格大小在各个域之间逐渐变化,以实现平滑的过渡。

在上述示例中,我们在 扫掠 操作 设置 窗口的 网格生成 菜单中选择 棱柱 网格,但在软件 6.4 版本附带的模型文件中,我们使用了新的 六面体为主 选项。

考虑相邻域

与扫掠网格域相邻的任何域都可以在扫掠前或扫掠后进行网格划分。如果相邻的域在网格扫掠之前已经进行了网格划分,则可以认为已经对面网格进行了网格预划分。

一个采用默认六面体单元的 Y 型几何结构。请注意 扫掠 节点在 自由四面体 节点之前创建(左)与之后创建(右)的区别。左图插入金字塔单元(洋红色)以适配六面体单元;右图则将四面体单元生成的三角形网格(绿色)作为 扫掠 操作的源网格。

如果要在采用扫掠网格的域的链接面相邻位置构建网格,会在最靠近链接面处插入一层金字塔单元(如下方动画中的洋红色部分),以此实现扫掠网格单元(黄色四边形单元)与周围域内的四面体网格单元(即仅包含三角形网格面的绿色体网格单元)之间的平滑过渡。如需了解如何创建网格绘图,请参阅这篇 博客文章

碳纤维教程 中,首先对纤维进行扫掠网格划分,然后用自由四面体网格填充周围的域;自动插入金字塔网格以连接两种网格类型。为了可视化网格,隐藏了前面的四面体。

根据沿扫掠路径插入的层数不同,这些金字塔网格可能会在某一方向上变得极度拉长,对于某些物理仿真场景而言,这种情况应当予以避免。

A swept meshed cylinder with five element layers, with the skewness quality depicted as green pyramids with relatively high peaks. A swept meshed cylinder with five element layers, with the skewness quality depicted as green pyramids with relatively high peaks.
A swept meshed cylinder with one element layer, with the skewness quality depicted as flat orange pyramids. A swept meshed cylinder with one element layer, with the skewness quality depicted as flat orange pyramids.
A swept meshed cylinder with 100 element layers, with the skewness quality depicted as small orange pyramids. A swept meshed cylinder with 100 element layers, with the skewness quality depicted as small orange pyramids.

使用扫掠网格划分的圆柱体,左侧设置有五个单元层,中间只有一个单元层,右侧有 100 个单元层。浅绿色表示底面与高度长度相近的金字塔网格,橙色表示在某一个方向上被大幅拉伸的金字塔网格。


如果纵横比过大,有以下方法可以提高网格质量:

  • 改变网格单元沿扫掠方向的分布,使纵横比更接近 1。这取决于物理场,因为物理场可能会要求网格有一定的分布。
  • 对源面进行预网格划分。使用不同的大小设置进行网格预划分,使外边缘的网格更符合扫掠中单元层的分布。
  • 如果可能,将周围的域也包括在扫掠范围内。我们将在本课程的后续部分讨论如何分割相邻域。
  • 使用 形成装配体 确定几何体的内部关系。虽然网格质量会提高,但在研究过程中可能会产生一些插值误差。点击 此处了解更多信息。

请注意,不同的物理场也可能对网格提出要求,这里我们并未考虑此因素。

即使您已经确保了四边形网格的边长基本一致,但是当相邻计算区域存在薄区域时,仍有一些细节需要特别注意。

Two identical meshed cubic geometries, one above the other with a thin space between. Two identical meshed cubic geometries, one above the other with a thin space between.
A close-up of the meshed space between the two blocks, showing low quality, flat pyramids. A close-up of the meshed space between the two blocks, showing low quality, flat pyramids.

在对上述两个块状域进行扫掠网格划分时,没有考虑它们之间的狭窄区域。虽然四边形的纵横比非常接近 1,但由于存在狭窄区域,金字塔单元将是扁平的。右图中的红色就是低质量网格的直观表现。(仅显示了靠近窄区域的金字塔和六面体单元。)


如果这个薄域表示一个薄层,请考虑是否可以用边界条件取代实体建模。这篇博客对此进行了说明。如果与物理场无关,可考虑使用几何操作折叠狭窄区域。

如果必须包含狭窄区域,一种解决方案是在靠近窄域的源面上细化网格尺寸,并增加单元层数,使四边形网格的尺寸与该区域的厚度更加接近。与之前的情况相比,这会生成更多数量的网格单元。

A thin layer of space between two vertically stacked blocks is meshed with a refined size. A thin layer of space between two vertically stacked blocks is meshed with a refined size.
A close-up of the meshed space between two stacked blocks, showing an increased number of mesh elements. A close-up of the meshed space between two stacked blocks, showing an increased number of mesh elements.

通过在狭窄区域的附近对源面进行更精细的网格预划分,可以在两个块状域之间生成质量较好的网格。右图显示,与之前相比,金字塔单元的高度更接近底面边长,质量是较为合理的。


这种处理方法有时需要大量的网格单元才能正确求解小间隙的问题。

在本示例的几何体中,也可以通过一次扫掠操作对所有域统一执行扫掠。还可以对 H 型域进行分割,使狭窄的区域成为独立域(该几何模型由此将得到五个域)。本文未展示此项操作。

A mesh of several cubic domains all swept together, with prism and hexahedron mesh elements. A mesh of several cubic domains all swept together, with prism and hexahedron mesh elements.
A close-up of the hexahedron mesh of the thin domain included in a sweep of several cubic domains. A close-up of the hexahedron mesh of the thin domain included in a sweep of several cubic domains.

对这个域进行扫掠网格划分(左侧),无需插入金字塔单元。


最后,如果金字塔单元插入失败,或者想要加快生成 自由四面体 单元的速度,可以使用 转换 操作。通过将四边形单元转换为三角形单元,无需插入金字塔单元即可完成网格划分。不过,这也会分割扫掠网格中的部分单元。考虑到这一点,请务必检查网格质量。

Triangular mesh elements of a thin domain between two stacked blocks, with the top block hidden for visibility. Triangular mesh elements of a thin domain between two stacked blocks, with the top block hidden for visibility.
A close-up of the low quality tetrahedra that result from converting the mesh elements of a thin domain between two stacked blocks from quad to triangular. A close-up of the low quality tetrahedra that result from converting the mesh elements of a thin domain between two stacked blocks from quad to triangular.

靠近狭窄区域的面由四边形网格单元转换为三角形网格单元(左侧图中隐藏了上方立方体的网格)。这意味着无需在窄域插入金字塔单元,但转换后的四边形尺寸需要与该区域的厚度相近,这一点非常重要,以避免生成各向异性过强的四面体单元。

进阶学习

本文介绍了几个示例,对几何模型中如何控制扫掠网格以生成高质量网格的相关讨论进行了补充。您可以在文章附件中找到这些示例的 MPH 文件,亲自动手操作以了解如何为不同类型的几何体生成高质量的网格。


请提交与此页面相关的反馈,或点击此处联系技术支持