通过数据滤波提高模型性能

作者 Walter Frei
2021年 3月 17日

您有没有遇到过想要将实验数据作为载荷或边界条件的情况?如果这些数据随空间或时间变化并且包含噪声,那么可能需要非常精细的网格,或者求解器可能需要非常短的时步。实际上,我们通常不希望或不需要这样做。一种可能的解决方案是,对输入数据进行过滤来使其更加平滑。接下来,让我们了解更多详细操作。

使用基于方程的建模方法过滤噪声数据

首先,假设一些输入数据样本,如下图所示。我们先不考虑数据代表什么,并假设横轴代表空间或时间。可以观察到,这些数据包含明显的噪声,并且具有明显的趋势。在模型中使用这些数据之前,我们想降低噪声。

具有三个明显峰值和许多小曲线的简单折线图,显示了具有显着噪声的输入数据样本
包含明显噪声的数据样本。

在这里,我们可以使用一种被称为所亥姆霍兹滤波器(Helmholtz filter)。这种类型的滤波器是最近提出并被证明在拓扑优化领域非常有用。实际上,这个功能是COMSOL 优化模块的内置功能,但也可以手动实现,这也是我们将要介绍的内容。

亥姆霍兹滤波器可以简便地求解偏微分控制方程:

\nabla \cdot \left( – R^2 \nabla u \right) + u = D

式中,D 是输入数据,u 是滤波后的数据。

方程中有一个参数 R,我们称之为滤波器半径。

除了控制方程外,还需要设置边界条件。我们将从齐次诺依曼条件(homogeneous Neumann condition)开始,即在边界处,场梯度为零。原因在后文进行了解释(为了保证过滤后的数据满足能量守恒)。我们将在一维组件中中通过系数形式偏微分方程 接口,使用基于方程的建模方法求解上述控制方程。

首先,我们将实验数据读入插值表格特征,如下面的屏幕截图所示。将外推设置为常数。我们很快会发现,由于亥姆霍兹滤波器中的边界条件,需要对插值函数做扩展,获得“缓冲区”,以使滤波后的数据更符合真实情况。

模型开发器树的屏幕截图,其中插值设置打开以设置外插方法和带有示例数据图形的函数图窗口
软件正在读入实验数据并设置 外推方法。

接下来,我们将 一维组件 引入模型并将 单位制 设置为

然后,在 几何 中创建一个 间隔 特征,如下面的屏幕截图所示。注意为插值函数的扩展数据留出求解域。

COMSOL Multiphysics 中“间隔设置”窗口的屏幕截图,其中“间隔”部分已展开并在表格中显示坐标列表
软件正在定义应用滤波器的域。

针对单个未知数 u,我们现在将 系数形式偏微分方程 接口引入 组件 中,如下面的屏幕截图所示。保持离散化为默认的二次拉格朗日设置,并再次保持所有数据无量纲。

系数形式 PDE 功能设置的屏幕截图,其中展开了域选择、单位和因变量部分

系数形式偏微分方程 特征的设置中,我们定义如下所示的设置。将扩散系数 设置为全局参数 FilterSize 的平方,将 吸收系数 设置为1。将实验数据作为源,并将所有其他项设置为零。

默认的边界条件 零通量 是所需的 齐次诺依曼 条件,在计算域的两端,将滤波后数据的导数固定为零,为滤波器引入末端效应,这就是向几何和数据引入额外填充区域的原因。

也可以使用 狄利克雷 边界条件,在边界处固定 u 的值。此外,还需要手动将网格大小设置为小于实验数据的分辨率。

扩散系数和吸收系数部分展开的系数形式 PDE 设置窗口的屏幕截图
使用基于方程的建模方法定义亥姆霍兹滤波器方程。

使用亥姆霍兹滤波器方程滤波数据

现在,我们可以求解不同过滤尺寸的过滤器并比较结果。如下所述,滤波器大小增大将导致平滑效果增强,随着滤波器半径增大,滤波后的数据逐渐接近原始数据的平均值。滤波器大小非常小时,几乎没有影响。

