如何在声学仿真中根据频带自动划分网格

2019年 6月 26日

想象一下一架优雅的三角钢琴的弧形琴盖。曲线对应于琴弦的长度,琴弦的长度对应于音高的感知。这种视觉感知体现了声学的一个重要元素:我们对音调的感知是基于对数的。这意味着声学现象涉及到较大的频率范围。因而,在对声学问题进行建模时,我们需要对这较大的波长范围进行网格划分。那怎么操作呢?

自由场有限元波动问题简介

需要计算较大的频率范围,这意味着需要通过网格来解析较大的波长范围。为了有效地对大范围频率进行网格划分,在 COMSOL Multiphysics® 软件中使用有限元法(FEM)接口时,我们可以通过对给定频率范围重新划分网格来优化其单元大小。

有限元法在 COMSOL Multiphysics 的大多数接口中都能实现,包括压力声学,频域 压力声学,瞬态 接口。“声学模块”中的其他接口为针对特定目的进行快速有效的计算,而引入边界元法(BEM)、射线追踪或 dG-FEM(时间显式)。当使用压力声学 接口时,有限元法采用网格来离散几何结构,并在这些节点处求解声波方程。通过这些节点数据间的插值可以得到完整的连续解。
COMSOL Multiphysics 中模拟的汽车消声器图片。
带有多孔衬里的汽车消声器,使用 COMSOL® 软件中的压力声学功能进行建模。

在对有限元模型进行网格划分时,我们需要获得具有与几何结构良好近似的网格,并包含物理细节。使用压力声学 接口时,我们总是需要解析声波。质量好的网格可以解析模型的几何和物理场特性,但质量极好的优质网格可以精确地解决问题,并且使用尽可能少的网格单元。在本篇博客文章中,我们将探讨如何用最少的网格点对自由场/开放式问题进行网格划分。

网格单元由节点组成。对于线性网格单元,节点位于顶点。二阶多项式插值是 COMSOL Multiphysics 中波动方程的默认形函数。二阶(或二次)单元在单元长度方向有一个额外的节点,可以精确地解析波。对于自由场的波动问题,我们需要每个波长大约有 10 或 12 个节点来解析。因此,对于使用二次单元的基于波的建模,我们每个波长需要 5 或 6 个二阶单元(hmax = \lambda_0/5)。对于短波长(较高频率),单元大小需要比频率较低的情况小。

音频应用涉及人类感知,频率范围为 20Hz 至 20kHz。在室温下的空气中,音频问题的波长范围从大约 17 m 到 17mm。如果我们用一种网格计算整个人类听觉频率范围,我们需要解析对应于 20 kHz 的波长。在高频端,这导致最大单元大小,或空间分辨率,为(17mm / 5 =)3.2mm。对最高频率的网格进行解析会导致用于低频预测的网格过于密集。在 20 Hz 时,波长为 17 m,每波长有 5360 个节点,远远超过所需的 10 或 12 个节点。每个节点都对应于计算机的内存分配。虽然这种密集网格方法从精确度的角度来看是很好的,但是过于密集的网格占用了计算资源,并因此需要较长的时间进行计算。

COMSOL Multiphysics® 中的高效网格

单倍频程网格的设置

为了避免低效的网格划分方法,我们可以将问题拆分成多个较小的频带;最初是一个倍频程,其中每个频带的网格根据其频率上限来解析。本例中,中心频率 f_{C,n} 是以指定频率 f_0 为参考的,
f_{C,n} = 2^n \times f_0
其中 是来自参考频率的倍频带数(正 为高音调倍频程,负 为低音调倍频程)。

频带上限和下限由中心频带频率定义
f_L = 2^{-\frac
{1}{2}} \times f_{C,n}
,

f_U = 2^{\frac{1}
{2}} \times f_{C,n}

请注意 f_U 是 f_L 的两倍(因此高一个倍频程)。

在模型参数中定义倍频程。

我们可以在频域研究中使用这些参数,使用 range() 函数定义每个频带内点的对数分布
10^{\textrm
{range}
(\log_{10}(f_L), df_\textrm{log}, \log_{10}(f_U) – df)}
,
对数频率间隔 df_\textrm{log} = (\log_{10}(f_U)-\log_{10}(f_L))/(N-1) 由频率范围除以频率数 N 来设置
声学仿真中频域研究设置窗口的屏幕截图。
设置每个倍频带的求解频率。

然后,最大网格单元大小(传统上给定变量名 hmax)取自给定频带的上限
hmax = 343[m/s]/f_U/5.

请注意,如果你不知道声速,可以使用 comp1.mat1.def.cs(23[degC]) 来获取组件 1 中定义的(列表中)第一种材料在 23°C 时的声速。如果你使用内置材料 Air,声速来自理想气体定律,因此必需输入流体温度。
显示定制网格序列设置的屏幕截图。
参数 hmax 应用于 最大单元大小的定制网格序列。

