在为与几何和网格相关的问题提供技术支持时,我们注意到,越来越多用户开始使用由 3D 扫描得到的 STL 文件和 NASTRAN® 文件格式的网格来创建几何。对此类真实物体进行模拟是一项非常具有挑战性的工作,而其中最难的部分是创建几何。现在,新版本的 COMSOL Multiphysics® 软件让此类文件的处理工作变得简单。阅读文章,了解如何使用此项功能,以及如何利用导入的 STL 和 NASTRAN® 文件进行几何创建。
STL 和 NASTRAN® 文件格式
之前发布的一篇博客文章提到,STL 格式是3D 打印的标准文件格式之一,也常用于 3D 扫描。STL 文件只能描述三维物体,完全由三角形平面片构成,也可以称其为表面网格。STL 是一种被广泛使用的非标准扩展格式,COMSOL Multiphysics 支持单个 STL 文件中包含多个对象。
对于一个标准的文本 STL 文件,其首行以solid
开头,尾行以endsolid
开头。许多软件支持包含多个文本段的 STL 文件。导入此类文件将产生多个几何对象,其数量取决于文件中所包含的文本段数量。
导入到 COMSOL Multiphysics 的脊椎的 STL 文件。这一序列展示了通过简化网格建立几何的步骤,从左至右依次是:导入表面网格、生成几何、分割几何,最后将几何嵌入周围的体中,由此生成最终网格。图片来源:Mark Yeoman,Continuum Blue 公司,英国。
NASTRAN® 文件格式是仿真工具之间交换三维网格的最常用格式。此格式支持编写几百个描述各种网格单元、载荷和材料的 NASTRAN® 文件条目,所以能够定义完整的有限元模型。COMSOL Multiphysics 软件支持导入网格、选择和材料。
站在 COMSOL Multiphysics 用户的角度对这两种格式进行对比,我们会发现一些相似之处。这两种格式都包含网格,不过除了上文提到的信息之外,NASTRAN® 格式还可以包含体网格和边界网格。将文件导入到 COMSOL Multiphysics 中后,最重要的问题是如何使之适应仿真。实际上,需要采取什么操作取决于仿真的类型和文件的内容。若 NASTRAN® 文件中的网格质量足以适应仿真,那么我们不需要做其他操作,可以直接导入文件并定义物理场。
本文只讨论需要在 COMSOL Multiphysics 中创建新网格,或者对导入的网格进行一定修改的情况。修改的内容包括:基于导入的表面网格创建一个实体对象,或添加周围的域,或只是分割和删除部分导入的网格。包括创建新网格在内的各类操作都涉及到处理 COMSOL Multiphysics 中的几何。为了顺利解决这些情况,我们将看一看如何使用导入的 STL 或 NASTRAN® 文件创建几何。
基于导入的网格创建几何
在近几个版本的 COMSOL Multiphysics 中,基于网格创建几何的步骤变得更简便、直观。现在,当将 STL 文件或 NASTRAN® 文件格式的网格作为几何导入时,软件会自动创建一个网格零件,您可以单击网格下拉列表旁的切换到源按钮方便地访问它。
在“几何设置”窗口中单击切换到源按钮,可以打开系统创建的网格零件。
使用边界分割设置
借助网格零件中的边界分割设置,我们可以掌控网格边界的分割方式。最小边界分割选项会创建尽可能少的面,有时甚至只创建一个。当源是 3D 扫描时,最小选项通常是一个明智的选择。自动边界分割是缺省选项,它最适用于导入网格的面经过了自然分割的情况(即网格来源于 CAD 设计)。若选择了检测面选项,我们便可以手动设定参数。
左:网格导入的边界分割设置。右:使用最小边界分割设置导入的 STL 文件。几何图片来源:Mark Yeoman,Continuum Blue 公司,英国。
对于由 3D 扫描得到的、拥有一个或多个平面的网格而言,“检测面”选项最为实用。针对此类情况,我们希望最大程度地减少面的数量,但同时希望平面拥有自己的边界。要达到这一目的,可以将最大边相邻角度设为 180°,它产生的效果与最小设置相同。为了检测平面,务必确保勾选了检测平面边界复选框。
当修改最大边相邻角度无法满足要求,还需要调整最小相对面积和最大相邻角度。最小相对面积设置规定了被检测的平面相对于表面网格总面积的最小面积下限,而最大相邻角度规定了同一平面中相邻边界单元之间的最大角容差。
举例来说,为了检测下图中的两个突出显示的边界,我们将最小相对面积减小到 0.001,并将最大相邻角度增加到 1°。
检测面边界分割特征(左)显示了几何创建的具体设置(右)。几何图片来源:Mark Yeoman,Continuum Blue 公司,英国。
如果我们需要在某个位置上指定一个边界,可以使用网格零件菜单中的各类分割特征。借助指定大小的球、框或圆柱分割操作,我们可以创建不会被自动检测到的边界,或者将其作为最小边界分割设置的补充。
对几何进行平滑处理
导入过程中的下一步是创建具有平滑的边和面的几何。导入设置会影响到基于网格构建工作几何结构的难易程度。
几何导入设置中的“简化网格”设置。
为了使创建的几何具有更佳的鲁棒性,我们应当始终启用简化网格复选框。如果导入网格的三角形是各向同性的,并且定义了相对平滑的表面,我们可以减小相对简化容差和缺陷清除因子,从而减少需要执行的简化工作。
通过设置更加严格的相对简化容差,我们降低了网格简化算法可以修改网格的程度上限。相对简化容差针对几何整体尺度,而缺陷清除因子则是相对于局部特征尺寸而言的。二者同时启用,限制了在转换为几何之前,特定位置上的导入网格最大程度上允许进行多少修改。根据个人经验,与 STL 文件相比,NASTRAN® 格式的网格通常更需要降低其中一个或两个因子。
左图:NASTRAN® 格式的曲轴网格,它的三角形网格表现出显著的各向同性,可以准确描述几何形状。中间:使用默认设置创建的几何。右:相对简化因子和缺陷清除因子相对较小的几何。
另一方面,当网格的三角形表现出各向异性,且表面网格不能精确地描述表面(即网格来自扫描数据)时,我们可以增加相对简化容差和缺陷清除因子。虽然或许会降低导入的表面网格的精度,但增加其中一个或两个参数有利于修复更多网格问题。
左:各向同性三角形网格中的两个各向异性三角形网格。中间:使用默认导入设置创建的几何。右:缺陷清除因子增加后的几何。图片来源:Mark Yeoman,Continuum Blue 公司,英国。
如果几何的面像上方中图一样奇怪,原因一般是渲染网格生成期间,或者在屏幕上生成面的可视化图时发生了问题。这也许说明几何中有一个潜在问题,它会给分割几何、合并几何与其他对象、甚至是网格剖分带来麻烦。在这种情况下,没有网格剖分问题并且增加了缺陷清除因子的几何可以生成“表现更良好”的面。
最后一步导入设置是勾选从面对象形成实体的复选框,从而基于表面网格创建实体对象。处理壳结构时无需勾选此复选框。
另一点需要注意的是:网格文件不包含指定长度单位的信息,因此需要手动在网格零件和几何节点的设置窗口中设定长度单位。
请务必牢记为网格零件和几何设置正确的长度单位。
分割与合并对象
将网格转换成几何结构后,可以再添加长方体、球体等体素。当针对基于网格创建几何对象执行布尔运算时,也可以引入相交面。
当几何体的表面被其他几何元素内插时,它们并不精确。所以,我们不能假设 STL 球体的表面是完美球形或其他。而且这些对象的面本应该精准匹配,严丝合缝,精确度问题却导致它们难以合并。在这种情况下,我们应该采取的方法是使用形成装配选项并手动或者自动生成一致对,而不用默认的形成联合体方法去形成待剖分网格的几何。
在 CAD 软件中保存的 STL 文件
对于使用 CAD 软件进行的设计工作而言,我们建议将其导出为 MCAD 格式,并使用“CAD 导入模块”进行导入。在之前的一篇博客文章中,我们讨论了如何选择 CAD 导入模块,结论是当数据来源于 3D 扫描或者从 COMSOL Multiphysics 导出变形几何或绘图时,STL 格式是最好的选择。
基于网格创建几何的总结
对导入几何设置中的参数进行修改无法一蹴而就,总要经历多次尝试和错误。我们在文章中介绍了一些基于导入的网格创建几何的最佳实践方法,希望当您在建模过程中使用 STL 和 NASTRAN® 文件时,这些技巧和提示会带来帮助。如果希望进一步了解此话题和相关的建模领域,请浏览以下资源:
- 如需学习如何检查 STL 网格和删除不需要的三角形,请参考此教程:基于表面网格生成几何:导入脊椎 STL 文件
- 浏览“COMSOL 博客”,阅读与网格剖分和几何相关的文章
如您对本文有任何疑问,或者需要工程师帮助您导入网格,请随时与我们联系。
NASTRAN 是 NASA 的注册商标。
评论 (7)
Kaiqi Zhao
2018-03-16老师您好!
如果利用导入的STL格式网格文件或者Nastran网格文件进行几何创建时,如何让comsol根据导入的网格文件自动生成域?
我利用Nastran建立的圆柱壳网格模型,导入到comsol后,在赋材料属性和物理场构建时无法识别域,请问我该怎么解决这个问题?
Kaiqi Zhao
2018-03-16Hello Dr. Hanna Gothäll,
If we use the imported STL format mesh file or Nastran mesh file for geometry creation, how can the COMSOL automatically generate the domain based on the imported mesh file?
I want to use the Nastran mesh file of a cylindrical shell model to complete acoustic simulation. After importing it into COMSOL, I couldn’t find the domain of cylinder shell when constructing material properties and physical fields. How can I solve this problem?
Hanna Gothäll
2018-03-21 COMSOL 员工Hello Kaiqi Zhao,
There might be several reasons for this. If all surfaces of the cylinder is available and the mesh is continuous over the edges, there might be some small gap that could not be healed with the current tolerance. Another alternative is that the quality of the mesh may call for a different set of import settings to create a good representation such that a solid can be formed.
In case you need further assistance, please send your STL and MPH file tosupport@comsol.comso that we can give you more specific advice.
冰琪 李
2019-01-16Hello Dr. Hanna Gothäll,
My problem is similar to Kaiqi Zhao, but i cannot solve it. can i send my stl file to your email?
and i don’t know how to select the entry domain.
Hanna Gothäll
2019-01-16 COMSOL 员工Dear 冰琪 李,
You are always welcome to send in your files (STL and MPH files) along with your questions tosupport@comsol.com. You can also send in your support request using the following contact form://www.denkrieger.com/support/case/
luonan zhou
2019-05-01Hello Dr. Hanna Gothäll,
The model that produced by the grasshopper is exported in the stl. format. It is viewed in the 3D builder. No model defects are observed and no error is reported. However, after importing it into comsol, the missing surface will occur,although, the relative simplification is 0.001 . I need your help to solve this problem.
Hanna Gothäll
2019-05-03 COMSOL 员工Dear Dr. luonan zhou,
We would love to help you out with your geometry related questions. Please send the STL file and your model MPH file tosupport@comsol.comso that we can take a look.