锅炉知识
使用径向基函数进行表面插值
2023-02-28  浏览:1

你有没有遇到过这样一种情况:在笛卡尔平面内,有一组非均匀分布的点,用于对表面高度进行采样,例如地图等高线上的点或表示某些材料属性数据的数据点?你可能还想在这些点之间重建或插值一个连续的光滑表面。你可以使用 COMSOL Multiphysics 的核心功能,即径向基函数来构建这样的表面。接下来,让我们来看看如何操作。

径向基函数简介

一个简单的径向基函数(RBF) 是指根据距某点的距离(或半径)定义的任意一个函数:

(1)

式中,w 是径向基函数的权重; 是点的坐标或中心 ; r是从 XY 平面内的任何其他点到此中心的距离。

径向基函数本身可以是许多不同类型的函数的一种。多谐波样条系列通常用于插值,特别是薄板样条函数。薄板样条基函数为:

(2) 仅仅一个径向基函数并不是那么吸引人,但我们可以在有限数量的具有不同权重的不同中心上进行求和,并选择性地添加一个具有权重的线性多项式项 从而得到函数:

(3)

如果有足够的中心点,那么一组基函数的总和可以用来表示非常复杂的单值函数。当使用薄板样条基函数时,还有一个额外的优点,就是这个功能在任何地方都是平滑的,并且可以无限微分。

现在让我们来看看如何使用这些径向基函数插值光滑表面。如果我们获得一组有限的中心点位置 ,以及它们对应的已知高度 ,那么可以写一个线性方程组:

(4)

其中,系统矩阵项 是各中心点之间计算的径向基函数。

当使用薄板样条基函数时,几乎所有的非对角线项都是非零的,因此这个系统矩阵非常密集。线性系统可以求解所有权重,我们可以计算 xy 平面中任何其他点的加权径向基函数之和,从而得到平滑插值函数。现在,让我们看看如何使用 COMSOL Multiphysics 的核心功能计算这些权重并将插值函数可视化。

使用 COMSOL Multiphysics 中的径向基函数进行表面插值

我们从建立一个包含三维组件的模型开始,该模型使用无量纲单位系统,可以在 组件 1 设置中选择。如果数据代表材料属性而不是几何形状,那么无量纲单位系统使用起来更简单。

模型中的几何图形由两个特征组成。首先, 功能用于定义点集(可以从文本文件复制坐标列表)。累积选择 用于定义所有这些点的命名选择,如下面的屏幕截图所示。此外,还有一个 功能,它的尺寸略大于数据点的范围,并被定位为包围所有数据点。

显示要插值的数据点的定义和累积选择定义的屏幕截图。


数据点和边界块。

定义几何图形后,我们在刚刚创建的点上定义一个积分组件耦合 算子。由于积分是在一组点上完成的,因此这个运算符等效于获取在一组点上计算的表达式的总和。接下来,我们定义三个变量,如下面的屏幕截图所示。

首先,变量 r = eps+sqrt((dest(x)-x)^2+(dest(y)-y)^2) 将用于计算所有中心之间的距离。请注意运算符 dest() 的用法,这会强制在目标点而不是源点上计算运算符中的表达式。添加一个非常小的非零项(eps 是机器精度),以使这个表达式永远不会精确地为零。

接下来,变量 phi = r^2*log(r) 是方程(2),薄板样条基函数。请注意,当半径为零,此函数收敛为零,但由于对数函数,我们确实需要使半径稍微不为零,以便可以在零处计算基函数。还值得一提的是,这个函数可以更改为任何其他所需的基函数。

最后,定义 RBF = intop1(w*phi)+a0+a1*x+a2*y 是方程(3),即插值表面本身,其权重尚未计算。请记住,积分组件耦合算子用于获取算子中表达式在这些点上的总和。

显示变量定义的屏幕截图。

现在几何已经设置好了,所有变量都定义了,我们已经准备好求解径向基函数和多项式项的权重了。这是通过点常微分微分代数方程 接口完成的,该接口在我们要插值的点上定义,如下面的屏幕截图所示。我们可以将所有单位设置为无量纲,因为点位置也是无量纲的。这些设置定义了一组未知数 w,每个点将具有不同的值。

在这个物理场接口中,只需要修改两个功能。首先,需要调整分布式常微分方程 的设置,如下图所示。源项 定义为 z-RBF。由于求解稳态研究时方程中的所有其他项均为零,因此该项表示在所有选定点处 RBF=z。使用这个功能,我们可以定义等式(4) 的第 1 行到第 N 行。

每个点的源项设置。

其次,我们需要定义等式(4)的最后三行。这是通过全局方程 功能完成的,如下面的屏幕截图所示。这三个方程求解权重 a0a1a2。同样,积分耦合运算符用于获取所有选定点的表达式之和。有了这两个功能,问题就完全定义了,几乎可以解决。

显示用于多项式权重的全局方程的屏幕截图。

求解这个模型要求我们在所有点上都有一个网格,因此我们在边界框上应用了自由四面体网格,然后使用稳态求解器求解。问题求解后,我们就可以绘制插值函数,RBF 变量,如下所示。

穿过所有数据点的平滑且可微分的插值表面。

将功能打包到一个仿真 App 中

如果你想直接使用这个功能,而不在自己的模型中设置所有这些功能,也欢迎你从 COMSOL 案例库中下载我们的演示仿真 App,该 App 从一个用逗号分隔的文件中获取 xyz 数据点并计算插值表面。使用此演示 App 最多可插值 5000 个数据点。

除了计算此表面之外,该 App 还可以写出描述表面的完整分析函数,还可以写出该表面本身的 COMSOL 格式 的CAD 文件,所有这些都是 COMSOL Multiphysics 的核心功能。CAD 数据是 NURBS 表面,因此仅近似表示函数,但对于相当光滑的表面,精度非常高。该仿真 App 用户界面的屏幕截图如下所示。

计算了插值函数并写出函数和 CAD 表面的仿真 App 屏幕截图。

更多资源

如果你有兴趣了解有关模型开发器 和 COMSOL Server™ 的更多信息(它们可用于开发和运行此仿真 App),请查看以下资源。

  • 阅读 App 开发器简介手册中的完整说明摘要
  • 观看视频,了解如何使用 App 开发期和 COMSOL Server™
  • 阅读博客文章,了解如何在各种应用中使用仿真 App

你想使用 COMSOL Multiphysics 做什么?您对径向基函数的功能还有其他疑问吗?欢迎联系我们寻求帮助。