Hanna Gothäll – COMSOL 博客 - //www.denkrieger.com/blogs 发布博客 Tue, 01 Oct 2024 14:56:40 +0000 en-US hourly 1 https://wordpress.org/?v=5.7 如何通过扫描图像数据创建和优化网格 //www.denkrieger.com/blogs/generating-a-simulation-mesh-of-a-femur-from-3d-data //www.denkrieger.com/blogs/generating-a-simulation-mesh-of-a-femur-from-3d-data#comments Fri, 21 Apr 2023 02:20:35 +0000 http://cn.staging.comsol.com/blogs?p=335971 你有没有想过用三维成像技术获得的数据创建一个仿真网格?在这篇博客中,我们将解释如何使用 COMSOL Multiphysics® 软件来实现这一目标。这个主题是对我们以前博客中讨论过的模拟不规则形状主题的扩展,今天我们将讨论的过程,一部分已经在为拓扑优化结果设置验证研究时使用过。这篇博客,我们将对工作流程进行概括,以适用于通过三维成像技术获得的数据。

输入的数据

COMSOL Multiphysics® 支持不同格式的数据导入: txt 文件、Excel 文件、CSV 文件、图像、DEM 文件、MATLAB® 函数,以及用 C 语言编写的外部函数。扫描的数据通常以一组截面图像的形式出现,包括我们在这篇文章中介绍的例子:人体股骨的一部分(这个模型中的某些数据来自 Visible Human 项目)。通常情况下,COMSOL Multiphysics 只支持导入一张图像来生成二维数据。因此,在使用软件之前,通过以下步骤生成数据文件:手动挑选带有股骨上半部分的图像,人工识别包含其中一根股骨的像素,以减少数据量。随后,识别出的像素亮度,连同它在空间中的位置一起被读取和写入一个txt 文件。图像中的像素位置用 x 坐标y 坐标 表示,图像编号用 z 坐标 表示。电子表格是一种适合使用的格式,因为每个像素都是从图像中读取并逐一写入txt 文件的:

x1 y1 z1 data1
x2 y2 z2 data2
x3 y3 z3 data3
...

对数据也进行了清理,以去除股骨以外的所有东西,并按比例调整以适应股骨的实际尺寸。为了方便使用,还对数据进行了二值化处理。

人类股骨的二值化数据的三张切面图。
用于创建网格的人类股骨的二值化数据的三个切面图。白色代数据文件中的表亮度值为 1,黑色代表值为 0。

此模型的 MPH 文件可以在文末下载,所以这里的说明只是对需要采取的步骤做一个大致的描述。在这篇博客的最后,我们将给出两个包含周围域的人类股骨的网格,在以后的计算中可以使用。我们还将讨论如何添加其他计算域划分表面网格,以便能够在网格上应用适当的边界条件。

首先,将数据导入软件中的一个插值 函数中,我们把这个函数命名为 human_femur。我们将通过两种可能的工作流程来获得股骨的网格:

  1. 一个快速通道,在这个流程中,我们可以得到一个非常粗糙的数据网格表示,并将使用重新划分的网格将粗糙的表面变平。
  2. 一个包含更多步骤的工作流程,使用亥姆霍兹平滑来确保我们可以得到一个平滑的形状。

工作流程 1:使用网格数据集表示数据,并将表面重新划分网格作为一种平滑技术

我们从更快的工作流程开始。在这个例子中,我们将使用栅格 数据集来表示数据,并使用过滤器 数据集滤除数据来表示股骨。这将产生一个比较大块的表面网格,因此我们使用自由三角形 操作来平滑不平整的表面。

设置一个网格数据集和过滤股骨数据

在这个工作流程中,我们不需要几何 节点,甚至不需要模型开发器中的组件 节点,尽管我们稍后将在添加额外的计算域和创建股骨的计算网格时添加一个组件。在全局定义 节点下设置插值 函数,然后直接进入结果,定义一个栅格 数据集。

COMSOL Multiphysics 用户界面突出显示带栅格数据集功能的模型开发器,相应的设置窗口中展开的数据,参数界限和栅格栏。
添加 插值函数后,直接设置栅格数据集。

COMSOL Multiphysics UI 显示了模型开发器,突出显示了网格数据集功能,相应的设置窗口与数据,参数边界和网格部分展开。

将栅格 数据集作为一个规则的网格使用,并在这个网格上应用插值函数。这里,大约一半的图像分辨率被用作数据集的分辨率。现在,添加一个过滤器 数据集,输入表达式 human_femur(x,y,z),并将下限 设置为 0.99。这将创建一个值为 0.99 的等值面,并包括所有超过该值的数据。换句话说,就是人类股骨的等值面。如果你想在最后得到一个域,过滤器 数据集很适用。在第二个工作流程中,我们将改用分割 数据集,其中你可以定义多个值来创建多个等值面,产生多个计算域。

股骨等值面在 z 方向上被压缩,因为坐标轴经过了缩放。
由过滤器数据集生成的等值面。请注意,股骨在 Z 方向上被压缩,因为坐标轴经过了缩放。

导入和分割过滤器数据集的网格

过滤器 数据集所代表的网格可以导入到网格划分序列中,在这里我们将重新划分面网格以平滑粗糙度。我们可以通过右击数据集 > 过滤器节点,选择创建网格零件 来完成这个工作流程。

创建网格分割选项的特写。

在第二个工作流程中,我们将使用在新组件中创建网格 选项。在当前流程中,我们选择创建一个网格零件,因为我们将使用这个网格作为构造几何,这一点你很快就会看到。这样操作后,我们将在全局定义 下自动设置一个网格零件,并添加一个导入 节点,导入过滤器 数据集的网格。过滤器 数据集的域单元通常质量很差,所以我们只导入三角形网格。然后,当表面网格达到要求时,我们将重新生成四面体网格。

通常情况下,我们需要一个特定的边界划分来施加边界条件。使用“与平面相交”操作进行平面切割,也可以对其他形状进行分割操作。您可以阅读博客“在 COMSOL Multiphysics® 中编辑和修复导入的网格”,看看相交和分割网格的比较。这里,我们将使用用球分割 操作来得到一个大致的圆形边界。

股骨顶部网格的特写,使用带球分割操作划分出大致圆形的边界。
球分割操作(粉红色边)分割出一个大致的圆形边界(用蓝色突出显示),稍后我们可以在上面添加一个边界条件。为了便于观察,关闭了网格的渲染。

重新划分网格以提高质量和均匀粗糙度

由于单元大小不一,并且有许多条状的三角形,使网格表面不光滑,不适合模拟。因此,需要对网格进行重新划分后再使用。使用更大的网格尺寸重新划分面网格,也可以使形状更加平滑。

左边是导入的过滤网格,右边是过滤网格的特写。网格由大三角形、小三角形和银色三角形组成。
导入的过滤器网格 放大图片。由于网格数据集是六边形,其形状呈明显的块状,包含了大三角、小三角和狭长的三角形的混合体。

使用自由三角形 操作重新划分面网格。为了避免求解网格中的粗糙度,对网格进行均匀化操作,可以设置一个比网格中的不均匀度大的单元尺寸。这可以通过设置最大单元尺寸最小单元尺寸 为 0.005m 来实现。如下图所示,现在的表面已经平滑了很多,但仍然有点不均匀。在工作流程的后期,将再次重新划分边界网格,所以这些不规则的地方将被进一步均匀化。

股骨的网格,其中顶部的部分用蓝色圆圈突出显示。
图片显示的是重新划分面网格之后的股骨顶部。

如果你尝试对几乎彼此相交的表面重新进行网格划分,或者正在对那些几乎与自身相交的表面重新划分网格,请试试亥姆霍兹平滑功能。

现在,表面网格已经足够好了,可以继续在这个网格上添加额外的几何形状。

添加更多的计算域

股骨域可能是你唯一感兴趣的域,但假设你还想在股骨周围再建立一个模拟域或一些螺钉来固定股骨中的裂缝,你会怎么做呢?这可以通过几何 序列来实现。首先,在股骨模型上添加一个 3D 组件。然后,添加几何 > 导入节点,在其设置窗口中选择网格零件 1。这个节点将使我们能够添加和定位新的几何体,并且应该被标记为构造几何,因为我们将只使用股骨的面来定位所述的几何。一旦确定最终几何,构造几何对象就会被移除。你可以看到它是一个构造几何,因为它的边是虚线而不是实线。

COMSOL Multiphysics 软件的用户界面,突出显示了导入节点和图形窗口中的股骨几何形状。
将股骨作为 构造几何对象导入几何序列,以定位与股骨有关的额外几何形状。

我们要创建的几何形状稍后将在网格划分序列中将与网格结合。作为一种替代方案,也可以将股骨的表面网格和创建的几何形状与几何序列中的几何并集 操作结合起来。然而,通常在网格序列中使用网格并集 操作更为稳健,这也是这里要遵循的工作流程。

你可以画出你在仿真过程中所需的任何几何形状,或者导入 CAD 设计。有了可用的构造几何,很容易绘制出所需的几何形状。在这个例子中,我们将添加两个螺钉来加固股骨,但无论你是创建还是导入一个或多个几何对象,原理都相似。螺钉的几何形状和股骨的构造几何形状如下面的左图所示。一旦创建完几何结构,并且已经构建了形成联合体,股骨的构造几何就会从生成的几何结构中移除,只剩下螺钉,如下图中间所示。对于导入的 CAD 设计,也可以添加移除细节虚拟操作 对几何形状进行简化,然后再与网格结合。关于如何结合几何和网格的更详细说明,请看 STL 导入教程系列的第二个教程。

在同一个组件 中,转到网格 序列。确保添加两个导入 节点,一个导入螺钉的几何,另一个导入 节点从网格部分导入股骨的网格(如下图右)。使用网格并集 操作将两个表面网格结合起来,并使用自由三角形 节点对块的平面进行重新网格化,其中最大单元尺寸最小单元尺寸 设置为 0.005m

用螺钉加固的股骨的几何图形(左),使用形成装配体节点后的螺钉几何图形(中),以及导入网格序列的螺钉加固的股骨网格(右)。
左图:螺钉的几何形状与股骨的构造几何形状。中间:构建形成联合体节点后的螺钉的几何形状。右图:股骨和螺钉的网格导入到网格划分序列中。

最后,添加一个自由四面体 操作,用四面体网格填充域。如果需要的话,还可以选择添加一个扫掠网格或边界层网格,以满足当前的物理场的需求。这个网格所定义的域和边界将在设置和求解模拟时使用。

用高阶离散化添加物理场

现在网格已经创建好了,接下来可以进行仿真了,如下面的左图所示。但是,如果我们加入高阶离散化的物理场,会发生什么?比方说,我们想使用离散化设置二次巧凑边点单元 创建一个固体力学仿真。弯曲单元的二阶节点将被放置在网格表面的弯曲表示上,类似于具有基础几何形状时的放置方式。为了查看弯曲单元在网格中的样子,我们可以通过将网格数据集的几何形函数 设置为二次拉格朗日,将网格绘图的节点设置为几何形函数。二次拉格朗日绘图 的设置并不与模型中的任何物理离散化相耦合,它只用于绘图。

左侧为用螺钉加固后的股骨体网格图,右侧为股骨与螺钉的最终网格顶部特写,包括显示在股骨弯曲边界上的二阶节点。
左图:股骨和螺钉的体网格图。白色单元代表螺钉的域,股骨的单元被表达式 x> -0.015 过滤掉了。右图:在股骨的弯曲边界上显示的具有二阶节点的最终网格。绿色和黄色代表偏度。

生成的网格和导入数据的比较

为了比较生成的网格如何跟随数据的一种方式,我们可以添加一个表达式 human_femur(x,y,z) 的等值面图,以删 数据集的网格分辨率绘制。从下面的图中可以看出,网格很好地遵循了等值面。

