通常,有限元建模中最乏味的一步便是将 CAD 几何细分为有限元网格。这一步通常称为网格剖分,该操作有时可完全自动化。但更多时候,细心的有限元分析人员希望能通过半自动化的方式来创建网格。虽然这将涉及更多操作,但却能带来一些相当明显的优势。本篇博客中,我们将探讨一个非常重要的手动网格剖分技巧:几何分割的概念。
网格剖分算法的工作方式
让我们从如何在 COMSOL Multiphysics 中使用缺省的网格设定对三维 CAD 几何进行网格剖分这一概念开始介绍。缺省网格设定将始终使用自由剖分四面体网格来将任意体离散为多个更小的单元。缺省单元类型是四面体单元,因为对于任意几何,不论拓扑多复杂,都可以细分并近似为四面体。尽管有些情况下更适合使用其他网格,比如“几何的网格剖分:各类单元的适用场景 “博客中所讨论的,但在本文中,我们仅讨论自由剖分四面体网格。
圆柱(左)表面使用三角形单元(灰色)进行网格剖分;四面体网格剖分算法使用四面体单元对体进行细分(青色)。出于清晰的考虑,两端已省略。
从概念上讲,四面体网格剖分算法会首先在您希望进行网格剖分的体的所有面上应用三角形网格。体随即被细分为四面体,以便能考虑到边界上的所有三角形,同时保持体内四面体的尺寸和形状都满足指定的尺寸和增长准则。如果您收到类似“处理几何面上的边界线单元失败”的错误消息,可能是因为四面体的形状在该过程中变得过于扭曲。
当然,真实的算法只能从数学角度解释,而非通过文字。在有些情况下,自由剖分四面体网格算法的执行可能会遇到一些问题,所幸这些情况无须借助任何方程就能解释,比如:
- 部件非常复杂,混合了非常详细的区域和稀疏网格。
- 用来定义域的边和边界的纵横比非常大。
让我们分别分析各情况下的一些示例,以及如何借助分割执行操作。
简化复杂几何
开始之前,让我们先考虑一个稍微复杂的几何:螺旋几何基元。当然您也可以考虑一些更复杂的几何,但就本文而言,这一示例已足以演示许多概念。
继续操作,打开一个新的 COMSOL 模型文件并创建一个十圈螺旋,然后通过缺省设定进行网格剖分,如下图所示。
十圈螺旋基元及对应的缺省四面体网格。
在剖分这一相对简单部件时您可能会发现,剖分步骤花费的时间相对较长。因此,我们将分析如何借助分割来简化几何。在几何序列中增加一个工作平面,沿螺旋的长度方向对其进行二等分,然后增加分割特征,使用工作平面作为分割对象。
用于分割螺旋的工作平面。
正如您在上图中看到的,得到的十匝螺旋对象现在包含 20 个不同的域,每个域都代表了半匝螺旋。重新对模型进行网格剖分时,您将发现耗时大为缩短,这是个好现象。与初始问题相比,每个域均代表了一个更加简单的剖分问题,此外,可以利用并行或多核计算机对这些域进行网格剖分。
我们现在有 20 个不同的域,已将螺旋的 6 个表面再分割为 102 个表面,还引入了用于分隔域的内边界,这一点也可能给您造成困扰。虽然现在几何的网格剖分速度要快很多,但我们增加了过多的域和边界,可能会影响对材料属性与边界条件的设定;实际上,我们希望在网格剖分时使用分割的几何,同时能在设定物理场时忽略分割。
接下来,我们将增加虚拟操作 > 网格控制域运算。此特征会将用于定义螺旋的所有 20 个域作为输入,将初始螺旋作为输出,在设定材料属性与物理场时,只需处理 1 个域和 6 条边界。
现在您将发现,能在剖分该几何时同时利用这两大优势。网格剖分花费的时间相对较短,而且能轻松进行物理场设定。如果您尚未尝试过此操作的话,不妨现在就试试看!
在此,我们仅查看了一个示例几何,您可能还希望在许多其他情况下使用此类分割。比如外形像梳子、蛇纹石或包含许多孔、开孔对象的域,或嵌入其中的域,所有这些情况都应考虑使用分割。此外,请记住您并非必须使用平面进行分割,还可以创建并使用其他对象进行分割。接下来我们将查看这样一个示例。
高纵横比几何
您操作的 CAD 几何通常包含一些边或表面,它们的尺寸与用于定义域的其他边和表面差别很大。我们通常希望能避免此类情况,鉴于我们的分析目标,较大域中的小特征可能显得不那么重要。
我们已分析了如何使用虚拟操作来简化几何,但如果这些小特征也很重要呢?我们将通过以下几何示例演示如何在这种情况下借助分割进行操作。
要进行网格剖分的流动域。从主管道上向外拉伸的三个包含更小圆角的小型入口。
在上方几何中,从一个大型管道向外拉伸出三个较小的管道。二者的过渡区域采用了小圆角,其尺寸不到管道体积的 1/100。如果我们采用缺省的网格设定来剖分域,则会在整个过程中采用相同的设定。但我们更希望在入口处采用较小的网格尺寸。
缺省网格会在模型的所有单元中使用同一设定,这并不太适用于这一场景。我们可以在网格中增加额外的尺寸特征,并在小管道周围的所有面中应用这些特征来调整边界处的单元尺寸,但这并不是最佳选择。这需要进行大量操作,而且并非完全能实现我们的目的。
我们还可以使用分割来定义希望应用不同网格设定的小体。下图中,每个小管道的周围加入了一个额外的圆柱,并向下延伸到主管道处。
将用于分割蓝色域的额外的域(线框)。
分割操作结果。
如上图所示,这些附加的圆柱对象可用于分割原始模拟域。我们将再次使用网格控制域将该几何简化为单个域,方便物理场和材料设定。执行网格剖分步骤时,可在网格序列中增加尺寸特征,以设定这些新分割域的单元尺寸。这样,我们将能控制这些域的单元尺寸,使网格剖分更为简单。
自动网格剖分失败后如何操作?
对于文中提到的几何,我们只需花费很少的精力或略微修改缺省网格设定即可完成网格剖分,但并非所有情况都是如此。我们很可能会碰到一个无法通过网格剖分算法在相对合理的时间内完成剖分的几何。这时应该如何处理呢?
答案(我想您可能已经猜到)就是结合另一个概念进行分割:分治算法。当碰到一个未进行网格剖分的域时,可以使用分割将它分为两个域。尝试单独对每个域进行网格剖分。如果其中一个域未剖分,继续分割每半个域。通过这一方法,您将能快速放大原始域中的问题区域。随即决定是否希望通过虚拟操作简化几何的问题部分,或者使用此处列出的技巧对子域逐个进行剖分,您甚至能综合使用这两个技巧。
另一个可以使用的技巧是:在导入几何的所有边界上应用自由剖分三角形网格。与体的网格剖分相比,对表面进行网格剖分更快,而且成功率极高。只需目测一下生成的表面网格,便能轻松发现模型中的小特征及问题区域。一旦了解问题所在之处,即可删除自由剖分三角形网格,因为这一剖分算法通常希望调整边界上的网格,但如果定义了表面网格,将不会执行此操作。
除了我们提到的用于简化几何以便执行网格剖分的虚拟操作,您还可以使用修复和削除功能来清理从其他源中获取的 CAD 数据。虚拟操作将为 CAD 几何简单创建一个抽象对象,只能在 COMSOL 软件内使用,相比之下,修复和削除操作会直接修改 CAD 并创建一个修改的 CAD 表征,支持从COMSOL Multiphysics 写出并写入其他软件包。
分割在网格剖分中的用法总结
我们已分析了缺省网格设定并非最优方案的两个不同的典型案例:极度复杂的域和带有极端纵横比的域。这两种情况下,我们都可以使用分割与网格控制域虚拟操作特征来简化网格剖分操作。
我们还提到了不使用缺省设定对几何进行网格剖分的应对策略。另外还需注意一点,当导入的 CAD 几何主要用于制造而非分析目的时,往往会出现这类情况。如果 CAD 文件包含许多装饰性而非功能性的特征,或者您非常确定它们不会影响问题的物理场,可以考虑在导入 COMSOL Multiphysics 之前先在原始 CAD 包中移除这些特征。
在未来的博客中,我们还将介绍如何结合分割与扫略网格剖分,这是 COMSOL Multiphysics 的另一项非常强大的技巧。敬请关注!
评论 (10)
杰 孙
2019-12-31Why I use the function mesh controling the field, the objects which are dealed with disappear?
蕾 曹
2019-12-31 COMSOL 员工您好。虚拟操作中的网格控制功能相当于将几何中已绘制的点、线、面、域设置为网格辅助工具。也就是说只在网格操作中可以显示并起作用,而在材料、物理场和后处理设置中均会隐藏。
杰 孙
2019-12-31您好。我明白您的意思,网格控制域的目的应该是“不同域各自划分网格后,通过网格控制域连接各个域,从而保持这些域物理场的连续性”。但是我发现,如果选择了网格控制域,点选某个域,就会导致与其相连的所有域都会和它合为一体,无法分辨。为了不让不需要的域与其相连,需要用其他方法实现物理场的连续。
蕾 曹
2020-01-02 COMSOL 员工您好。您对功能的理解有些偏差。只要几何中形成联合体,那么物理场总是连续的,并不是通过网格控制域实现连续。网格控制功能只是为绘制网格的辅助功能,在特定的区域或位置实现细化等,而且域的共用面上网格也是相容匹配的。您提到的不同区域绘制不同网格,再使物理场连续,是在几何中形成装配体并设置一致边界对后,在物理场中对一致对做连续性操作。此时网格可以不匹配,面上结果由插值传递。若仍有疑问,欢迎联系 support@comsol.com 进一步讨论。
叶子 宋
2021-03-08请问不同域存在交接面,在交接面的两侧网格划分必须使用相同精度连续的网格划分吗?在薄膜声学建模中,希望对中间的薄膜进行精细划分,两边的空气柱粗划分,目前一直没有找到实现方法,因为交界面总是会报错,提示面已划分或者边的节点数不同。而本博客中提到对同一物体认为分割不同的域就可以采用不同精度的网格划分,为甚么本就是不同域相接的反而不能实现,期待您的回复,感谢!
叶子 宋
2021-03-08您好,请问您讲到的高纵横比几何中使用增加圆柱体进行分割,具体操作时怎样的呢?我尝试在几何中直接画出大圆柱,但是在分割对象中不能使用大圆柱作为分割工具,没有找到大圆柱体的形成位置,期待您的回复,感谢!
丽丽 云
2024-03-07请问,如果我想导出指定区域的网格有什么好方法呢?比如,我有一个嵌套的圆筒,里外共三层,在划分网格后,我只想导出最外层网格的信息,有什么好方法呢?
谢谢
Hao Li
2024-03-11 COMSOL 员工您好!
感谢您的评论。
目前在网格节点处导出时,暂时没有提供选择导出区域的功能。建议分层依次划分网格后,再单独划分导出该部分网格。
如果有进一步问题,建议您联系COMSOL的技术支持团队:
在线支持中心:cn.comsol.com/support
Email: support@comsol.com
谢谢!
Xie Xie
2024-03-27你好,请问我现在碰到一个问题,在一个矩形长方体内部有一个圆,是不可忽略的(内部风扇),我想进行扫掠操作应该怎么做?(不能拉伸圆)
Yi Fan Wang
2024-04-12 COMSOL 员工您好,您这种情况很难进行扫略网格的划分,一般都需要分割成块才能进行扫略网格的划分,建议您可以使用自由四面体进行体网格的划分。