在上一篇博客文章中,我们讨论了创建不规则形状的几何图形的不同方法。本篇博客文章中,我们将通过使用插值函数演示一种非常强大的替代建模方法:利用拟研究对象材料属性的空间变化间接定义不规则形状,来代替创建几何对象。
我无法创建不规则几何怎么办?
通过一些测量技术,我们已经能够获得描述材料代表性体积内的材料属性如何变化的数据。通过可视化数据,可以识别出具有不同属性的几个区域。例如,多孔材料块中的孔和固体区域。但是,如果识别出的区域形成高度不规则的形状而不适合在 COMSOL Multiphysics® 软件中生成几何图形,我们该怎么办?
如果我们可以访问代表性体积坐标中的材料属性(可以轻松绘制其形状),则可以基于此数据使用插值函数为模拟定义材料,从而跳过创建不规则形状的几何对象。
孔隙尺度流动(Pore-Scale Flow)教程模型就是一个很好的示例。在该模型中,我们使用基于图像函数的材料参数在矩形域上求解不可压缩的稳态Brinkman方程。
代表孔隙尺度流动教程中使用的多孔介质的图像函数。颜色范围从 0 到 1,其中蓝色(0)代表液体,红色(1)代表固体。
在标有红色的区域中,将材料参数设置为模拟固体,并在蓝色区域中定义流体的材料参数。
由不规则形状生成的规则形状:人体头部的 RF 模拟
在代表孔隙尺度流动教程中使用的多孔介质的图像函数人体头部模型的博客文章中,我们讨论了如何基于不同横截面上的曲线数据放样。假设我们没有放样头部所需的曲线数据,或在附加的设计模块中无法放样。却有一个文本文件,其材料属性在区域内的坐标中定义。接下来,我们从使用人体头部几何图形开始介绍示例教程。
切面图显示了空气(深蓝色)和人体头部的电导率(S/m)。
人脑的比吸收率(SAR)教程模拟了人体头部如何吸收天线辐射波,以及所吸收的辐射引起的温度上升。
贴片天线位于头部的左侧,并由集总端口激励。本文介绍的教程演示了如何在没有头部几何形状的情况下建立模型,并显示了需要进行哪些修改才能实现。
人脑教程模型中的比吸收率(SAR)。由于天线吸收了辐射,等值面显示了温度升高 dT(K)。
我们的目标是将材料数据导入到插值函数中,因此可以使用这些函数来定义计算域的材料属性,使问题变得简单。如果没有头部的几何形状,我们只需要代表头部和周围的空气的球体以及完美匹配层(PML)区域。此外,还保留了带有附加边缘的较小长方体,该长方体代表贴片天线。
没有头部几何形状的模拟几何。
在 COMSOL Multiphysics® 中使用文本文件创建插值函数
带有材料数据的文本文件可以用不同的方式格式化。在此示例中,我们使用了电子表格 格式。在这样的文本文件中,每个 x,y 和 z 坐标都有一列,后面跟着任意数量的数据列。模型的文本文件中的列包括:
- 空间维数:
x,y,z
- 导热系数:
k(W/(m*K))
- 相对介电常数:
epsr(1)
- 相对磁导率:
mur(1)
- 电导率:
sigma(S/m)
- 血液灌注率:
omega_head (1/s)
如果文本文件包含 NaN 条目,通常建议根据材料属性将它们替换为零,一个较大值或较小值,因为如果函数在计算域中内插到NaN,则会引发求解器错误。我们在文件中为每个数据列创建一个插值 函数,并添加变元的单位以及函数本身,以便在物理场中正确识别这些单位。当所有数据列都具有相同单位时,可以在同一 插值 功能内创建所有函数。
我们希望在模型开发器的全局定义 部分中创建 插值 特征,因为我们不仅需要材料属性函数来定义物理场的材料属性,还希望帮助在头部表面生成更细的网格。为此,我们将在生成网格时使用大小表达式 功能,这将在后文中讨论。
一个插值函数的“设置”窗口。“文件中的位置”框中的数字对应于从 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
等于在 大小表达式 节点中使用的细网格尺寸,并定义了细化网格的区域厚度(下图中以红色突出显示)。
onBnd 变量的切面图,其值在 0 (蓝色)到 1 (红色)之间。使用网格大小表达式在红色显示区域细化网格。
建立更细的网格求解头部形状
在网格序列的自由四面体节点下,添加了大小表达式 特征节点以指定一个表达式,该表达式用于确定要使用的网格大小。请注意,表达式的计算结果应能评估我们需要使用的网格大小(如果使用的是SI单位,则以米为单位)。
使用默认选项Evaluate o:Grid,意味着该表达式在常规网格上求值并在网格点之间进行插值。该网格在模型中不可见,仅用于评估大小表达式。当使用此设置时,必须在全局定义 下定义 表达式中使用的所有变量和函数,这一点很重要。我们还将 每个维度的单元数设置增加为50(默认值为25),以使用更精细的常规评估网格更好地解析区域。使用在列表中评估的任何其他选项可以手动控制在其上进行评估的网格。我们使用的大小表达式 定义为
onBnd * Fine +!onBnd * Coarse
其中,两个参数细化和粗化 分别被定义为 0.007m 和 0.07m。将它们定义为参数时,可以轻松地手动更改,也可以通过参数扫描 研究在参数化扫描中 对其进行更改。教程模型中有一个称为网格图 的图组,显示了用于计算网格的横截面。您可以在以前的博客文章中详细了解有关可视化网格的更多信息。
使用网格 过滤器的网格图,绘制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。
获得恰当结果的两个主要因素是:
- 良好解析的材料参数
- 足够细的网格,尤其是靠近头部表面的网格
材料数据的解析度可能比实际计算网格的解析度要高得多,但是如果材料数据解析的程度不足以匹配计算网格,将无法制作出更精细的计算网格。求解一个精细的计算网格需要更多的内存和更多的时间,而分辨率更高的材料数据通常需要花费更多的时间,因为需要插入更多的数据。
还有另一个错误来源:我们正在求解空气中的生物热传递,其导热系数小且非零。但是,这可能对结果的影响不太大。错误的主要来源是材料数据的分辨率和计算网格。
结语
在本篇博客文章中,我们演示了如何使用文本文件中定义的坐标依赖的材料属性来建立模型,以及如何调整网格大小以准确地解析两种材料之间的边界。另外,我们还讨论了错误产生的原因以及如何提高结果的准确性。在无法生成高度不规则形状对象的几何图形的建模场景中,这种方法非常有用。
后续操作
单击下面的按钮,尝试模拟本博文中介绍的教程模型。在 COMSOL 案例库中,您可以登录COMSOL Access帐户并下载 MPH 文件。
- 查看以下资源,以获取有关对不规则形状和使用插值函数进行建模的更多信息:
评论 (0)