股骨顶部特写图。在这里,我们可以比较生成的网格(灰色)和导入的数据(蓝色)。
生成的表面网格(灰色)和插值数据 human_femur(x,y,z) 的等值面(蓝色)的比较。

工作流程 2:使用亥姆霍兹方程对股骨数据进行平滑处理

对于这个工作流程,简单来说,我们将添加一个应用了股骨数据的规则块状域,然后通过求解亥姆霍兹方程对数据进行平滑处理,得到一个光滑的股骨表面网格。我们仍然需要对股骨的表面网格进行重新网格化,但这次只是为了提高网格单元的质量。

定义一个规则域

为了求解亥姆霍兹方程,需要定义一个域,可以是长方体、球或其他一些简单适用于股骨数据的形状,如这篇博客中所述。要确保这个域尽可能的小,这样就可以用一个精细的网格来求解这个域。网格需要足够精细,以解析你想在表面网格中看到的数据的任何细节。

规则域上的六面体网格,形状像长方形。
一个定义了导入数据的规则域上的足够细的六面体网格。

接下来,设置方程,添加一个瞬态研究并进行求解,以获得我们可以使用的解数据集。

对数据进行亥姆霍兹平滑处理

为了避免数值伪影,并使之有可能使用较粗的网格,插值函数使用亥姆霍兹滤波的偏微分方程(PDE)进行低通滤波:

-\nabla \cdot (R^2\nabla u)+u=human\textunderscore femur(x,y,z)

其中,R 是滤波器半径,近似代表低通滤波器的宽度。添加一个系数形式偏微分方程 接口,如下图所示。

COMSOL Multiphysics 软件用户界面,突出显示系数形式PDE接口,在图形窗口中显示了其中一个截面模型。
系数形式偏微分方程接口的设置。

这里,我们使用表达式 max((h[1/m])^2,R^2) 来表示扩散系数。软件会对网格中的每个节点使用最大的网格大小 h 和参数 R。在这个例子中,局部的网格大小 h 是恒定的,但是如果使用非结构化的四面体网格,h 会变化。请注意,由于所有操作都是在一个由网格表示的几何结构上进行的,每个单元网格都是线性的,所有的单元离散化阶次被都降低到线性单元,然后使用一个稳态求解器计算求解。

左图为绘制在六面体网格上的插值函数切面图,右图为平滑后的解数据切面图。
在六面体网格上绘制的插值函数 human_femur 的切面图(左)和平滑处理后的解数据(右)。

使用分割数据集过滤股骨

我们在平滑的解数据中使用一个介于 0(蓝色)和 1(红色)之间的值来过滤股骨的表面网格。在这个例子中,假设我们也希望股骨外的区域成为我们模拟的一部分,因此应该选择添加一个分割 数据集。如果只对模拟股骨域感兴趣,可以使用过滤 数据集,就像第一个工作流程中做的那样。水平值 0.6 的分割 数据集就已经足够满足我们的目标了,如下图所示。

分割数据集的图显示为红色,其中股骨的网格位于块域内。
分割数据集的图,水平值设置为 0.6。等值面将模拟域划分为两个域,一个是股骨域,一个是股骨周围的域。

当对水平值满意时,右击分割过滤 数据集节点,选择在新组件中创建网格。如果需要创建额外的模拟域,请使用创建网格组件 选项,并按照第一个工作流程的步骤进行。

在组件选项创建网格的特写图。

这将自动设置一个带有导入节点的新组件,导入分割 数据集的网格。清除导入域单元 复选框,并将边界分割 设置为最小值。这将只导入表面网格,并将形成尽可能少的边界;7 个平面边界和 1 个股骨边界。我们将对这个表面网格进行改进,然后重新创建一个体网格。

左图为导入的股骨网格分割数据集,右图为股骨顶部特写。面网格包含大三角形、小三角形和狭长三角形。
导入的 分割数据集网格。股骨的表面网格包含了大的、小的和条状的混合三角形,其质量需要改进以适合模拟。为了便于观察,一些边界被隐藏起来了。

重新划分表面网格来提高三角形的质量

使用自由三角形 操作对同一网格划分序列中的表面进行重新划分。为了得到大小基本相同的三角形,将最大单元大小最小单元大小 都设置为 0.005m。

股骨的网格表面的图像显示在左边,网格顶部的特写显示在右边。网格包含相似大小的三角形。
重新划分网格后的股骨和长方体表面。大小已经被修改,以生成一个大小基本相同的三角形的表面网格。为了便于观察,一些边界被隐藏起来。

现在,我们可以用一个四面体网格来填充这些域。添加的物理场接口将被应用到这个网格所定义的域和边界上。这样,我们就有了高质量的体网格,可以用于仿真对于其他的形状和应用,还可以在域中添加扫掠和边界层网格,但在这个例子中,四面体网格已经满足我们的需求了。

股骨的体网格如图所示,最终网格顶部的特写如图所示,包括显示在股骨弯曲边界上的二阶节点。
左图:股骨和周围长方体的体网格。白色的单元代表股骨域,周围的单元使用表达式 x > 0 过滤。右图:在股骨的弯曲边界上显示二阶节点的最终的网格。颜色代表偏度。为了便于观察,隐藏了一些边界起来。

二阶节点生成的网格与导入和平滑的数据的比较。

在这个工作流程中生成的网格可以与导入的数据的等值面 human_femur(x,y,z) 进行比较,该等值面与分割数据集使用的等值面相同,被绘制在原始长方体域的网格上。为了生成一个更接近导入数据的网格,可以在求解亥姆霍兹方程的原始长方体域中使用更细的网格,相应的也可以降低扩散系数。

股骨顶部特写。在这里,我们可以看到生成的网格(灰色)与插值数据的等值面(蓝色)的比较。
生成的表面网格(灰色)和插值数据 human_femur(x,y,z) 的等值面(蓝色)的比较。

结束语

至此,这篇由扫描的数据创建表面网格的博客就讲完了。我们对表面网格进行了分割,使用了两种不同的技术对数据进行了平滑处理,并学会了如何将网格和几何图形结合起来。

如果您想要了解文中讨论的工作流程的更多细节,请通过下面的按钮下载 MPH 文件。

更多资源

 

文中介绍模型的一些数据来自 Visible Human Project,https://www.nlm.nih.gov/research/visible/visible_human.html,由美国国家医学图书馆提供。这些数据是截至 2023 年 4 月 21 日的最新数据,已经经过修改,可能无法映 NLM 提供的最新/最准确的数据。NLM 没有认可 COMSOL 的产品、服务或应用,并声明对数据的准确性或完整性不作任何明示或暗示的保证,包括对商业性或适用于特定目的的保证。数据的使用者应使 NLM 和美国政府不承担因数据错误而引起的任何责任。对于因使用、误用或解释数据中包含或不包含的信息而造成的任何后果,NLM 不承担任何责任。

MATLAB 是 The MathWorks, Inc. 的注册商标。

]]>
//www.denkrieger.com/blogs/generating-a-simulation-mesh-of-a-femur-from-3d-data/feed/ 2
在 COMSOL Multiphysics® 中编辑和修复导入的网格 //www.denkrieger.com/blogs/editing-and-repairing-imported-meshes-in-comsol-multiphysics //www.denkrieger.com/blogs/editing-and-repairing-imported-meshes-in-comsol-multiphysics#comments Tue, 19 Jul 2022 06:26:02 +0000 http://cn.staging.comsol.com/blogs?p=247261 在一些情况下,修复导入的网格可能会很有用。今天这篇博客,我们将讨论在 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 网格创建几何形状。学习这些教程,可以让您深入了解修复和编辑任何类型的导入面网格。

更多资源

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

]]>
//www.denkrieger.com/blogs/editing-and-repairing-imported-meshes-in-comsol-multiphysics/feed/ 3
如何检查 COMSOL Multiphysics® 中的网格质量? //www.denkrieger.com/blogs/how-to-inspect-your-mesh-in-comsol-multiphysics //www.denkrieger.com/blogs/how-to-inspect-your-mesh-in-comsol-multiphysics#respond Wed, 06 Jul 2022 01:32:45 +0000 http://cn.staging.comsol.com/blogs?p=183691 在进行有限元(FEA)仿真时,创建合适的网格是获得准确的结果的关键。在这篇博客中,我们讨论了如何检查网格 信息警告错误 节点中报告的实体;如何查看网格或部分网格的统计信息;以及如何绘制网格及其相关变量,并将这些绘图划分到选定区域。

编者按:这篇博客更新于 2022 年 7 月 6 日,以反映 COMSOL Multiphysics ® 软件 6.0 版本的新特征和新功能。

检查 信息警告错误 节点中报告的实体

在COMSOL中创建网格时,有时会收到信息、警告和错误消息。遇到这种情况时,应该检查 信息警告错误 节点随附的报告列表。这些消息大多数是由于使用过粗的网格设置,导致无法正确解析薄区域和短边。

要找到这些几何实体的位置,可以单击 设置 窗口 选择 列表旁边的 缩放到选择 按钮,然后关闭 网格渲染 按钮,并打开三维网格中的 线框 按钮,就可以查看报告的内部几何体的位置,如下图所示。对于选定的实体,使用工具栏或者图形上下文菜单中的 测量 按钮,可以获得边的长度或点与点之间的距离。

狭窄的内部边界。
一个 MTR 音叉的网格,其内部边界用蓝色突出显示。

一个山地车前叉的网格(左),其中一些边界处显示有狭窄的,在当前的网格大小设置下无法正确求解的区域。点击网格渲染和线框按钮后,用蓝色显示的边界(右)。

有了测量结果和实体信息,就可以设置 移除细节虚拟操作CAD 特征去除 来消除小的几何实体,或者当这些特征对模拟很重要时,用于减小网格大小。阅读 这篇博客以及系列教程,了解更多关于移除细节CAD 特征去除的使用方法。调整非结构化网格生成器的单元大小教程模型演示了如何修改网格大小参数。

图形 窗口中,用红点表示信息中的一个或多个问题位置的坐标,单击 坐标中心 按钮,可以放大选定的位置。单击 绕坐标剪裁 按钮,可以在坐标周围添加一个剪裁球体,这样检查有问题区域附近的面网格就更加方便了。单击 移除剪裁 按钮可以移除剪裁球体,再次显示完整的网格。红色的点指示了有问题的位置,这样就可以对特定的区域进行详细的研究。

当有消息提示有一个或多个低质量的单元生成时,可能需要特别注意。出现这种情况时,消息旁边的设置窗口将显示网格的 最小单元质量。另一个检查 最小单元质量 的方法是在统计窗口。通过绘制质量最差的网格单元(在本文后面有进一步的详细解释),可以得到质量最差的单元的位置信息。

如果网格质量为负值或者为非常接近零的正值,说明报告的网格单元已经反转或者几乎反转。低质量的单元会导致求解器难收敛,或者使解对网格的微小变化很敏感。请注意,这里讨论的反转线性网格单元,与在求解时可能遇到的反转弯曲单元是不同的。我们将在文章的最后讨论检查弯曲单元。

查看网格的统计信息

一种快速了解所创建网格质量的方法是查看 网格统计信息 窗口中的统计信息,这可以通过工具栏或单击 网格 节点右键打开。

COMSOL Multiphysics 中的网格统计窗口的截图。
网格信息统计 窗口,显示了不同选择和网格质量评估的各种统计数据。

在 COMSOL 中,使用窗口顶部的 几何实体层 下拉菜单,还可以更改域、边界或边的选择的统计数据。在 质量测量 菜单中,可以选择各种网格质量测量,包括:

  • 偏度
  • 最大角度
  • 体积 vs 外接半径
  • 体积 vs 长度
  • 条件数
  • 增长率
  • 弯曲偏度

质量测量的选项

偏度 适用于大多数类型的网格,因此是一个默认选项。这种质量测试基于等角偏度,它会惩罚与理想单元的标准角度相比具有较大或小角度的单元。在生成网格的过程中报告不良单元质量时,也会用偏度这个质量指标。使用 最大角度 指标,仅惩罚具有大角度倾斜的单元,因此这个指标特别适合用来检查是否存在各向异性单元的情况,例如用来检查边界层网格的质量。

