在 COMSOL Multiphysics® 中编辑和修复导入的网格

2022年 7月 19日

在一些情况下,修复导入的网格可能会很有用。今天这篇博客,我们将讨论在 COMSOL Multiphysics® 软件中编辑、修复和连接导入面网格的功能。我们将对不同操作的结果进行比较,讨论一些案例,并提供一些现有的教程和其他相关资源来帮助您了解更多信息。

编者注:这篇博文的最初发布于 2021 2 25 日。现在已经更新,以反映 COMSOL Multiphysics® 软件 6.0 版本中的新特性和新功能。

导入面网格的格式

COMSOL Multiphysics 中的几何体和网格导入都支持导入三维表面网格格式。以下三种格式是最常见的,软件都支持:

  1. STL
  2. 3MF
  3. PLY

由于使用的这些格式并不是来自有限元分析模拟,而是来自激光扫描和 3D 打印等应用,因此这类文件中生成的网格质量并不重要。这些格式通常包含质量较差的单元,从仿真的角度来看,网格质量差意味着:

  1. 具有非常大或非常小的角的三角形
  2. 大小相差很大的三角形
  3. 有问题的区域,例如孔、尖刺或其它不想要的不规则形状

对于质量较差的导入网格,通常需要修复和编辑,以及为了平滑小的不规则区域重新划分面。接下来,我们将对此进行更详细地讨论。

编辑面网格的不同方法

在 COMSOL 中有多种操作可以编辑导入的面网格:

  • 创建实体,可以使用:
    • 创建顶点
    • 创建边
    • 创建面
    • 创建域
    • 填充孔
  • 相交、分割、连接或删除实体,可以使用:
    • 并集
    • 与平面相交(3D)
    • 与线相交(2D)
    • 用球分割
    • 用框分割
    • 用柱体分割
    • 按表达式分割
    • 连接实体
    • 删除实体
  • 要生成和修改网格,可以使用:
    • 自由四边形网格
    • 自由三角形网格
    • 自由四面体网格
    • 自适应
    • 细化

接下来,让我们来研究一些案例和不同操作类型的区别。

重新划分和自适应面网格

如果要细化导入的网格,可以使用细化 操作。如果正在寻找一个同时支持粗化网格的操作,可以使用自适应自由三角形 操作。这三个操作都将新的或移动的网格顶点放置在输入网格的近似面上。这意味着如果输出网格比输入网格更精细,面通常会变得更平滑,如下面的示例所示。了解有关如何将新的和移动的网格顶点放置在面上的更多信息,请阅读博客文章“如何优化和调整导入的网格”。

为了解释细化、调整和重新划分面网格之间的区别,我们将使用下图所示的单位球体的粗化表面网格为例说明。

具有粗化三角网格的单位球体。
单位球体的粗化三角形网格。球体顶部的网格稍微细一些。

单位球体的粗网格被导入到三个不同的模型中,以方便我们比较细化自适应自由三角形 操作的结果。导入网格中最大三角形的单元大小约为 0.6 m。对于细化 操作,我们可以指定单元被细化一次。这将用四个较小的三角形替换每个三角形。在自适应 操作中,如果从 列表中选择 并从表达式类型 列表中选择绝对值,就可以指定一个目标单元大小(在本例中为 0.3 m)来指导自适应。对于自由三角形 操作,我们可以设置最大单元大小;在本例中,设置为 0.3 m。运行这些网格操作时,一个光滑的几何表面会在后台中被创建,新的网格被放置在上面(这个步骤对用户来说是不可见的)。

经过修正之后的球体。
顶部较细的网格被粗化后的球体,三角形单元的大小比较接近。
表面重新网格划分后的一个球体网格,三角形单元大小更相近。

使用 细化(左)对球体的粗面网格进行一次细化。使用 自适应操作后的结果(中间)。使用 自由三角形操作后重新网格化球体的表面(右)。

正如上图中所看到的,当使用细化 操作时,所有的三角形都被细化了,包括顶部的较小的三角形。自适应 操作在顶部粗化较细的网格并细化较粗的网格,从而产生更相似大小的单元。还可以使用自由三角形 来获取大小更加相似的单元。

由于自由三角形 操作会在后台中创建平滑几何表面,而自适应 操作可以修改现有网格以使其粗化,因此有时可以使用这些操作对网格中的过小的不规则部分进行平滑处理。对同一个边界选择添加多个相同的操作或这些操作的任何组合,会使网格更加平滑,因为操作没有存储网格,例如之前的不规则性。