大小 节点中的最大单元大小 将应用于网格上。如果需要解析较小的几何细节,单元可以小于此约束条件,如下图所示。最小单元由最小单元大小 设置控制。曲率因子 狭窄区域分辨率 设置也是重要的网格设置。
声学仿真两个频带的网格单元质量的并排图。
两个倍频带的网格单元质量俯视图。

多个倍频带的设置

如果 COMSOL Multiphysics 模型设置如上所述,它将产生一个倍频程的频率。然而,我们的音频研究需要多达 10 个倍频程。
频率范围内参数化扫描设置的屏幕截图。
执行参数化扫描,使得每个值都对应一个倍频程,并且频率上限和下限相应进行改变。

为了在 COMSOL Multiphysics 中实现参数化扫描,将参数化扫描 研究步骤添加到研究中以改变频带。使用参数的好处是,当参数化扫描变量 发生变化时,所有频带限制都会自动改变。参数 是参数化扫描的自然选择,这是因为 n 的每个值对应于一个频带。以这种方式进行设置意味着原始频率现在是参考频率,必须适当选择。

对于下面显示的结果,使用最高频率网格在相同范围内计算相同的频率。根据倍频带数分割网格的研究需要 32 秒,而单网格方法花费 79 秒,明显节省了时间和计算资源。
显示不同频率和网格的瞬时压力的并排图。
不同频率和网格的瞬时压力的底部视图。

倍频带 节点类型用于计算所需的响应。确保线标记位于数据点中。如果要获得一条连续的线,请将 x 轴数据 更改为表达式,然后输入频率变量 freq。
倍频带仿真的数据点图。
绘制连续线。
倍频带绘图类型的设置窗口的屏幕截图。
选择 点图并确保绘图设置如上所示。

第 n 个倍频带的设置

前面的讨论提出了倍频带问题。但是,你可以使用一般形式
f_{C,n} = 2^\frac{n}
{b}
\times f_0

f_L = 2^{-\frac
{1}{2b}} \times f_{C,n}
,

f_U = 2^{\frac{1}
{2b}} \times f_{C,n}
,
来实现以分数形式表示的倍频带。在上面的设置中,对于第三个倍频带,b = 3,对于第六个倍频带,b = 6。频带越窄,网格划分序列运行的次数越多,因此需要达到平衡。

在任意倍频带中设置通用网格划分过程的参数可在频带的网格重新划分模型中找到。可以将必要的参数保存在 .txt 文件中,在建立新模型时加载它们,从而避免每次输入。

声学仿真中频带网格划分的讨论和注意事项

本文中介绍的方法采用规范几何结构来清楚地说明优化网格的过程。因此,网格划分花费的时间相对较少。对于真实的几何形状,网格划分可能需要更长时间,优势可能不太明显。在这种情况下,你应该简化几何结构或使用虚拟操作来减少任何物理上不相关的几何结构。

对于某些问题,流体的温度或密度可能在计算域内发生显著变化。如果出现这种情况,声速会发生变化,并且必须包含在模型中。网格必须足够密集才能反映这一点。

此讨论与射线追踪压力声学边界元 声学扩散 接口无关。本文中的信息可应用于气动声学 热粘性声学 接口或基于 dG-FEM 的超声波 接口的自由场问题。流动的对流效应改变了波长,应该在源的上游或下游使用复杂的网格来体现这一点。线性纳维-斯托克斯 线性欧拉 接口具有默认的线性插值(单元),因此每个波长需要 10 或 12 个单元。热粘性声学 接口设计用于解析声学边界层。该层的厚度也与频率有关,可以使用与这里所讨论的类似的方法用于该层的高效网格划分和分辨率。

最后,本文中的讨论明确假设波长是已知的。这种假设通常适用于自由场建模,但是对于有界共振问题,总声场取决于边界条件值和边界位置。这意味着压力振幅可以具有明显短于自由场波长的类似波长的形状。要获得精确的解,必须执行网格收敛研究。

结论

这篇博客文章证明,根据频带重新划分网格可以节省大量时间。在 COMSOL Multiphysics 中,这是通过参数化上限和下限频带来实现的。这里演示的方法适用于可实现有限元并具有二次插值(单元)的接口。

后续操作

亲自尝试操作:单击下面的按钮访问本文讨论的模型的 MPH 文件。请注意,你必须登录 COMSOL Access 帐户并拥有有效的软件许可证才能下载该文件。

扩展阅读

阅读 COMSOL 博客了解更多关于如何增强网格划分过程的信息:


评论 (0)

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