体积vs.外接圆半径 是基于单元体积与单元外接球体(或圆)半径的商。这种质量测量对大角度、小角度和各向异性单元都很敏感。对于需要各向同性单元的二维三角形网格和三维四面体网格,体积 vs. 外接圆半径 是一个合适的选项。另一方面,体积 vs.长度 基于单元边长和单元体积的商。这种网格质量测量主要用于各向异性单元。

条件数 选项基于将实际单元转换为理想单元的矩阵属性。增长率 基于局部单元大小与所有方向上相邻单元大小的比较。

弯曲偏度 质量测量是在生成高阶单元(弯曲单元)时对变形的测量。

网格质量的注意事项

对于所有的网格质量测量,质量 1 是最好,表示所选质量测量中的最佳单元。在区间的另一端,0 表示退化单元。尽管 COMSOL Multiphysics 中的网格划分算法希望避免低质量单元,但并对所有几何形状都使用。过高的几何纵横比、小的边和面、薄区域,以及高度弯曲的面都可能导致网格质量差。当几何体确实导致网格质量不佳时,网格生成器会返回质量较差的网格进行检查,而不是完全不生成网格。

根据使用的网格质量测量,最小单元质量平均单元质量单元质量直方图 部分相应地将会更改。要获得准确的结果,需要了解哪种 最小单元质量平均单元质量 适合你的应用,这一点非常重要。

没有绝对的数字可用于说明质量应该是多少,因为所使用的物理场和求解器对需要的网格质量有不同的要求。如果你想验证结果的准确性,建议执行网格细化研究

一般来说,质量低于 0.1 的单元在许多应用中被认为质量较差。如果质量差,网格生成器会自动通知用户;如果质量很差,则会警告用户,因为在大多数情况下应该避免质量很差的单元。在一些情况下,如果几个低质量单元位于模型中重要性较低的部分,可能没问题,而在其他情况,低质量单元可能会导致收敛问题。

网格信息统计 窗口中的直方图可以让我们直观地看到网格质量,这是一种快速查看是否需要以某种方式更改整体网格大小的方式。

创建网格图

如果想了解低质量单元的位置以及要更改哪些网格大小参数,最好绘制网格图。可以通过单击 网格 功能区中的 绘图 按钮或右键单击要绘制的网格的网格 顶部节点并选择 绘图 来执行此操作。这样就会在 结果 > 数据集 下得到一个 网格 数据集,还可以在其中添加 选择 以缩小图中显示的实体数量。网格 绘图功能也可以与其他绘图功能结合使用。

可以大致了解特定的网格是如何通过不同类型的网格单元设置的。例如对于体网格,可以将 设置为 ,并从单元颜色列表中选择 类型,这样软件就会根据网格单元的类型自动为它上色。下图显示了一辆跑车周围的边界层网格。

COMSOL Multiphysics UI 显示了选择网格节点的模型开发器,相应的设置窗口,以及图形窗口中的跑车模型。
跑车的大涡模拟模型网格中用不同颜色表示的单元类型。四面体用绿色表示,金字塔形用洋红色表示,棱柱型用黄色表示。为了更详细地了解单元是如何连接的,使用表达式 y> 0 对其进行过滤。

正如前文提到的,了解低质量单元的位置非常重要。这将帮助我们了解是否需要更改几何形状,或者是否需要修改网格大小,以更好地处理有问题的区域。

首先,可以将 设置为 ,然后在 单元过滤 部分选择 启用过滤 复选框,接着输入一个布尔表达式,代表要检查的单元。下图中显示了 偏度 低于 0.04 的单元。可以使用 替换表达式 功能轻松地访问不同质量测量的名称。这些方法可用于发现生成的网格中的不同缺点,因此应该确保检查所有这些方法,看看哪些最适合我们的特定应用。

COMSOL Multiphysics UI 显示了选择网格节点的模型开发器,相应的设置窗口,以及图形窗口中的壳管式换热器模型。替换表达式窗口显示在设置和图形窗口的前面,可以方便地访问不同的网格质量评估。
管壳式换热器模型显示了表达式 qualskewness 低于0.04的体单元。在 图形 窗口前面,可以通过替换表达式 窗口方便地访问不同的网格质量测量选项。

在网格质量测量选项中,增长率 稍有不同,它显示的是两个网格单元之间的关系,而其他网格质量测量显示的是每个单一网格单元的形状质量。在单元大小恒定的区域,增长率最大为 1。在从一个单元增加到另一个单元的单元增长率增大的区域,增长率较低。需要绘制的重要的图往往在域的网格内,添加一个包括空间维度的过滤表达式可能会有用。下图显示了一个这样的例子。

COMSOL Multiphysics UI显示了选择网格节点的模型开发器,相应的设置窗口,以及图形窗口中的双锥天线模型。
双锥形天线模型的网格增长率。图中显示了 PML 域中的边界层网格具有相似的大小,而中间域的四面体网格中的增长率变化更大。在这个示例中,通过使用 单元过滤器 选项显示 x > 0.01 mm 的网格单元。切面图显示了电场模(dB)。

最后,检查特别求解的一些弯曲单元或高阶单元时,可以使用网格质量测量 弯曲偏度。在网格 数据集中设置适当的 几何形状 函数。请注意,无论求解什么问题,都有可能选择任意形函数,所以如果你不确定该选择哪一个,请仔细检查物理场接口的 离散化 设置。在所有的网格质量测量中,都可以采用类似的方法过滤掉质量不好的单元,以更好地了解几何体或网格设置可能需要微调的位置。

COMSOL Multiphysics UI 显示了选择网格节点的模型开发器,相应的设置窗口,以及图形窗口中的轮辋子模型。
显示 弯曲偏度 的绘图。在 网格 数据集中设置 几何 形函数。

结语

在这篇博客中,我们讨论了检查网格质量的3种不同方法,这些方法可用于发现包含低质量网格单元的区域。现在,我们知道如何找出低质量网格单元的位置,并且可以手动调整这些区域中的网格或解决底层 CAD 几何本身的问题。如果想了解关于修改 CAD 几何以进行网格划分的信息,请参阅以下博客和网络研讨会视频:

想根据自己的模拟需求,评估 COMSOL Multiphysics 的网格划分功能吗?请单击以下按钮,联系 COMSOL:

]]>
//www.denkrieger.com/blogs/how-to-inspect-your-mesh-in-comsol-multiphysics/feed/ 0
如何使用拓扑优化结果创建几何模型 //www.denkrieger.com/blogs/how-to-use-topology-optimization-results-as-model-geometries //www.denkrieger.com/blogs/how-to-use-topology-optimization-results-as-model-geometries#respond Thu, 23 Jan 2020 18:15:58 +0000 http://cn.staging.comsol.com/blogs?p=182951 拓扑优化是一种优化技术,可以将模拟域划分为需要保留或删除的区域。优化在将要删除的区域中使用物理场的近似表示,因此我们应该从几何图形中删除这些区域并进行新的仿真来验证优化结果。借助 COMSOL Multiphysics® 软件,我们可以根据拓扑优化结果图创建几何图形以进行进一步分析,并可以将其轻松导入 CAD 软件中。

本文最初发布于 2017 年,更新后的内容包含了更多关于过滤器数据集的信息。

在设计工作流程中使用拓扑优化结果

拓扑优化是一项有用的功能,它可以帮助我们找到我们无法合理想到的设计。但是,在开发设计时,这只是第一步。构建通过拓扑优化找到的特定设计可能是不合理的,也可能无法完成,因为该设计的生产成本太高或根本无法制造。

MBB梁的拓扑优化
MBB 梁的拓扑优化结果。

为了解决这些问题,我们可以基于拓扑优化的结果提出新的设计,然后对其进行进一步的仿真分析。但是,我们该怎么做呢?我们可能需要一个可以剖分网格的几何形状,或者需要一个代表拓扑优化结果的导入网格。事实证明,COMSOL Multiphysics 使我们可以从二维和三维模拟中轻松获得这些。在 COMSOL Multiphysics 中,我们可以直接使用它们,也可以将其导出到各种 CAD 软件平台。下面,我们首先研究如何创建几何结构,然后再讨论如何跳过创建几何的步骤,直接通过导入和修改网格进行仿真。

如何在COMSOL Multiphysics®中生成拓扑优化结果的几何

在 COMSOL Multiphysics 5.5 版本中,使用 “过滤器” 数据集生成拓扑优化结果的几何操作,二维和三维几何操作步骤相同。但是,创建二维几何还有一些额外的步骤。下面,我们通过 COMSOL 案例库中的最小化微通道中的流速案例教程来演示此过程。除了原始教程之外,我们还将展示:在新创建的几何体上进行验证研究时,如何导入添加的域和边界选择,以及如何重复利用这些选择。您可以点击本文末尾的链接,下载带有附加选择和验证研究的 MPH 文件,自己使用 COMSOL 创建几何结构。

该案例教程的目标是寻找多孔填充材料的最佳分布,以最大程度地减小微通道中心的水平流速。

COMSOL的拓扑优化结果
优化后的水平速度(表面图)和速度场(流线)。黑色轮廓代表填充材料。

在上图所示的结果中,黑色轮廓线是设计变量等于 0.5 的等值线。它代表通道与填充材料之间的边界,就是我们希望合并到几何图形中的结果。在其他应用中,绘制的表达式和等值线水平可能有所不同,但是原理是相同的,即找到一个轮廓线来描述固体和非固体材料(通常是某种流体)之间的界限。

添加和设置过滤器数据集

下面,我们将使用“过滤器”数据集,根据上述结果创建几何图形。对于三维拓扑优化研究,将使用默认绘图自动设置此类数据集。但是,对于二维拓扑优化,需要通过在“结果”功能区上的“更多数据集”菜单中手动设置添加“过滤器”数据集。

COMSOL中的过滤数据集和结果绘图
结果”功能区上的更多数据集”菜单提供了一种添加过滤器数据集的方式。

在“过滤器”节点的设置 窗口中,“表达式”处输入 dtopo1.theta,设置“下界水平 0.5。单击“绘制”按钮将可视化显示此水平表示的区域。

过滤器数据集的屏幕截图和COMSOL软件中的结果图。
“过滤器”数据集的设置以及该数据集定义的域。

基于过滤器数据集创建网格零件

右键单击“模型开发器”树中的“过滤器”节点,然后从菜单中选择“创建网格零件”。

创建网格零件属性图
使用创建网格零件属性作为从拓扑优化结果导出创建几何的第一步。

根据“过滤器数据集的可视化结果设置网格零件。如下图所示,在网格零件”>“导入操作的设置窗口中,有一个复选框“导入选择。导入的选择也列在导入设置的下方,并根据实体级别进行分类。在此示例中,原始几何图形上的选择是基于坐标的选择,用于定义拓扑优化研究的材料和物理场设置。

使用网格零件设置的模型开发器
网格零件 导入节点的设置窗口。所选设置导入选择” 位于设置窗口底部列出了 选择列表。正如在模型开发器树中看到的那样,选择在几何序列和组件1”中的定义下定义的。

网格导入 操作支持导入任何类型的模型选择。最常见的选择类型有“ 定义下添加的选择,“几何”操作序列中添加的选择以及在 LiveLink™ 同步和网格导入时创建的选择。从 COMSOL Multiphysics 5.5 版本开始,我们在导入 CAD 文件时,还可以根据材质、颜色、对象(实体)和图层自动创建选择。

导入网格之后,可以使用例如“分割实体操作来创建更多的实体,或者使用“连接实体来减少实体,从而对其进行修改。也可以在创建几何之前使用自适应操作修改网格,如导出和导入拓扑优化的钢钩教程中所示。对于三维网格,我们可以直接将网格导出为与 COMSOL Multiphysics 和 CAD 软件兼容的格式,甚至可以直接用于 3D 打印。支持外部软件使用的文件格式是STL3MFPLY格式,它们是 3D 扫描和 3D 打印的常见文件格式。