低质量的球体网格。
经过粗化处理后,球体网格质量得到改进。
重新划分网格之后的球体网格。

对质量较差的导入 STL 网格(左)中的不规则部分进行平滑处理。中间的图像显示了运行两次 自适应操作后的结果右侧的网格显示了运行一次 自由三角形操作后的结果。

通过在空白处创建边和面连接两个导入的网格

创建顶点创建边创建面 操作可用于在空白处创建网格。在下面的幻灯片中,我们将看到如何使用这些操作来弥合两个不相连的导入网格之间的间隙。有两种导入的、断开的管道网格,一种具有椭圆形横截面(左侧的 S 形管道),另一种具有圆形横截面(右侧的管道)。目标是连接蓝色突出显示的边缘。

我们首先使用创建顶点 来确保两个网格上的顶点数量相似。使用创建边 将顶点与网格边连接起来。创建的边始终是直的、网格状。然后使用创建面 操作在每个循环边中创建面。最后,使用自由三角形 连接和重新划分面。正如我们在最后一张图片中看到的,重新划分连接的表面使其更平滑,现在很难看出两根管道一开始就没有连接。

  • 突出显示边缘的两个管网。突出显示边缘的两个管网。
  • 使用 Create Edges 连接顶点后的两个网格。
    使用 Create Edges 连接顶点后的两个网格。
  • 在每个边循环中创建面后的两个网格。
    在每个边循环中创建面后的两个网格。
  • 生成的网格,两个面连接在一起。
    生成的网格,两个面连接在一起。

所创建的曲面总是尽可能的平面化,因此可能需要添加更多的网格顶点和边以解析面。为了使生成的曲面平滑并使用相似大小单元的高质量网格,可以对曲面进行调整或重新划分,如上一节所述。

相交与分割面网格

如果有两个相交的导入面网格,请使用并集 使面相交并更新域信息。之后重新网格化或调整面以获得高质量的面网格通常很有用,如下所示。

两个相交的网格,一个是球体,一个是圆柱体。
使用并集和修正处理后的表面网格。

使用 并集操作合并两个导入的面网格(左)和使用 自适应修改后生成的网格(右)。

有时,有必要对网格进行分割或相交以获得边界,方便之后分配边界条件。我们通过在 z = 1 处相交和分割下图中的面网格,来看看相交操作和分割操作之间的重要区别。如下右图所示,平面在三角形的中间相交。相交操作将分割平面所在的单元以添加直线几何边。分割操作将沿着最接近平面的现有网格边添加几何边。

平面相交 操作仅被用于表面网格。它与网格单元相交,这意味着三角形将在平面位置处划分,并在需要的地方引入新的网格顶点、边和三角形。结果是相交的面被笔直的边隔开,如下左图所示。如果需要,可以使用 清理生成的网格算法,例如,删除可能在生成的网格中引入的短网格边和小单元。

注意:要查看与平面相交 操作的另一个示例并更详细地了解它,请查看 STL 导入系列教程模型。

使用平面相交操作后的网格特写图,受影响的区域用蓝色突出显示。
使用分割框操作前网格的特写图。

显示 与平面相交操作之前和之后的网格的图像。左:平面网格位于 z = 1 中,以蓝色突出显示。该平面与蓝色区域上边的表面网格相交。右:生成的上边界(以蓝色突出显示)具有笔直的下边。

体积网格和面网格支持分割操作。可以使用不同的形状来划分网格的域或面,包括:

  • 球体
  • 用户定义的表达式

这里的分割 一词表示根据形状中是否包含单元形成新实体。网格单元和网格边不被分割。这意味着域和面上的网格单元数量保持不变,并且创建的边将遵循现有的网格边,如右图所示。

使用分割框操作后的网格特写图。
A close-up image of the mesh after using the Partition with Box operation.

图像显示了构建 用框分割 操作之前和之后的网格左:一个面网格,显示了一个放置在 z = 1 中的平面,以蓝色突出显示,框将划分网格。右:几何边尽可能接近 z = 1 的现有网格边。

分割操作与创建边

虽然可以使用分割操作对面进行分割,但也可以使用创建边 操作。分割操作仅限于某些形状或具有各自设置的逻辑表达式,但可以快速分割网格。另一方面,创建边 操作更加灵活,因为每个网格边都是手动选择的。因此,这个操作通常在隔离较少数量的网格单元时使用。

注意:在 STL 导入系列教程中提供了创建边 操作的示例,您可以下载应用程序文件了解更多信息。

