如何基于高程数据创建几何并模拟不规则形状

2017年 12月 19日

本文是系列博客:如何在 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 文件。

博客分类


评论 (0)

正在加载...
浏览 COMSOL 博客