如何创建几何并重复使用导入的选择

当网格符合要求后,右键单击“网格零件节点,然后从菜单中选择“基于网格创建几何”,这项设置在“模型开发器”几何操作序列的“导入节点设置新组件。在之前的博客文章中,我们详细地讨论了三维案例中涉及的过程和导入设置。

导入的选择现在可以用于在验证研究中设置材料和物理场,如下图所示。

入口边界条件设置
根据拓扑优化结果创建的几何。使用通过 网格零件导入的一个边界选择来设置入口边界条件

我们还可以复制 MPH 文件,清除几何操作序列,添加导入操作,然后直接指向新创建的网格零件。这样,只需确保选择已正确更新,就可以再次使用物理场设置。

替代过程:直接在过滤器数据集创建的网格上运行验证研究

COMSOL Multiphysics 5.5 版本开始,我们直接使用从“ 过滤器数据集创建的网格,而不必生成几何。这种操作可以适应曲面网格以提高网格质量,在需要时创建域并构建自由的四面体网格,所有这些都基于导入的网格。以教程导出和导入拓扑优化钢钩的已求解结果开始,按照以下步骤进行操作:

添加一个新的三维组件 然后来到组件3 的网格 4。注意,也可以转到两个现有组件中的任何网格,然后选择“删除序列以重复使用已经设置的物理场。在选择的组件中,添加一个网格导入操作并设置源:过滤器数据集数据集:过滤器1,如下图所示。默认情况下,将选中“导入选择复选框,以方便设置验证研究的物理场,这在上一节中已进行了讨论。这些选择列在“域选择和“边界选择。对于此用途,建议仅导入边界网格单元并单独创建域网格(请参见下面的步骤),因为这样可以得到质量更好的网格。导入后将生成网格和导入的选择,如下图所示。

使用数据集创建的挂钩网格
过滤器” 数据集定义的拓扑优化结果创建的网格。原始组件的选择转移到了新网格。

从“过滤器数据集导入的网格是用于可视化的网格,因此对于模拟而言并不理想。为提高网格的质量,我们可以添加自适应 操作,并进行以下设置:解:无表达式类型:绝对大小,大小表达式meshsz/2,其中 meshsz 是一个已定义的参数,用于定义拓扑优化研究中的网格尺寸。

自适应节点设置图
表面网格大小适应表达式 meshsz / 2 设置

使用自适应操作之前
使用自适应操作之后

使用自适应操作之前(左)和之后(右)创建的表面网格

实体信息也从过滤器 数据集转换过来,因此即使我们仅转换了面网格,也存在域。如果从文件导入表面网格,则还需要在继续下一步之前添加“创建域操作,否则将没有域来画网格。最后,我们添加了一个自由的四面体 操作来构建域网格。要确保在“自由四面体节点下方的“ 大小操作中设置适当的尺寸。这里,我们将预定义的网格大小设置为较细化 并构建网格。

现在,我们可以在验证研究中设置物理场了。

两种方式的比较

我们研究了基于过滤器 数据集创建几何或网格的可能性。那么,在选择这两种方式时,需要考虑什么呢?

通过创建几何,可以确保非平面用弯曲单元表示,而直接从“过滤器”数据集创建的网格只能使用边界的分段线性表示。如果我们要解决的物理场高度依赖于弯曲边界的平滑性,则可能需要考虑创建几何。此外,通过创建几何图形,我们可以自由地对边界进行网格重划分,而直接在拓扑优化结果创建的网格求解时,则只能适应边界网格。

另一方面,与仅使用网格相比,创建几何更加耗时且消耗更多计算机内存。此外,根据拓扑优化结果的形状,有时可能无法根据结果创建几何。例如,一个典型的情况是,代表较小或狭窄区域的粗糙网格,我们可能需要考虑直接在导入的网格上求解。

将二维几何图形导出到 CAD 软件

DXF 格式是大多数 CAD 软件平台都可以读取的二维格式。DXF 还描述了点之间的高阶多边形,因此与仅导出点相比,它通常可以更好的表示图形。

从这个几何导出优化的拓扑结构到DXF文件,我们可以按照以下步骤操作。请注意,如果要在 DXF 文件中排除域,有一个可选择步骤。

  1. 从“ 几何工具栏上的“ 布尔操作和分割菜单中添加并集
  2. 输入所有对象
  3. 使用“删除实体功能删除任何不需要的域(可选)
  4. 单击“几何工具栏上的“导出按钮,输入二维几何的 DXF 格式

如何将三维绘图数据以 STL,PLY 和 3MF 格式导出

在三维模式下执行拓扑优化后,我们通常通过创建设计变量图来查看最终形状,例如等值面图。在 COMSOL Multiphysics 中,可以从以下绘图功能中导出 STL、PLY 和 3MF 文件:

  • 等值面
  • 表面
  • 切面
  • 多切面
  • 辐射方向图

如果想要导出变形图,COMSOL 软件支持在绘图特征上添加“变形节点。

An image of a topology-optimized bracket model in COMSOL Multiphysics.
支架的拓扑优化结果。体图中的颜色表示总位移。该绘图数据可以直接用多种格式导出,以进一步在 CAD 软件中使用和进行3D打印。