了解亥姆霍兹滤波器的这个关键特性很重要:只要使用齐次诺伊曼边界条件,它就能 保持能量守恒。这意味着原始数据和滤波后的数据在整个计算域上的积分是相同的。

然而,在两端没有缓冲区的子域上,上述并不完全正确。还需要注意的是,狄利克雷 边界条件不能实现能量守恒,因此应谨慎使用。

显示过滤数据的三个示例的线图,蓝线表示半径为 0.01,红线表示半径为 1,黑线表示半径为 100
使用不同半径的滤波器滤波的数据示例。

现在,我们已经过滤了数据,接下来看看如何在模型中使用这些数据。以一个二维轴对称材料的瞬态加热为例,过滤后的数据将代表在暴露表面施加的热载荷。在我们的模型中,由于热模型将被用于不同的组件中,因此需要引入一种方法将数据从一维组件移动到时间维度,以便在二维轴对称组件中使用。这可以通过 广义拉伸算子 来实现,即将 t x 表达式定义为一个目标映射。这项特征会将来自一维组件的数据映射或拉伸到时间轴上,并使其在整个模型中可用。

常规拉伸操作符的设置窗口的屏幕截图,其中展开了源选择部分
屏幕截图显示了广义拉伸算子的设置。

在二维轴对称组件的热模型中,我们可以施加一个热源,如下面的屏幕截图所示,热载荷为 comp1.genext1(u)[W/m^2]。请注意,我们为载荷添加了单位,因为 u 是无量纲的。

热通量功能设置的屏幕截图,其中展开了边界选择、材料类型和热通量部分
组件1 中定义的滤波数据调用到组件2 中的热模型中。

我们可以将研究分为两个步骤。第一个步骤为求解过滤方程的 稳态 步骤;第二步为求解热问题的 瞬态 步骤。我们将求解更严格的相对容差1e-4,并以求解器采用的所有时步输出结果,如COMSOL 知识库所述。

还需要注意的是,如果数据在没有噪声的情况下具有明显的、剧烈的幅度变化,则应改用事件接口通告求解器

求解不同的滤波半径值,并绘制域内峰值温度随时间的变化图,我们可以看到滤波对传热问题求解的影响。对于这个示例,峰值温度随时间的变化较小。

绘制带有数据过滤的热模型结果的折线图已应用于输入数据

绘制热模型结果的图表,红线表示较大的过滤器半径,较粗的灰线表示较小的过滤器半径,部分图形峰值在单独的窗口中展开
热模型的结果绘图,使用不同的滤波半径滤波后的数据作为热源。

是否使用滤波器的最大的差异在于求解时间不同。求解没有过滤的模型共需要约 700 个自适应时步,而以中等滤波器大小求解模型需要约 130 个时步,求解效率提高了5倍以上!

结语

在今天的博客中,我们展示了如何基于附加组件和滤波方程对输入模型的数据使用亥姆霍兹滤波器。我们不仅可以对一维数据,还可以对二维或三维数据进行过滤,并且可以对任意几何形状和任意密度的输入数据进行处理。特别是在二维或三维中,该方法将优于大多数其他滤波技术,因为它利用了有限元基函数的局部紧凑支撑性,并允许非均匀空间网格离散化,从而获得可以高效求解的稀疏线性矩阵。

数据经过空间过滤的任意表面的四个视图,包括红蓝颜色表中的两个图和两个网格图像,一个粗糙的和一个精细的
通过亥姆霍兹滤波器在任意表面上进行空间过滤。过滤后的数据用较粗的网格就可以很好地求解。

上图示例展示了任意表面上未过滤和过滤后的场分布,直观地呈现了二维平滑处理。请注意,对数据进行过滤意味着使用此数据的模型可以在相对较粗的网格上求解,这为我们带来了额外的计算优势。事实证明,我们甚至可以使用这个亥姆霍兹滤波器来设计一种网格,使其可以很好地满足输入数据的变化,这将是另一个话题了,欢迎继续关注我们的博客!

动手尝试

与点击下方按钮,下载与这些方法相关的文件,尝试自己动手建模:

博客分类


评论 (0)

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