例如,我们可以使用用球分割 操作隔离在网格中形成尖峰的部分面,如下图所示。如果单元的部分或全部网格顶点位于球体内,我们可以设置分割条件以包含三角形单元。或者,如果想要更多地控制选择哪些网格边转换为界定新面的边,可以使用创建边 操作。

用蓝色突出显示的尖刺网格和一个粉红色的圆突出显示分割与球操作,包括所有网格单元的顶点。
用蓝色突出显示的尖刺网格和用粉色圆突出的用球分割操作,只有一些网格单元的顶点在里面。

在左图中,如果所有顶点都在球内,则分割条件设置为包括网格单元;右图显示了相同的操作,如果只有一些它的顶点在球内,条件设置为包括网格单元。在这两种情况下,新面的边(以蓝色突出显示)都会变成锯齿状。

一个网格尖刺的特写图,每个网格边都被选中并以蓝色高亮显示。
使用创建边操作后的网格尖刺的特写图,底部边有一个更均匀的形状。

在这个示例中,鼠标右键单击选择 图形窗口(左)中的每个网格边,这是一个快捷操作,可以使所选面底部边的形状更加均匀(右侧,以蓝色突出显示)。

自动化常用操作

在编辑和修复导入的网格时,可能会比其他操作更多地使用某些操作,或者意识到每次设置新模拟时都会使用特定的操作序列。一种自动化建模工作流程或部分工作流程的方法是设置模型方法或使用插件

例如,当使用代表多孔结构的导入网格进行工作时,通常会存在狭窄的“桥”将网格的一部分与另一部分连接起来。这些桥在创建几何图形或重新分割面网格时可能会出现问题,因为桥的面很容易变得自相交。因此,有时有必要将它从网格中删除。一种快速的方法是使用球分割插件,这个插件会在旋转中心创建一个 用球分割(如下左图所示)。我们可以通过用鼠标中键单击将旋转中心设置在边界处。

一个多孔结构的表面网格显示为红色,旋转中心设置有一个小图标。
多孔结构的表面网格与一个粉红色的圆圈突出旋转中心。

多孔结构的面网格。图像中间的柱状部分创建了一条从表面的一部分到另一部分的狭窄的桥。我们在桥上设置了旋转中心(左图),并使用球分割 插件根据旋转中心的位置(右图)来定位 用球分割操作的

这个插件可以很容易地移除窄桥和修复孔。

用桥隔离的网格以蓝色突出显示。
中间有空隙的自适应网格。

桥被隔离为一个单独的边界,并被选中(左侧,以蓝色突出显示)以将它删除。右图显示了填充孔并调整网格后调整的网格。

体积网格

如果要重新划分导入的体积网格,可以清除导入 操作设置中的导入域单元 复选框。另一种选择是删除域单元,同时保留面网格和未划分网格的域。为此,我们可以使用删除实体 操作,选择要删除其单元的域,然后选中保留为未划分网格的域 复选框。

COMSOL Multiphysics 用户界面显示了导入设置窗口。
COMSOL Multiphysics 用户界面显示了删除实体设置窗口。

要恢复域中的四面体网格,请使用 自由四面体操作。

结论

编辑导入的网格有多种方法,COMSOL® 提供了多种功能,可以使这些更改成为可能。

如果您还没有准备好,可以查看 COMSOL 案例库中的两部分教程系列。在这个系列的第一部分中,几何对象是基于 STL 网格创建的,然后与块相交。在第二部分中,导入两个面网格并直接用四面体网格填充,而不基于 STL 网格创建几何形状。学习这些教程,可以让您深入了解修复和编辑任何类型的导入面网格。

更多资源

查看下面列出的这些资源,了解有关网格的更多信息:

博客分类


评论 (3)

正在加载...
TimKing TimKing
TimKing TimKing
2021-04-15

导入STL文件后,我可以增加角度公差以超过其限制吗?

Liu Minghong
Liu Minghong
2023-05-01

你好,导入两套有复杂的相交面网格,怎么使用并集和自适应剖分?

Yuhong Zhang
Yuhong Zhang
2023-05-17 COMSOL 员工

如果您的这个网格能成功导入到COMSOL,且两套网格作为一个网格同时使用,那么您可以依据需要使用选择功能选择您要实行并集或者是自适应剖分的部分;如果您的两套网格是独立应用于不同的物理场,那您可以直接依据不同的物理场进行单套网格的并集和网格自适应的剖分。

浏览 COMSOL 博客