将数据导出为适当的文件格式非常简单, “支架—拓扑优化案例教程中对此进行了演示。右键单击Plot Feature节点,选择添加要导出的绘图数据。在绘 节点的结果“设置”窗口中,从文件类型下拉列表中选择STL二进制文件(* .stlSTL文本文件(* .stlPLY二进制文件(* .plyPLY文本文件(* .ply3MF文件(* .3mf

A screenshot showing the different export file options.
绘制数据导出设置。支持在 CAD 软件和 3D 打印中使用的输出文件格式为 STLPLY3MF

3MF 和 PLY 文件还将包含所有网格节点的颜色数据。大多数 CAD 软件和 3D 打印平台都可以轻松读取导出的文件。

结语

如果要将实际的 CAD 工程图与优化的结果进行比较,则需要以可以导入到正在使用的 CAD 软件中的格式导出数据。DXF 格式(用于 2D)和 STL,3MF 和 PLY 格式(用于 3D)是广泛使用的格式,应该可以在许多软件平台中导入。

本篇博客文章,我们讨论了以 DXF,STL,3MF 和 PLY 格式导出拓扑优化结果所需的步骤。这将使我们将 COMSOL Multiphysics 和 CAD 软件联合使用更有效地分析模型几何。

了解有关 COMSOL Multiphysics 如何满足您的 CAD 软件和拓扑优化需求的更多信息,请单击下面按钮:

更多资源

阅读 COMSOL 博客了解有关拓扑优化和导出几何的更多信息:

]]>
//www.denkrieger.com/blogs/how-to-use-topology-optimization-results-as-model-geometries/feed/ 0
如何自动移除模型几何结构中的小细节 //www.denkrieger.com/blogs/how-to-automatically-remove-small-details-in-your-model-geometry //www.denkrieger.com/blogs/how-to-automatically-remove-small-details-in-your-model-geometry#respond Fri, 12 Jul 2019 01:54:22 +0000 http://cn.staging.comsol.com/blogs?p=203751 在 COMSOL Multiphysics® 软件中设置仿真时,你有时可能希望用自动方法来移除几何结构中一些能产生不必要的细化网格或质量较差网格的细节。这可以通过三维建模中的移除细节 操作来实现。通过深入地了解这一功能,你就可以获得单元数量更少、质量更高的网格。

CAD 去除、虚拟几何操作和移除细节操作

需要CAD 导入模块、设计模块或任何用于 导入CAD 设计的 LiveLink™ 产品中包含的 CAD 去除操作,以及 COMSOL Multiphysics® 软件核心产品组件中包含的虚拟几何操作都是为仿真准备几何结构的有用工具。你可以在在形成联合体/形成装配 之前,对几何对象使用CAD 去除操作,指定容差后就可以搜索和移除各种类型的小细节。虚拟操作是手动执行的,你可以选择并移除几何结构中不需要的几何实体。与 CAD 去除操作相比,虚拟操作更加灵活,这因为它作用于最终对象(即,在构建形成联合体/形成装配 之后),而且移除的是几何结构虚拟副本上的细节,这些细节不一定受实际几何结构的数学公式约束。

利用虚拟几何操作,移除细节 操作会选择适当的容差和虚拟几何操作来自动检测并移除小细节,这样你只需单击即可生成一个几何结构,用于划分网格。

下面我们深入讨论一个示例……

设置山地自行车叉的两部分几何结构

这个示例中讨论的几何结构包含山地自行车叉的两个部分:叉形冠和转向管。这个装配体是一个典型的使用导入的 CAD 设计创建的几何结构,包含许多小细节。但是,为了使教程相对简单,装配体中的大多数零件已经被移除。这里,我们将仔细研究一些较小的细节,包括窄面、短边和零件之间的重叠。
山地自行车叉树管和叉冠的几何结构图。
带悬架的山地自行车叉的叉冠和树管。

使用默认网格大小构建几何结构并对其进行网格划分,会导致出现多个网格警告。警告节点突出显示短边、窄面、具有窄区域的面(如下图所示)和薄域,并在创建低质量网格单元时进行报警。
显示网格“警告”节点的 COMSOL Multiphysics“模型开发器”屏幕截图。
对几何结构进行网格划分时,系统会发出有关小细节的警告,同时也会通过高密度网格点来指示这些细节。警告列出了短边、窄面和具有窄区域的面(在网格中以蓝色突出显示)以及薄域。

由于导入的几何结构有两部分,因此我们希望得到两个域(一个用于转向管,另一个用于叉形冠)。然而,由于各零件之间存在重叠,最终得到了三个域。如果仔细检查几何结构,可以看到孔和转向管半径之间的差异,如下图所示。这里,为了便于说明,我们夸大了重叠,在实际零件中重叠会小得多。重叠是为了使用过盈配合紧固技术将叉形冠牢固地安装在转向管上。这些零件要么通过力压在一起,要么是为了获得更大的干预以加热叉形冠,从而使孔在插入管之前膨胀。确定干预量后,就可以获得装配体所需的强度。

显示导入 CAD 后树管和叉冠几何结构之间重叠的图像。
显示叉冠和树管几何结构的图像,几何结构中包含因构建“形成联合体”产生的薄域。

零件之间的重叠。两幅图中的转向管都是透明的,而左侧的叉形冠以蓝色突出显示。左图中的箭头突出显示了如何在导入 CAD 设计后直接发现重叠。右图突出显示了构建 形成联合体之后因两个 CAD 组件重叠而产生的薄域。

为了给转向管和叉形冠指定不同的材料,我们希望将它们保持为单独的域,但是额外的重叠域和其他报警的小细节是不需要的,所以应该去除。为此,我们需要结合使用 CAD 去除操作和虚拟操作,因为前者是不能用于移除由形成联合体操作创建的薄重叠域。接下来,我们看使用移除细节操作让我们的任务变得多么容易。

设置移除细节操作

移除细节 中的“细节”是指短边、长条面、小面、薄域和不需要的顶点。所有这些项目通常都导致使用非常精细的网格尺寸和/或较差的网格质量。小细节也可能导致几何结构的网格划分操作失败。在由细节大小设置确定的容差范围内,操作会在几何结构中查找短边、小面、窄面和薄域,并使用虚拟操作将其移除。移除细节 操作旨在移除小细节,因此它会自动确定容差,以便在几何结构中仅移除较小的细节。在手动设置容差时,我们应该牢记这一点,因为移除太大的实体可能会导致几何结构扭曲。

默认容差设置为细节大小:自动,但可以通过手动设置切换到相对绝对。下图显示了后一种设置,其中最大单元大小 接近重叠域的厚度:1 mm。信息 部分包含有关已移除实体的数量及其移除方式(忽略或塌陷)的信息。一般来说,设置较大的最大绝对大小 最大相对大小 大概率会产生塌陷实体(域、面和边),而设置较小的大小会导致更多实体(面、边和顶点)被忽略。
移除细节操作设置的屏幕截图。
完成操作后,移除细节的设置窗口将 最大绝对大小更改为 1 mm 会导致移除多个被忽略和塌陷的实体,其中一个就是前面提到的重叠域。

要移除的细节 部分中设置连续相切的顶点 ,将移除相邻边在参数 部分中给出的连续相切容差 内具有连续切线的顶点。如果顶点有两条以上的相邻边,则始终保持不变。

选中相应的复选框后,小于细节大小 的边、面和域将被移除。可以取消选中要移除的细节 部分中的复选框,来保留某些类型的实体,或者将移除操作集中在此操作的一个或多个实体上。还可以为实体设置一组特定的参数(例如,绝对最大细节大小)来去除短边和不必要的顶点。

使用菜单下第一部分的虚拟操作 将移除顶点、边、面和域。轮辋几何虚拟操作教程模型介绍了许多虚拟操作及其用途。
“移除细节”操作使用的虚拟操作菜单屏幕截图。
显示 移除细节使用的操作的 虚拟操作菜单

从 COMSOL Multiphysics® 5.4 版开始引入的塌陷面区域 操作是用于检测和解析窄面区域的虚拟操作,窄面区域是移除细节 目前无法检测到的细节。回头看山地自行车前叉模型,我们可以看到这一点,因为在构建网格时仍有警告,如下图所示。警告 节点的选择 突出显示两个具有窄区域的面,这些窄区域不是通过为网格指定的最小单元大小 来解析的。我们可以看到这个区域中网格三角形的质量相对较差。
模型开发器屏幕截图,其中显示网格中具有窄区域的面的警告节点。
网格警告突出显示叉形冠下方带有窄区域的两个面。窄区域没有通过指定的 最小单元大小来解析,这意味着此区域中的网格单元质量较差。

根据示例几何结构,我们可以用不同的方式处理具有窄区域的面。一种方法是使用形成复合面 操作将面与相邻面连接起来。另一种方法是将面添加到塌陷面区域 操作。下面显示了两种方法的结果,其中形成复合面应用于圆孔右侧的面,塌陷面区域应用于圆孔左侧的面。
屏幕截图显示了在 COMSOL Multiphysics® 中移除模型几何结构中的小细节的两种方法。
移除窄区域的两种方法:圆孔左侧的面显示了 塌陷面区域操作的结果,圆孔右侧的较大面是 形成复合面操作的结果。

通过修改塌陷面区域 操作的窄区域容差,可以确定有多少窄区域塌陷。较大的绝对或相对容差会导致较大的区域塌陷。

为了与第二幅图中显示的网格,以及移除所有小细节之前的几何结构的警告进行比较,下图显示了应用上述操作后的最终网格。
已划分网格的山地自行车前叉模型图。

移除细节操作的幕后工程

我们已经完成了示例的第一部分,下面我们继续看移除细节操作的幕后工程。该操作可能看起来像一个黑盒测试,但与 COMSOL Multiphysics 中的大多数功能一样,我们可以切换到手动模式并检查已完成的操作,甚至可以对其进行修改。运行移除细节 操作后应检查几何结构,以确保仅移除了不需要的细节。一种方法是逐步完成扩展的操作序列,然后逐个构建操作。

如果移除细节 操作使用操作模式:自动 设置至少一次,则可以切换到手动 设置来扩展已添加的虚拟操作序列。现在,我们可以检查每个单独的操作,修改每个单独操作中的实体选择,还可以删除序列中的操作或向序列中添加操作。再次构建几何结构时,如果操作模式 设置更改回自动,对扩展序列的更改将自动重置。

使用增加容差来移除越来越大的细节,从而在不同的过程中移除细节。简单的几何结构可能只需要一个步骤,但是对于较复杂的几何结构,移除细节 操作需要三个步骤和一个清理步骤,如下所示。第一步从忽略顶点 1 开始,第二步从塌陷面 2 开始,第三步从塌陷面 开始。最后,清除步骤从忽略顶点 3 开始。

展开的“移除细节”操作序列的屏幕截图。
操作模式设置为 手动展开 移除细节序列。这可用于检查和/或修改自动移除。操作序列显示,在最后三个清理操作之前执行了三个操作。

使用多个移除细节操作

一个几何结构的不同部分具有不同大小的细节,这要求使用不同的容差。在这种情况下,使用不同的容差来处理多个移除细节 操作是合理可行的方法;甚至可以选中不同的要移除的细节 复选框。如有需要,不仅可以选择域,还可以选择边界和边。

对于同一个几何结构,我们添加一个移除细节 操作,将叉形冠域(域 1)的最大绝对大小 设置为 2 mm。然后,使用忽略边 操作手动移除某些边。最后,为重叠域(域 3)添加另一个移除细节 操作。如下图所示,只有薄域 复选框被选中进行移除,选择列表 显示,在此操作完成后只剩下两个域。

为了消除重叠域,这里移除的实体列表相当广泛,这是因为此过程涉及许多不同的虚拟操作。重叠域最终成为转向管域的一部分。我们将无法选择该域,它将成为之前域的一部分,但可以通过扩展移除细节 操作的序列并手动修改选择来实现。,重叠要小得多,因此它成为哪个域的一部分并不重要。但是,对于重叠多的情况,可以根据需要进行更改。
序列中第二次移除字节操作的设置窗口屏幕截图。
对不同的域选择使用具有不同容差设置的多个 移除细节操作。最后一个操作移除域 3,即重叠域。

总结

本篇博客,我们讨论了移除细节 操作的功能和用法。这个操作是自动化的,且非常有用,我们建议您在 COMSOL Multiphysics 中处理较复杂的几何结构时使用。对于导入的 CAD 设计,移除细节 特别有用,这是因为你很少有机会直接修改导入的设计。在处理最终几何结构时,此操作还可以移除由相交对象创建的实体,这些实体在原始对象中无法处理。

后续操作

单击下面的按钮进入案例下载页面,尝试操作本篇博客文章中的模型。请注意,你必须登录 COMSOL Access 帐户并拥有有效的软件许可证才能下载 MPH 文件。

阅读这篇 知识库 文章中有关使用形成联合体 形成装配 的更多信息。

]]>
//www.denkrieger.com/blogs/how-to-automatically-remove-small-details-in-your-model-geometry/feed/ 0
COMSOL Multiphysics® 中的网格划分是否并行运行? //www.denkrieger.com/blogs/is-meshing-run-in-parallel-in-comsol-multiphysics //www.denkrieger.com/blogs/is-meshing-run-in-parallel-in-comsol-multiphysics#respond Fri, 03 May 2019 08:14:19 +0000 http://cn.staging.comsol.com/blogs?p=308981 你有没有想过,模型几何的拓扑结构,换句话说,将几何体分解为域、边界、边和顶点等几何实体,是否会在某种程度上影响COMSOL Multiphysics® 软件中网格生成对计算资源的使用?如果是这样,那么你可能会对本篇博客感兴趣……

COMSOL Multiphysics® 中的并行网格划分

以下操作使用共享内存的并行:

  • 自由四面体网格
  • 自由三角形网格
  • 自由四边形网格
  • 映射
  • 边界层
  • 扫掠

自由四面体 是跨域和面的并行操作。这意味着当此操作在一个具有四个域的几何上生成四面体时,它最多可以使用四个内核,而如果几何中有一个域,则相同的操作只能使用一个内核——不管有多少个内核可用。类似地,自由三角形自由四边形映射 操作在二维域和三维面之间是并行的。

边界层 操作是部分并行的。与其他操作不同,这个网格操作在每个域内是并行的。

最后,作为扫描 操作的一部分,连接面的网格划分(通过映射 操作完成)是并行的。

请注意,在网格操作的序列中,网格的建立是自上而下,一次一个操作。因此并行化是在每个操作中一次完成的。

基准示例性能测试

在实际建模场景中,并行化的网格划分能加快多少时间呢?我们取一个 6 m×1 m×1 m 的块,在一台有 6 个内核的普通台式电脑上进行网格划分。在网格 下添加一个自由四面体 操作。在整个测试过程中,使用以下网格单元大小参数。

  • 最大单元大小:0.02 m
  • 最小单元大小:0.01 m

A screenshot of the Settings window for mesh size in COMSOL Multiphysics®.
基准示例测试中使用网格的 大小设置

这些设置提供了非常精细的网格,从而产生了大约 1300 万个四面体单元。

我们设置了三个测试示例,其中的模型分别具有:

  1. 一个域
  2. 六个域,将块划分为六个大小相等的域
  3. 六个域,限制软件只能在一个内核上运行
用于评估网格划分并行运行的基准测试的几何图像。
划分为六个相等域的块几何示意图。

左图:具有 1 个域的 6 m×1 m×1 m 块(情况 1)。右图:与情况 1 具有相同外部大小的几何图形,但分为 6 个大小为 1 m×1 m×1 m 的域(情况 2 3)。

为了限制软件仅在一个内核上运行,可以将选项 -np 1 添加到启动命令。也可以在首选项 对话框的多核与集群计算 页面上执行此操作。

基准示例测试结果和讨论

3 次测试的结果汇总在下表中。情况 1 和 3 中的网格划分将仅在 1 个内核上运行,并且需要大约相同的时间来划分网格。含 6 个域的几何结构(情况 2 和 3)具有更多的边界,因此会产生更多的三角形单元,这也意味着该几何结构需要更多的网格划分工作。在情况 2 中,网格算法使用所有 6 个内核,但网格划分时间减少到仅使用一个内核时的 25% 以下。

情况 时间 三角形单元 四面体单元
1 1 136 s 1.51e3 13.0e6
2 6 31 s 1.81e3 13.0e6
3(1核) 6 147 s 1.81e3 13.0e6

在六核台式计算机上运行的基准示例测试结果。测试显示从一个核(表中的第一行和第三行)到六个核(表中的第二行)有明显的加速。

你可能想知道是否应该将几何体划分为与核一样多的域,假设开始时的域较少。答案是:没有必要…

对域进行分割会导致更多的边界。这就给网格设置了更多的约束,反过来,这可能会给网格带来更复杂的情况。边界增加将需要更长的时间进行网格划分,通过比较情况 1 和 情况3 中三角形单元的时间和数量,我们可以清楚的看到这一点。还应该考虑到,分割域会导致需要更精细网格大小的狭窄域。请注意,这个基准示例中的情况是理想化的,即六个核上有六个相等的域。在实际情况下,更有可能的是一些域更复杂,并主导了网格划分的时间,从而导致速度降低。

使用边界层划分域

边界层 操作在插入边界层单元时是平行移动点的,甚至在单个域上操作也可以这样做。因此,分割域不会提高性能,相反,因为额外的分割面需要更多的处理时间。

我可以使用多少个网格操作而不损失性能?

我们使用上面基准示例中的情况2(在最多六个核上进行六个域的网格化)来说明。并行化是按网格操作进行的,因此如果我们现在再添加另一个自由四面体 操作,并在每个操作中对三个域进行网格划分,则最多可以使用三个核。一般来说,建议使用尽可能少的网格操作(相同类型)。这不仅可以尽可能的并行化,而且还可以很好地优化网格的质量。要在不同的域或边界上设置不同的尺寸,请使用多个全局或局部尺寸属性,并且只使用一个自由四面体 操作。使用网格划分序列教程模型中讨论了有关设置全局和局部尺寸属性的细节。

网格划分并行运行的总结性思考

在这篇博客中,我们讨论了 COMSOL Multiphysics 中网格划分算法的并行化方式。一个简单的基准示例测试结果表明,并行运行的网格划分可以通过将域的网格分布在更多核上来明显加快算法速度。

推荐阅读

有关自由四面体 操作的更多信息,以及修改几何的可能方法,请查看以下资源:

]]>
//www.denkrieger.com/blogs/is-meshing-run-in-parallel-in-comsol-multiphysics/feed/ 0
如何使用插值材料数据模拟不规则几何 //www.denkrieger.com/blogs/how-to-use-interpolated-material-data-to-model-irregular-geometries //www.denkrieger.com/blogs/how-to-use-interpolated-material-data-to-model-irregular-geometries#respond Tue, 20 Mar 2018 01:36:42 +0000 http://cn.staging.comsol.com/blogs?p=226751 在上一篇博客文章中,我们讨论了创建不规则形状的几何图形的不同方法。本篇博客文章中,我们将通过使用插值函数演示一种非常强大的替代建模方法:利用拟研究对象材料属性的空间变化间接定义不规则形状,来代替创建几何对象。

我无法创建不规则几何怎么办?

通过一些测量技术,我们已经能够获得描述材料代表性体积内的材料属性如何变化的数据。通过可视化数据,可以识别出具有不同属性的几个区域。例如,多孔材料块中的孔和固体区域。但是,如果识别出的区域形成高度不规则的形状而不适合在 COMSOL Multiphysics® 软件中生成几何图形,我们该怎么办?

如果我们可以访问代表性体积坐标中的材料属性(可以轻松绘制其形状),则可以基于此数据使用插值函数为模拟定义材料,从而跳过创建不规则形状的几何对象。

孔隙尺度流动(Pore-Scale Flow)教程模型就是一个很好的示例。在该模型中,我们使用基于图像函数的材料参数在矩形域上求解不可压缩的稳态Brinkman方程。

代表孔隙尺度流动教程中使用的多孔介质的图像函数
代表孔隙尺度流动教程中使用的多孔介质的图像函数。颜色范围从 0 到 1,其中蓝色(0)代表液体,红色(1)代表固体。

在标有红色的区域中,将材料参数设置为模拟固体,并在蓝色区域中定义流体的材料参数。

由不规则形状生成的规则形状:人体头部的 RF 模拟

在代表孔隙尺度流动教程中使用的多孔介质的图像函数人体头部模型的博客文章中,我们讨论了如何基于不同横截面上的曲线数据放样。假设我们没有放样头部所需的曲线数据,或在附加的设计模块中无法放样。却有一个文本文件,其材料属性在区域内的坐标中定义。接下来,我们从使用人体头部几何图形开始介绍示例教程。

切面图显示了空气和人体头部的电导率
切面图显示了空气(深蓝色)和人体头部的电导率(S/m)。

人脑的比吸收率(SAR)教程模拟了人体头部如何吸收天线辐射波,以及所吸收的辐射引起的温度上升。

贴片天线位于头部的左侧,并由集总端口激励。本文介绍的教程演示了如何在没有头部几何形状的情况下建立模型,并显示了需要进行哪些修改才能实现。

该模型显示由于天线吸收了辐射而导致人脑温度升高的模型。
人脑教程模型中的比吸收率(SAR)。由于天线吸收了辐射,等值面显示了温度升高 dT(K)。

我们的目标是将材料数据导入到插值函数中,因此可以使用这些函数来定义计算域的材料属性,使问题变得简单。如果没有头部的几何形状,我们只需要代表头部和周围的空气的球体以及完美匹配层(PML)区域。此外,还保留了带有附加边缘的较小长方体,该长方体代表贴片天线。

没有几何图像的几何
没有头部几何形状的模拟几何。

在 COMSOL Multiphysics® 中使用文本文件创建插值函数

带有材料数据的文本文件可以用不同的方式格式化。在此示例中,我们使用了电子表格 格式。在这样的文本文件中,每个 xyz 坐标都有一列,后面跟着任意数量的数据列。模型的文本文件中的列包括:

  • 空间维数:x,y,z
  • 导热系数:k(W/(m*K))
  • 相对介电常数:epsr(1)
  • 相对磁导率:mur(1)
  • 电导率:sigma(S/m)
  • 血液灌注率:omega_head (1/s)

如果文本文件包含 NaN 条目,通常建议根据材料属性将它们替换为零,一个较大值或较小值,因为如果函数在计算域中内插到NaN,则会引发求解器错误。我们在文件中为每个数据列创建一个插值 函数,并添加变元的单位以及函数本身,以便在物理场中正确识别这些单位。当所有数据列都具有相同单位时,可以在同一 插值 功能内创建所有函数。

我们希望在模型开发器的全局定义 部分中创建 插值 特征,因为我们不仅需要材料属性函数来定义物理场的材料属性,还希望帮助在头部表面生成更细的网格。为此,我们将在生成网格时使用大小表达式 功能,这将在后文中讨论。

示例模型的 COMSOL Multiphysics 中插值设置的屏幕截图。
一个插值函数的“设置”窗口。“文件中的位置”框中的数字对应于从 1 开始的数据列的编号。在此图像中,sigma_int 来自文本文件的第四列数据。函数的单位可以在“设置”窗口的底部输入。

创建变量以识别头部内部和表面的位置

当几何边界从一个域到另一个域定义过渡时,网格必须始终遵循区分这些域的面部形状。由于没有代表头部的面,因此我们需要手动告诉网格算法在哪里细化网格很重要。头部内部的网格大小可以与头部外部的网格大小大致相同,因此解析两种材料(头部和空气)之间的边界至关重要。通常,解析材料之间的变化非常重要,因为这通常会在场中施加梯度。梯度越大,网格必须越细,以解决过渡问题。对于某些应用程序,重要的是还要在整个域中解析网格,而不仅仅是在不同材料之间的边界解析。

为了沿头部形状细化网格,我们基于插值函数 k_int 添加了两个全局变量,该函数为 0.5W/(m*K),空气域中几乎为零。在头部内部变量 avMat 为 1,在边界附近变量 onBnd 为 1:

avMat = (k_int(x-d,y,z)/0.5+k_int(x+d,y,z)/0.5+k_int(x,y-d,z)/0.5+k_int(x,y+d,z)/0.5+k_int(x,y,z-d)/0.5+k_int(x,y,z+d)/0.5)/6
onBnd = (avMat>0.01)*(avMat<0.99)

参数 d 等于在 大小表达式 节点中使用的细网格尺寸,并定义了细化网格的区域厚度(下图中以红色突出显示)。

使用变量创建的 COMSOL 切面图
onBnd 变量的切面图,其值在 0 (蓝色)到 1 (红色)之间。使用网格大小表达式在红色显示区域细化网格。

建立更细的网格求解头部形状

在网格序列的自由四面体节点下,添加了大小表达式 特征节点以指定一个表达式,该表达式用于确定要使用的网格大小。请注意,表达式的计算结果应能评估我们需要使用的网格大小(如果使用的是SI单位,则以米为单位)。

大小表达式设置 COMSOL 模型 的屏幕截图

使用默认选项Evaluate o:Grid,意味着该表达式在常规网格上求值并在网格点之间进行插值。该网格在模型中不可见,仅用于评估大小表达式。当使用此设置时,必须在全局定义定义 表达式中使用的所有变量和函数,这一点很重要。我们还将 每个维度的单元数设置增加为50(默认值为25),以使用更精细的常规评估网格更好地解析区域。使用在列表中评估的任何其他选项可以手动控制在其上进行评估的网格。我们使用的大小表达式 定义为

onBnd * Fine +!onBnd * Coarse

其中,两个参数细化粗化 分别被定义为 0.007m 和 0.07m。将它们定义为参数时,可以轻松地手动更改,也可以通过参数扫描 研究在参数化扫描中 对其进行更改。教程模型中有一个称为网格图 的图组,显示了用于计算网格的横截面。您可以在以前的博客文章中详细了解有关可视化网格的更多信息

使用网格过滤器创建的 COMSOL Multiphysics 网格图
使用网格 过滤器的网格图,绘制x <0的网格单元大小。此图像显示了更加精细的网格使图像更加清晰。教程模型使用了较粗的网格以节省内存和时间。

设置材料和物理场

正如上文提到的,我们将只讨论建立材料和物理场与原教程的差异。我们可以获得 人脑的比吸收率 (SAR)教程模型中使用的材料和物理场的详细信息。将材料1作为天线的材料,为其余区域(空气和头部)添加了新材料,使用插值函数k_int(x,y,z)epsr_int(x,y,z)mur_int(x,y,z),和 sigma_int(x,y,z) 定义材料属性。

选择域5(空气和头部域)在生物传热 物理场接口中处于活动状态。在生物热 子节点中,使用全局变量 avMat 定义血液的两种材料属性,以确保头部外部的材料属性值为零。例如,比热、血液 被定义为 c_blood*avMat,其中 c_blood 是一个参数。血液灌注率 被设置为插值函数 omega_blood(x,y,z)。现在,我们完成了修改,并准备在求解模型后比较结果。

结果比较与差异讨论

从显示比吸收率值的图像中可以看出,在两个模型中辐射以相似的方式被吸收。可以在切面图中看到头部的形状,即使与具有头部几何对象的原始模型相比,切面的边缘也相当粗糙。此教程中的图形使用手动输入颜色和数据范围,并使用插值函数过滤头部的形状。

原始模型结果
使用插值材料数据的模型结果

局部比吸收率值的对数标尺切面图。左图为原始教程模型,右图为使用了插值材料的模型结果。

使用最大体积 功能来计算头部的最大温升。在原始模型中,温升值约为 0.15K;在使用插值材料的模型中,温升值约为 0.17K。

获得恰当结果的两个主要因素是:

  1. 良好解析的材料参数
  2. 足够细的网格,尤其是靠近头部表面的网格

材料数据的解析度可能比实际计算网格的解析度要高得多,但是如果材料数据解析的程度不足以匹配计算网格,将无法制作出更精细的计算网格。求解一个精细的计算网格需要更多的内存和更多的时间,而分辨率更高的材料数据通常需要花费更多的时间,因为需要插入更多的数据。

还有另一个错误来源:我们正在求解空气中的生物热传递,其导热系数小且非零。但是,这可能对结果的影响不太大。错误的主要来源是材料数据的分辨率和计算网格。

结语

在本篇博客文章中,我们演示了如何使用文本文件中定义的坐标依赖的材料属性来建立模型,以及如何调整网格大小以准确地解析两种材料之间的边界。另外,我们还讨论了错误产生的原因以及如何提高结果的准确性。在无法生成高度不规则形状对象的几何图形的建模场景中,这种方法非常有用。

后续操作

单击下面的按钮,尝试模拟本博文中介绍的教程模型。在 COMSOL 案例库中,您可以登录COMSOL Access帐户并下载 MPH 文件。

 

]]>
//www.denkrieger.com/blogs/how-to-use-interpolated-material-data-to-model-irregular-geometries/feed/ 0
如何基于高程数据创建几何并模拟不规则形状 //www.denkrieger.com/blogs/how-to-build-geometries-from-elevation-data-to-model-irregular-shapes //www.denkrieger.com/blogs/how-to-build-geometries-from-elevation-data-to-model-irregular-shapes#respond Tue, 19 Dec 2017 05:36:33 +0000 http://cn.staging.comsol.com/blogs?p=226861 本文是系列博客:如何在 COMSOL Multiphysics® 软件中模拟不规则形状的第二部分。今天我们重点介绍如何基于文本、图像或数字高程模型(DEM)文件等以各种格式存储的高程数据,创建不规则形状的表面。这种方法最适合高度(或高程)是 xy 坐标函数的数据。

不规则形状示例:马特洪峰

在上一篇博客中,我们使用人体头部作为不规则形状的示例,讨论了如何导入曲线数据放样成几何实体。今天,我们以欧洲山脉马特洪峰(Matterhorn,阿尔卑斯山峰之一,位于瑞士与意大利之间的边境,海拔 4478 米)作为不规则形状示例,讨论如何基于高程数据创建不规则形状表面。

马特洪峰的照片
Matterhorn的东面和北面。照片来自camptocamp.org。获得CC BY-SA 3.0下许可,通过Wikimedia Commons公布

高程数据是描述地理特征的典型格式。今天,我们将讨论如何导入到 COMSOL 中来模拟马特洪峰表面的不规则形状。该流程可以简单概括为以下步骤:

  • 将文本文件、图像文件或 DEM 文件中的高程数据导入到特征函数中
  • 基于上一步定义的函数创建参数化曲面
  • 将曲面与实体合并,获得计算域
  • 移除不需要的域(可选)

现在,让我们看一下如何在 COMSOL Multiphysics 中创建马特洪峰的实体几何。

创建插值、图像和高程函数

我们将使用该山脉高程的文本文件和灰度图像创建与马特洪峰的近似几何模型。文本文件通过插值 函数导入,图片则通过图像 函数导入。我们还将简要介绍如何将 DEM 文件导入到高程 函数中,但是本文示例的MPH文件不包括此内容,该示例可点击文末的链接下载。

图像 函数中,需要指定 xy 方向上的实际最大值和最小值,因为图片仅包含与像素数和每个像素颜色相关的信息。由于几何边长为 2000 米,将 xy 的最小值和最大值分别设置为 -1000 米和 1000 米。注意,如果函数用于定义材料或物理场数,也可以添加参数和函数的单位。

COMSOL Multiphysics中插值功能设置的屏幕截图。
COMSOL Multiphysics中图像功能设置的屏幕截图。

插值函数(左)和图像函数(右)的设置窗口。区域的大小和位置插值函数使用的文本文件定义,而图像函数必须设置区域的实际大小。

基于导入数据的插值函数。
马特宏峰高度的灰度图像

该图显示了导入的文本文件的插值函数(左)。导入的数据:DHM25©swisstopo。彩色标尺值代表山的实际高度。灰度图像(右)显示了山的高度。请注意,颜色标尺已标准化(0~1)。

如果地理数据存储在 DEM 文件中,则更适合创建高程(DEM函数。如果在 DEM 文件中指定的区域不是矩形,则可以在 将缺少的数据替换为 编辑框中指定域外的高度。在下面的示例中,表面高度被设置为 0 米。

COMSOL 中的高程设置界面。
当导入的是 DEM 文件时,使用高程(DEM)函数。如果文件中定义的域未填满矩形域,可以在 将缺少的数据替换为 编辑框中输入一个值。默认值设置为 0 米。

创建参数化曲面

现在,可以将基础数据用于模型了,接下来,我们继续创建山顶的实际形状,这可以使用 参数化曲面 特征来实现。

COMSOL中的创建参数化曲面功能
在几何功能区的 更多体素 下可以找到 参数化曲面 特征。

导入 DEM 文件后,此过程非常容易,因为只需单击 创建表面 按钮即可。此操作将设置一个参数化曲面 特征,其中参数来自DEM 文件中的已经输入的最大值和最小值。

COMSOL中带注解的创建参数化曲面功能
单击创建表面按钮,基于导入的 DEM 文件创建参数化曲面。

由于函数略有不同,因此使用的表达式也将有所不同。推荐将两个参数(s1s2)值范围设置为 0~1,因此要获得最终几何图形的实际尺寸,我们需要重新设置 xyz 表达式的参数。

使用马特洪峰的实际尺寸定义的 插值 函数的表达式如下所示。获得 xy 方向上的最大值和最小值的一种方法是:无需重新调整表达式,先构建 参数化曲面 ,然后测量所创建曲面角位置的 xy。另一种方法是将坐标数据导入电子表格编辑器,按升序重新排列坐标。

xs1*(6.18e5-6.16e5) m
ys2*(9.27e4-9.07e4) m
zint1(s1*(6.18e5-6.16e5)+6.16e5, s2*(9.27e4-9.07e4)+9.07e4) m

图像 函数中 xy 值的范围为 -1000 ~1000 米,输出值的范围 0~1,其表达式将变为:

xs1*2000 m
ys2*2000 m
z(4478-3000)*im1(s1*2000-1000,s2*2000-1000) m

请注意,在使用 图像 函数时,我们还需要对 z方向的值进行调整,因为它被归一化为 0~1了。在下面显示的设置窗口中,可以看到 z 位置被更改为3000,以将表面转换到正确的空间位置。

为了更好地表征表面,将 最大结数 增加到 300(默认值为20)。也就是说,矩形区域将在两个参数方向上最多划分为 300 个部分,形成补丁。允许的结数越多,将补丁调整到给定的 z 表达式的灵活性就越大,从而增加了获得更严格的相对容差的机会。

该算法首先将整个区域划分为较小数量的补丁,然后在误差较大的地方增加补丁的数量。可以减少补丁位置和实际数据点之间的相对误差,通过允许更多的结来降低。该算法尝试通过添加更多的结来达到设置的 相对容差(默认值为1.0E-6)。

当无法达到容差要求(如果最大节数 设置得过低,可能会出现这种情况)时,系统会发出警告,指出用于构建曲面的容差值。如果要删除警告,请复制 警告 节点的容差并将其粘贴到 参数化曲面 特征中,然后再次构建曲面。

在本文的示例中,相对容差 被手动设置为 0.002。如果结数设置的过大,创建曲面时会产生大量的几何操作。应在使用足够的结以获取较小的相对容差,和保持足够的结数以在合理的时间内完成之间保持平衡。有时,如果表面定义包含噪声,而我们期望获得较平滑的表面时,减少最大结数 将获得一个不会过于贴近噪声的表面。

插值函数的参数化曲面功能设置
图像函数的参数化曲面设置。

两个参数化曲面特征的设置窗口。对表达式进行了重新参数化,以保持两个参数的标准化。增加的最大结数可以更好地表示曲面。

创建实体

无论采用哪种方法,现在都应该有一个表示马特洪峰表面的几何表面对象。但是,大多数模拟都需要固定域。为此,我们首先添加一个包含大小和位置的 长方体,使 参数化曲面 与该长方体相交。

然后,将两个几何对象添加到 转换为实体 特征。转换为实体 操作将创建长方体与曲面的并集,以及删除曲面上延伸到长方体外的任何部分。在本文示例中,当长方体完美贴合曲面的外边缘时,也可以使用 并集 操作,效果是一样的。将表面和长方体组合后,会产生一个被马特洪峰表面分隔的由两个域组成的实体对象。

基于插值数据的不规则曲面模拟几何
基于灰度图像的不规则曲面几何形状

构建 转换为实体 特征后生成的几何形状。左图显示的是基于文本文件中插值数据的不规则表面,右图显示的是基于灰度图的图像。

本文描述的过程可用于创建夹层几何结构,其中导入的表面将分隔不同的材料。例如,如果要查看具有不同特性的岩石层中的应力,可遵循相同的流程生成每一个曲面,并将它们全部包含在 转换为实体 特征中。

生成最终几何结构

现在,我们已经创建好可用于划分网格和模拟的山峰几何结构了。但是,如果我们仅对分析岩石感兴趣,就可以轻松删除代表空气的上部区域。通过设置 几何实体层 并添加 “域2” 到选择,就可以使用 删除实体 特征删除空气域。现在,如果旋转此山峰,就可以看到与本文头展示的马特洪峰照片相似的几何结构了。

基于插值数据的 Matterhorn 山脉最终几何形状
基于图像的 Matterhorn 山脉最终几何形状。

使用文本文件(左)和图像(右)作为输入创建的最终几何结构。导入的数据:DHM25©swisstopo

结语

尽管两个山顶的几何形状非常相似,但仍存在差异。如果以相等的网格大小进行网格剖分,将得到略有不同的网格。部分原因是由于插值图像函数为参数化曲面 特征提供的输入略有不同。

参数化曲面 特征本身在根据结创建表面时也会进行内插,所以这里涉及到两个内插。但是,只要网格尺寸大于所提到的两个插值产生的容差,就可以与导入的数据非常接近。

延伸阅读

不规则形状也可以采用其他类型的文件格式。在之前的博客文章中,我们讨论了如何从导入的网格中创建几何。在本系列博客的下一篇文章中,我们将演示如何在规则形状的域上插入材料数据。

点击下面的按钮,下载用于创建示例模型的 MPH 文件。

]]>
//www.denkrieger.com/blogs/how-to-build-geometries-from-elevation-data-to-model-irregular-shapes/feed/ 0
模拟不规则形状:如何导入曲线数据并放样成实体 //www.denkrieger.com/blogs/modeling-irregular-shapes-how-to-import-curve-data-and-loft-a-solid //www.denkrieger.com/blogs/modeling-irregular-shapes-how-to-import-curve-data-and-loft-a-solid#comments Wed, 20 Sep 2017 01:53:39 +0000 http://cn.staging.comsol.com/blogs?p=226281 不规则形状有多种不同的格式。例如,我们之前讨论过将 STL 文件和 NASTRAN® 网格导入 COMSOL Multiphysics® 软件这些格式常见于处理生物扫描数据时。在接下来的系列博客中,我们将讨论在 COMSOL Multiphysics 中处理不规则形状的不同方法。本文为第一部分,主要讨论如何导入曲线数据并放样成实体。

一个不规则形状示例:人体头部

处理扫描数据时,有时会出现带有坐标数据的文本文件,这些文件通常来自 MRI 或 CT 扫描得到的切片图像。本示例中的文件或截面坐标来自人体头部的不同切面。每个坐标文件代表头部特定平面外表面的曲线。

简而言之,该过程包括:

  • 创建每个文本文件的曲线对象
  • 将曲线的边缘进行分区,以确保点在放样方向上对齐
  • 将曲线放样成实体
  • 隐藏不必要的边缘以生成一致的形状

接下来,我们来详细了解每一个步骤。

导入曲线

为了能够在插值曲线 功能中导入文本文件,需要以分段 的格式组织坐标。这是 COMSOL Multiphysics 的一种原生格式,其中文本文档由三部分组成,一部分表示坐标,一部分表示单元连接,一部分表示数据列。这里,我们需要使用前两个部分,而使用此格式创建几何时可以省略数据列。下面是分段 格式的文件示例:

%坐标
1-3 列,分别包含 x,y(可选)和
z(可选)
%单元
三角剖分,其中每一行都包含
组成一个单元的点在“坐标”部分里的行索引
(在二维结构中为三角形,在三维结构中为四面体)
%数据(函数名)
每个点的数据值列

在本示例中,有 17 个文本文件,其中包含来自三维对象的坐标数据。每个文本文件增加了一个插值曲线 功能,总共提供了 17 个曲线对象。设置封闭曲线 用于确保创建的曲线对象确实封闭,并且一阶和二阶导数是处处连续的。在 COMSOL Multiphysics 中,放样一个闭合曲线会产生一个实体,而放样一个开放曲线会产生一个曲面。相对容差 将增加到 0.001 或 0.01,以产生一个相对平滑的曲线。在默认容差(数值为 0)下,曲线的形状比较参差不齐。在此示例中,头部的顶部由一个点表示。

插值曲线”特征的 “设置”窗口和代表头部外壳的所有曲线
“插值曲线”特征的“设置”窗口(左)和代表头部外壳的所有曲线(右)。当 相对容差增高到 0.001 或 0.01 时,曲线更加平滑。设置 “闭合曲线”确保了曲线封闭且处处具有连续一阶和二阶导数。

放样成实体的注意事项

当为头部横截面轮廓定义好曲线对象后,我们可以使用放样 操作创建实体形状。放样 操作是 COMSOL 设计模块 中包含的几何建模工具,关于这个功能的使用,我们可以阅读博客文章 设计模块简介。在设置放样 操作之前,我们需要确保曲线对象适合作为放样的轮廓。将曲线或曲面放样到实体需要不同的轮廓具有相同数量的边和点。第一个和最后一个对象(称为开始和结束轮廓)是个例外,可以是点。在此示例中,头部的顶部就是这种情况。

闭合的插值曲线具有两个顶点,但是无法选择它们的位置。上面提到的标准已经满足,即中间曲线具有相同数量的边和点,因为所有创建的曲线都具有两个边。但是,这些点在轮廓对象上的位置也很重要。当沿着曲线放样时,将沿放样方向把所有点与边连接起来。如果这些点的位置没有在一个相对直线的位置,那么生成的曲面可能会变形。因此,我们经常需要进一步分割边以更好的表示曲面。为此,我们可以使用两种不同的过程完成这些设置:由数据创建曲线并将其放样到对象中。

分割曲线边

如何分割边以及使用哪些功能并不是一门精确的科学,而是需要我们反复尝试并根据外观检查来决定最佳外观。此时,我们使用了分割对象分割边 功能。使用分割对象 操作的优点在于,该选项允许在与选定平面的交点处划分多个曲线对象。由于人头示例中插值曲线已经包含前后相对对齐的点,因此在 y= 0 处添加了一个工作平面,以沿相同的虚构线创建更多点。

使用 工作平面在 y=0 对一些曲线进行分割。设置分割对象功能(左)。蓝色突出显示的曲线由工作平面在两处分割
使用 工作平面 y= 0对一些曲线进行分割。设置 分割对象功能(左)。蓝色突出显示的曲线由工作平面在两处分割,该工作平面为带有矩形栅格的灰色表。

分割边 功能是基于指定的相对弧长或投影一个或多个顶点,对选定的边进行分割。由于我们希望放样曲线时顶点能够很好地对齐,因此投影顶点是一个不错的选择。但是,对于某些边,最好指定相对弧长,以更好地控制顶点的创建位置。

分割边设置窗口图,其中包含顶点投影规范和弧长规范,以及显示在人头模型中为顶点投影选择的边缘的图像。
分割边”功能的设置窗口显示 顶点投影(左)和 弧长(中间)设置类型,以及为顶点投影选择的边(右)。

要验证几何对象具有相同数量的边和点,请单击 图形 窗口上方的选择对象 按钮,在 图形 窗口中选择曲线对象,然后单击 几何网格 选项卡中的 测量 按钮。该度量输出将写入消息 日志。

放样成实体

现在,这些点已大致对齐,是时候创建实体了。放样 功能包含许多选项,但此处仅使用最简单的过程:将所有曲线对象和头顶的点添加到 轮廓对象 列表中。由放样 操作自动确定开始和结束轮廓。如下左图所示,有许多折叠部分功能(以蓝色突出显示)可用于调整放样。例如,指定放样的方向。在这个示例中,我们不使用折叠部分的功能。

“放样”操作的“设置”窗口和放样生成的头部实体。
“放样”操作的“设置”窗口(左),显示输入轮廓对象,这是本示例中唯一使用的输入。右图是放样生成的头部实体。

面分割

从闭合的连续轮廓曲线放样的表面或实体对象具有至少两个接缝,这些接缝穿过轮廓曲线的顶点,从而创建了两个面分割。该操作可能会引入更多接缝,具体取决于不同曲线上顶点的对齐方式。如果轮廓曲线的切线不连续,则会引入其他穿过这些点的接缝。使用默认设置面分割 :最小化放样操作时(请参见上图),不会引入其他接缝,如本文中示例所示。

如果我们希望对放样表面进行更多分割(例如,分配边界条件),可以使用分割选项栅格。第一个选项沿轮廓曲线中的每个顶点划分曲面,而后者还添加了轮廓曲线。还有另一种可能性是使用几何图形 功能区中的不同分割 操作。另一方面,如果我们想要更干净的外观,可以使用虚拟操作 来创建复合面。我们还可以使用忽略边 功能 来实现,通过形成 复合面 功能 也可以得到相同的最终结果。

“忽略边”操作的设置的屏幕截图以及人头的最终几何形状的图像。
将上一张图像中显示的边添加到“忽略边”操作(左)中,最终几何图形将变得平滑美观。

不规则形状建模的其他方法

本篇博客文章讨论了由坐标数据创建曲线,然后将这些曲线放样到实体中的可能性。本系列博客的后续文章将讨论 COMSOL Multiphysics 中其他可能的格式以及处理不规则形状的方法。

点击下方按钮,下载文中示例的 MPH 文件:

NASTRAN 是 NASA 的注册商标。

 

]]>
//www.denkrieger.com/blogs/modeling-irregular-shapes-how-to-import-curve-data-and-loft-a-solid/feed/ 1
改进后的 STL 和 NASTRAN® 文件导入功能及其操作技巧 //www.denkrieger.com/blogs/improved-functionality-and-tips-for-importing-stl-and-nastran-files //www.denkrieger.com/blogs/improved-functionality-and-tips-for-importing-stl-and-nastran-files#comments Wed, 14 Sep 2016 10:25:04 +0000 http://cn.staging.comsol.com/blogs?p=183951 在为与几何和网格相关的问题提供技术支持时,我们注意到,越来越多用户开始使用由 3D 扫描得到的 STL 文件和 NASTRAN® 文件格式的网格来创建几何。对此类真实物体进行模拟是一项非常具有挑战性的工作,而其中最难的部分是创建几何。现在,新版本的 COMSOL Multiphysics® 软件让此类文件的处理工作变得简单。阅读文章,了解如何使用此项功能,以及如何利用导入的 STL 和 NASTRAN® 文件进行几何创建。

STL 和 NASTRAN® 文件格式

之前发布的一篇博客文章提到,STL 格式是 3D 打印的标准文件格式之一,也常用于 3D 扫描。STL 文件只能描述三维物体,完全由三角形平面片构成,也可以称其为表面网格。STL 是一种被广泛使用的非标准扩展格式,COMSOL Multiphysics 支持单个 STL 文件中包含多个对象。

对于一个标准的文本 STL 文件,其首行以 solid 开头,尾行以 endsolid 开头。许多软件支持包含多个文本段的 STL 文件。导入此类文件将产生多个几何对象,其数量取决于文件中所包含的文本段数量。

图片显示了导入到 COMSOL Multiphysics 的脊椎的 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 设计)。若选择了检测面 选项,我们便可以手动设定参数。

网格导入的边界分割设置。
COMSOL Multiphysics 中使用最小边界分割设置导入的 STL 文件。

左:网格导入的 边界分割设置。右:使用 最小边界分割设置导入的 STL 文件。几何图片来源:Mark Yeoman,Continuum Blue 公司,英国。

对于由 3D 扫描得到的、拥有一个或多个平面的网格而言,“检测面”选项最为实用。针对此类情况,我们希望最大程度地减少面的数量,但同时希望平面拥有自己的边界。要达到这一目的,可以将最大边相邻角度 设为 180°,它产生的效果与最小 设置相同。为了检测平面,务必确保勾选了检测平面边界 复选框。

当修改最大边相邻角度 无法满足要求,还需要调整最小相对面积最大相邻角度最小相对面积 设置规定了被检测的平面相对于表面网格总面积的最小面积下限,而最大相邻角度 规定了同一平面中相邻边界单元之间的最大角容差。

举例来说,为了检测下图中的两个突出显示的边界,我们将最小相对面积 减小到 0.001,并将最大相邻角度 增加到 1°。

T检测面边界分割特征。
生成的几何的图片。

检测面边界分割特征(左)显示了几何创建的具体设置(右)。几何图片来源:Mark Yeoman,Continuum Blue 公司,英国。

如果我们需要在某个位置上指定一个边界,可以使用网格零件 菜单中的各类分割特征。借助指定大小的圆柱 分割操作,我们可以创建不会被自动检测到的边界,或者将其作为最小 边界分割设置的补充。

对几何进行平滑处理

导入过程中的下一步是创建具有平滑的边和面的几何。导入设置会影响到基于网格构建工作几何结构的难易程度。

截图显示了简化网格的设置。
几何导入设置中的“简化网格”设置。

为了使创建的几何具有更佳的鲁棒性,我们应当始终启用简化网格 复选框。如果导入网格的三角形是各向同性的,并且定义了相对平滑的表面,我们可以减小相对简化容差缺陷清除因子,从而减少需要执行的简化工作。

通过设置更加严格的相对简化容差,我们降低了网格简化算法可以修改网格的程度上限。相对简化容差针对几何整体尺度,而缺陷清除因子 则是相对于局部特征尺寸而言的。二者同时启用,限制了在转换为几何之前,特定位置上的导入网格最大程度上允许进行多少修改。根据个人经验,与 STL 文件相比,NASTRAN® 格式的网格通常更需要降低其中一个或两个因子。

NASTRAN® 格式的曲轴网格。
使用默认设置创建的几何。
相对简化因子和缺陷清除因子相对较小的几何。

左图:NASTRAN® 格式的曲轴网格,它的三角形网格表现出显著的各向同性,可以准确描述几何形状。中间:使用默认设置创建的几何。右:相对简化因子缺陷清除因子相对较小的几何。

另一方面,当网格的三角形表现出各向异性,且表面网格不能精确地描述表面(即网格来自扫描数据)时,我们可以增加相对简化容差缺陷清除因子。虽然或许会降低导入的表面网格的精度,但增加其中一个或两个参数有利于修复更多网格问题。

图片显示了各向同性三角形网格中的两个各向异性三角形网格。
使用默认导入设置创建的几何。
缺陷清除因子增加后的几何。

左:各向同性三角形网格中的两个各向异性三角形网格。中间:使用默认导入设置创建的几何。右:缺陷清除因子增加后的几何。图片来源:Mark Yeoman,Continuum Blue 公司,英国。

如果几何的面像上方中图一样奇怪,原因一般是渲染网格 生成期间,或者在屏幕上生成面的可视化图时发生了问题。这也许说明几何中有一个潜在问题,它会给分割几何、合并几何与其他对象、甚至是网格剖分带来麻烦。在这种情况下,没有网格剖分问题并且增加了缺陷清除因子 的几何可以生成“表现更良好”的面。

最后一步导入设置是勾选从面对象形成实体 的复选框,从而基于表面网格创建实体对象。处理壳结构时无需勾选此复选框。

另一点需要注意的是:网格文件不包含指定长度单位 的信息,因此需要手动在网格零件几何 节点的设置窗口中设定长度单位。

截图显示了如何为网格零件设置正确的长度单位。
几何的长度单位设置。
请务必牢记为 网格零件几何设置正确的 长度单位

分割与合并对象

将网格转换成几何结构后,可以再添加长方体、球体等体素。当针对基于网格创建几何对象执行布尔运算时,也可以引入相交面。

当几何体的表面被其他几何元素内插时,它们并不精确。所以,我们不能假设 STL 球体的表面是完美球形或其他。而且这些对象的面本应该精准匹配,严丝合缝,精确度问题却导致它们难以合并。在这种情况下,我们应该采取的方法是使用形成装配 选项并手动或者自动生成一致对,而不用默认的形成联合体 方法去形成待剖分网格的几何。

在 CAD 软件中保存的 STL 文件

对于使用 CAD 软件进行的设计工作而言,我们建议将其导出为 MCAD 格式,并使用“CAD 导入模块”进行导入。在之前的一篇博客文章中,我们讨论了如何选择 CAD 导入模块,结论是当数据来源于 3D 扫描或者从 COMSOL Multiphysics 导出变形几何或绘图时,STL 格式是最好的选择。

基于网格创建几何的总结

对导入几何设置中的参数进行修改无法一蹴而就,总要经历多次尝试和错误。我们在文章中介绍了一些基于导入的网格创建几何的最佳实践方法,希望当您在建模过程中使用 STL 和 NASTRAN® 文件时,这些技巧和提示会带来帮助。如果希望进一步了解此话题和相关的建模领域,请浏览以下资源:

如您对本文有任何疑问,或者需要工程师帮助您导入网格,请随时与我们联系

NASTRAN 是 NASA 的注册商标。

]]>
//www.denkrieger.com/blogs/improved-functionality-and-tips-for-importing-stl-and-nastran-files/feed/ 7