最近做电磁超声仿真,一个典型的组合让我折腾了好几天:1mm 厚铝板,250kHz 激励,电磁超声换能器(EMAT)发射,200mm 外压电片接收。这种构型在实际检测里很常见——EMAT 做发射端不接触工件、不需要耦合剂,压电做接收端灵敏度又比 EMAT 高出一大截,两头的好处都占了。但真要在 COMSOL 里把这整条链路跑通,从电磁场到洛伦兹力、从结构振动到声波传播、再从压电效应换回电压信号,每一环都有藏在暗处的坑。这篇文章把我这次建模的完整思路、参数设置、调试记录全写出来,给准备做类似板波仿真或者想搞 EMAT+压电混合检测方案的朋友一个可复现的参考。
文章内容不算短,但每个参数我都会说明白为什么这么取,因为光知道“填什么”没用,得知道“为什么填这个值”,后面遇到问题才能自己判断该动哪里。
1. 先把物理链路拆开看
1.1 EMAT 激励:洛伦兹力是怎么压出超声的
EMAT 的原理说穿了不复杂,但一进入仿真就容易绕晕。它分三层:永磁体提供偏置磁场、线圈通高频电流、被测金属表面感应出涡流。这三层不是独立工作的,最终是涡流在偏置磁场中受到洛伦兹力,以这个力作为声源去激发超声波。
[ \mathbf{F} = \mathbf{J} \times \mathbf{B}_0 ]
这里的 (\mathbf{J}) 是铝板近表面感应出的涡流密度,(\mathbf{B}_0) 是永磁体提供的偏置磁场。力的大小和方向由两者的叉积决定。如果磁场垂直于板面、涡流沿板面流动,那么洛伦兹力就落在板面内,主要激发对称的 S0 板波;如果磁场含切向分量,力就会出现法向分量,反对称的 A0 模式才会被更有效地激励出来。这个特点在后面判读结果时非常重要,也是不少新手一上来看到“怎么只有 S0 没有 A0”就懵圈的根本原因。
在 COMSOL 里,涡流的产生要靠磁场接口求解得到的感应电流,感应电流会受线圈电流、线圈与板面的间距、以及铝板的电导率影响。现实中线圈提离距离通常在 0.5~2mm,我仿真里取了 1mm。这个距离对灵敏度影响很大,提升越大,涡流越小,等效激励力越小。
1.2 接收端为什么用压电片而不是 EMAT
纯 EMAT 做接收不是不行,但它的本质是把声振动转换为微弱的感应电压,转换效率低,尤其在高频下信噪比往往不好看。压电片走的是正压电效应,应力作用在晶体上直接产生电荷,转换效率比电磁感应高得多,而且结构简单、信号强度大。
这个构型的工程意义在于:发射端保留 EMAT 的非接触优势,接收端用压电片换取更高的灵敏度。尤其对于铝板这种非铁磁材料,EMAT 接收时洛伦兹机理信号本来就弱,压电接收几乎是必然选择。
压电接收在仿真里也有代价——压电材料参数多、极化方向要定、电极边界要设,一个参数写错就可能出现电压波形高频振荡、幅值离谱等问题。后面我会列出完整的材料参数矩阵。
1.3 1mm 铝板 + 250kHz,你激发的到底是什么波
很多人以为超声波就是“一个声束直直地穿过去”,但薄板里传播的是兰姆波(Lamb Wave),它不是一个简单的体波,而是横波和纵波在上下两个自由表面反复反射、干涉叠加之后形成的板波。1mm 厚的铝板,在 250kHz 激励下,一个重要参数是频厚积:
[ f d = 250\mathrm{kHz} \times 1\mathrm{mm} = 250 \ \mathrm{kHz\cdot mm} ]
这个频厚积下板内主要传播两个模式:对称模式的 S0 和反对称模式的 A0。S0 的群速度大约在 5.3 km/s,A0 接近瑞利波速,约 2.9 km/s。也就是说,从发射端到接收端,S0 会先到,A0 后到。两者在时域波形上如果能分开,我们就可以分别提取到达时间,用于速度标定和缺陷定位。
还要注意频散问题。A0 在这个频厚积范围内频散比较明显,即群速度随频率变化,窄带脉冲传播一段距离后波形会展宽。250kHz、5 周期的汉宁窗脉冲,频谱并不是一根线,而是约 150~350kHz 的窄带包络,传播 200mm 之后 A0 波包形态和发射时会有明显差异。
1.4 200mm 传播距离带来了什么
200mm 对压电超声来说是个很短的距离,但对仿真来说是“刚刚够看”的传播长度。距离太短,S0 和 A0 波群重叠在一起分不开;距离太长,衰减和频散会把 A0 波包拉得很宽,而且模型尺寸变大后网格数量激增。
仿真里我实际建的铝板长度是 300mm,激励端和接收端之间留 200mm 净距,两端再各留 50mm 用于吸收边界或完美匹配层(PML)。这样设计的好处是:要看的 S0、A0 波包能从时间上分开,且板端的反射不会太早回来混淆信号。200mm 的距离下,S0 到达时间约 37.7μs,A0 约 69μs,而板端的反射波回来至少还要再多传播几十毫米,时间窗口上能做到基本隔离。
2. 几何、材料与激励参数如何定
2.1 2D 模型几何搭建
二维模型足够把主要物理过程看清楚,又能显著降低计算量。几何从上到下大致是:永磁体(可用简化域表示)、线圈区域、1mm 提离空气层、铝板。接收端再放一块压电片粘在铝板上表面。
具体尺寸:
- 铝板:300mm × 1mm
- 永磁体:10mm × 5mm,位于线圈上方中央,磁化方向沿厚度方向(垂直于板面)
- 线圈:等效为 10 匝矩形截面铜导体,截面 0.2mm × 0.2mm,整体位于永磁体下方
- 压电片:20mm × 1mm,贴于铝板接收端上表面,中心离激励线圈中心 200mm
- 空气域:覆盖线圈和永磁体区域,宽度约 60mm,高度约 10mm
压电片尺寸不是随便拍的。厚度取 1mm 是与铝板等厚,便于在二维网格里统一处理,宽度 20mm 是为了保证接收到的声波通量足够大。实际如果要模拟工程中更小的点式探头,宽度可以缩小,但那时接收信号会弱很多,波形形态也会有差异。
2.2 关键材料参数:直接抄作业
材料参数是仿真中最容易出错的地方。下面是我这次实际填入的参数,单位已经统一成 COMSOL 要求的国际单位制。
铝板参数:
| 参数 | 值 |
|---|---|
| 密度 | 2700 kg/m³ |
| 杨氏模量 | 70 GPa |
| 泊松比 | 0.33 |
| 电导率 | 3.5×10⁷ S/m |
PZT-5H 压电材料参数,COMSOL 的压电器件接口需要填入的是刚度矩阵 (c_{E})、压电应力常数矩阵 (e) 和相对介电常数矩阵 (\varepsilon_{rS}):
[ c_{E} = \begin{bmatrix} 127.2 & 80.2 & 84.7 & 0 & 0 & 0 \ 80.2 & 127.2 & 84.7 & 0 & 0 & 0 \ 84.7 & 84.7 & 117.4 & 0 & 0 & 0 \ 0 & 0 & 0 & 23.0 & 0 & 0 \ 0 & 0 & 0 & 0 & 23.0 & 0 \ 0 & 0 & 0 & 0 & 0 & 22.8 \end{bmatrix} \times 10^{9} \ \mathrm{Pa} ]
[ e = \begin{bmatrix} 0 & 0 & -6.5 \ 0 & 0 & -6.5 \ 0 & 0 & 23.3 \ 0 & 0 & 0 \ 0 & 17.4 & 0 \ 17.4 & 0 & 0 \end{bmatrix} \ \mathrm{C/m^2} ]
[ \varepsilon_{rS} = \begin{bmatrix} 1700 & 0 & 0 \ 0 & 1700 & 0 \ 0 & 0 & 1470 \end{bmatrix} ]
这几组数据摔过不少跟头才记住:刚度矩阵单位是 Pa 而不是 GPa,压电矩阵的行/列顺序必须严格对应 COMSOL 的应力-应变排列约定,相对介电常数矩阵还要乘以真空介电常数 (8.854\times10^{-12}) 才填入。
永磁体按 N42 钕铁硼近似,剩磁 1.3T,磁化方向沿 y 轴负方向。
2.3 激励信号:为什么非要用汉宁窗
EMAT 的线圈激励不适合用连续正弦波。连续波在板内会产生驻波干涉,波形根本没法解释。我使用的是中心频率 250kHz、5 周期汉宁窗调制的突发脉冲:
[ I(t) = A \sin(2\pi f t) \cdot \frac{1}{2}\left(1 - \cos\left(\frac{2\pi f t}{5}\right)\right), \quad 0 \le t \le \frac{5}{f} ]
式中 (A) 取 1A 作为归一化幅值。选择 5 周期是经验平衡:周期数太少,频带太宽,A0 频散后波形展宽严重,模式不好认;周期数太多,时间窗口拉长,S0 和 A0 可能重叠。5 周期的窄带脉冲在 200mm 距离上两个模式基本能分开,这是试出来的。
在 COMSOL 里我把它定义成一个解析函数或者直接在瞬态激励表达式中写成:
sin(2*pi*250[kHz]*t)*(0.5-0.5*cos(2*pi*250[kHz]*t/5))*(t>=0)*(t<=5/(250[kHz]))加载到线圈域时乘以各自线圈匝数的方向折算成电流密度。这个表达式要特别注意单位——如果线圈截面很小,同样幅值的电流在截面上产生的电流密度会非常大,容易导致数值溢出。
2.4 偏置磁场:不是随便扔个磁体就行
永磁体在铝板表面产生的偏置磁场强度直接决定洛伦兹力大小,方向决定激发的模式。简单一算,垂直板面的表面磁场通常只有 0.2~0.5T,离磁体越远越小。
如果你的目标主要是 A0 模式,就需要想办法让洛伦兹力出现法向分量。这可以通过把永磁体改为水平磁化方向、或采用马蹄形磁路设计来实现。做仿真的时候最简单的方法是在磁场接口里先算静磁场,再把永磁体固定好,磁化方向设成沿 x 轴方向,这样在铝板表面会产生水平偏置磁场,与板面内的感应涡流叉积后得到法向力分量。
我这次偏置磁场用的是简化方法——只在“磁场”接口里定义背景磁场 (B_0 = (0.3, 0, 0)) T,相当于理想化的均匀水平偏置磁场。这样省去了永磁体和空气域建模,A0 模式的激励效果反而更理想、更可控。如果想更贴近真实 EMAT 结构,再换成显式永磁体也不迟。
3. 物理场耦合、网格与求解设置
3.1 COMSOL 里三个接口怎么搭
模型涉及电磁场、结构振动、压电效应,至少需要三个物理场接口:
- 磁场(mf):负责求解线圈电流产生的交变磁场和铝板中的感应涡流
- 固体力学(solid):负责板中弹性波传播
- 压电器件(pzd):负责接收端的压电效应
域分配是关键。磁场接口覆盖空气、线圈和铝板区域;固体力学只激活铝板和压电片;压电器件激活压电片本身。注意不要让固体力学和压电器件在同一个域上同时激活,否则自由度会重复,求解器会报错。
这里顺便提一句为什么接收端不直接用固体力学接口加“阻尼”之类的东西模拟压电——压电片的作用机制是应变产生电场,而非简单的吸波材料,必须用完整的压电本构关系才能模拟出输出电压。用普通固体力学域去模拟压电片,信号形态完全不同。
3.2 多物理场耦合:洛伦兹力和压电效应怎么接
两个关键耦合分别是:
- 洛伦兹力:磁场接口算出来的感应电流密度 (\mathbf{J}) 和偏置磁场 (\mathbf{B}_0) 叉积,作为体积力加载到固体力学的铝板域上。可以在 COMSOL 的多物理场节点里添加“洛伦兹力”耦合,或者手动在固体力学里添加体积力项:
F_x = (mf.Jy * B0_z - mf.Jz * B0_y) F_y = (mf.Jz * B0_x - mf.Jx * B0_z)- 压电效应:压电器件接口自行处理正压电效应,不需要手动加耦合。只要在压电片上、下电极分别设置“终端”和“接地”边界条件,模型就会把表面累积电荷转换为电压输出。
我实际用的是终端边界条件,并给它并联了一个 1MΩ 的负载电阻,模拟示波器探头的高阻抗输入。这个负载电阻对波形影响很大,太小的话会把电压拉低、波形畸变,我试过并联 50Ω 负载,接收信号几乎被衰减到看不见。
3.3 网格策略:先看趋肤深度,再看声波波长
网格策略是这个模型成败的关键,优先级顺序是:趋肤深度 > 声波波长分辨率 > 几何过渡。
针对 250kHz 在铝中的趋肤深度:
[ \delta = \sqrt{\frac{2}{\omega \mu \sigma}} \approx 0.17\ \mathrm{mm} ]
铝板厚度只有 1mm,而涡流集中在表面 0.17mm 范围内,如果网格直接均匀铺,表面附近的涡流场根本算不准,洛伦兹力激励强度会严重失真。我用了边界层网格:铝板上下表面各加 6 层边界层,第一层厚度 0.02mm,增长因子 1.3,总厚度大约覆盖 0.2mm。
声波波长方面,A0 模式在 250kHz 下相速度较低,约 1.7km/s,对应波长约 6.8mm;S0 相速度约 5.4km/s,波长约 21.6mm。取最不利的 A0 波长,每波长至少 10 个单元,所以传播方向的网格尺寸取 0.5mm。整个铝板 300mm 长度方向网格数约 600,厚度方向用边界层加内部过渡网格约 10~12 层,总网格规模并不大,计算量可以接受。
3.4 瞬态求解器:时间步不是越小越好
瞬态求解采用 BDF 或广义 alpha 方法,COMSOL 会自动控制步长,但我还是手动限制了最大步长。原因很简单:自动步长在电感和声场切换时偶尔会跳得过大,导致波形出现非物理振荡。
最大步长取 0.05μs,对应的采样频率 20MHz,相对于 250kHz 信号一个周期有 80 个采样点,足够描述波包细节。总的仿真时长取 120μs,覆盖 A0 到达(69μs)之后还有充足的富余量观察反射信号和可能的模式转换。
![注意] 如果只关心前两个波包,可以设置一个事件触发出现在 100μs 时终止求解,能省下至少 30% 的计算时间。
我这套模型用 8 核并行计算,总网格约 2.5 万自由度,求解 2400 步大概跑了 4 个多小时。正常情况下不会太夸张,如果出现半小时都算不完的情况,先检查是不是网格尺寸填错了几位数。
4. 结果分析与模式识别
4.1 激励端到底激发了什么
仿真跑完后,第一步不是在接收端看波形,而是先在激励位置附近观察位移快照。把铝板厚度方向的位移分量单独显示,能直观分辨是 S0 还是 A0:S0 的厚度方向位移在板厚度中线是零,上下表面反相;A0 则在板厚度中线位移最大,上下表面同相。
我把位移快照做成了沿传播方向的瞬态序列,看到铝板长度方向上明显有两个波包以不同速度向前传播。前面快的那个波包,厚度位移分布接近中线为零,判断是 S0;后面慢的那个,整个板子像梁一样上下弯曲,显然是 A0。这说明偏置磁场设置产生的法向力分量确实激发出了 A0 模式,物理机制是对的。
4.2 接收端电压波形解读
压电片接收到的电压信号是本文最核心的输出。上、下电极间电压随时间变化的曲线,在前 120μs 内能看到两个明显的波包:
- 第一个波包峰值约在 38μs,对应 S0 模式,幅值较小
- 第二个波包峰值约在 68μs,对应 A0 模式,幅值明显更大
注意压电片输出的不是光滑脉冲,而是叠加了高频成分的振荡波形。这个高频成分一部分来自压电片自身厚度方向的谐振(1mm 厚 PZT 厚度谐振通常在 1~2MHz),另一部分是 A0 波包的频散拖尾。看信号时盯着低频包络,不要被高频毛刺干扰。可以用 COMSOL 后处理的“带通滤波”或者直接在导出数据后用 Python 做包络提取。
4.3 用群速度验证仿真结果
200mm 传播距离正好用来做群速度标定。提取波包峰值的到达时间:
[ V_{S0} = \frac{200\mathrm{mm}}{38\mu\mathrm{s}} \approx 5.26 \ \mathrm{km/s} ]
[ V_{A0} = \frac{200\mathrm{mm}}{68\mu\mathrm{s}} \approx 2.94 \ \mathrm{km/s} ]
这两个值和理论频散曲线查出来的 250kHz·mm 处的群速度非常接近。到这里,仿真链路才算真正验证闭环了。
做这个验证的目的不是为了算一个“正确”的群速度,而是为了确认:你看到的的确是你想看的波,而不是边界反射、电磁串扰或者其他伪信号。如果算出来的速度和理论差超过 5%,基本就是网格太粗或时间步太长导致波速数值失真。
4.4 波场云图和传播路径可视化
除了接收端波形,我还把整个传播过程做成了位移云图动画。从动画里能看到几个很有意思的细节:A0 的波长明显比 S0 短,传播速度慢但能量更集中;波包在传播过程中逐渐拉宽,这是频散的直接表现;板端处出现了明显的反射波,在 120μs 的时刻,反射波还没有到达接收端区域,说明两端各留的 50mm 缓冲距离刚好够用。
如果想要更精确地去除边界反射,可以在铝板两端设置 PML。COMSOL 的 PML 设置需要把 PML 区域的材料改成“外部 PML”并在坐标拉伸方向选择“沿 x 方向”,否则吸收效果很差,反射波照样回来。我这次因为时间窗口足够,没有用 PML,但如果是薄板缺陷检测模拟,PML 几乎是必备配置。
5. 调试记录与避坑指南
5.1 常见问题速查表
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 接收端完全没信号 | 偏置磁场未设置或方向错误 | 检查 ( \mathbf{B}_0 ) 是否参与洛伦兹力构建 |
| 只有 S0,A0 很弱 | 偏置磁场垂直板面,洛伦兹力为面内力 | 改用水平偏置磁场,或显式建模马蹄形磁路 |
| 压电片电压波形炸开 | 负载电阻太小或没有负载电阻 | 增大并联电阻到 1MΩ 量级 |
| 波形尾部持续高频振荡 | 网格太粗,A0 波长分辨率不足 | 传播方向网格降到 0.5mm 以下 |
| 仿真计算时间异常长 | 空气域网格过密或没有用拖尾手法 | 空气域只在线圈周围局部加密,外部用粗网格 |
| S0 到达时间偏早 | 网格太粗导致数值波速偏大 | 加密网格并检查时间步上限 |
| 100μs 后波形混乱 | 板端反射波回来叠加 | 加长板端缓冲区域或设置 PML |
5.2 我踩过的三个坑
第一个坑是偏置磁场方向。第一次跑通时我只想快速看效果,直接用 y 方向垂直磁场,结果接收端波形里 S0 又大又干净,A0 几乎看不见。我还以为是网格问题,花了一天加密网格,结果毫无变化。后来把磁场改成水平方向,A0 立刻冒出来了。这说明激励模式选择的第一决定因素是磁场方向,不是网格精度。
第二个坑是压电片厚度谐振对波形的污染。1mm 厚 PZT 的厚度谐振频率偏高,仿真波形中会出现一个幅度不小的高频尾巴,差点被我误认为是新的波模式。处理方式是在后处理时做低通滤波或者只提取零点到第二个波包之间的信号段。仿真和实际实验一样,接收信号永远比“理论波形”脏。
第三个坑是 PML 的吸收参数。我一度在铝板两端加了 PML,却发现反射比不加还严重,后来检查发现是 PML 坐标拉伸方向选错了。这个细节在 COMSOL 文档里写得不算显眼,但影响是致命的。如果只是验证传播速度,不加 PML,单纯加长模型更省心。
5.3 参数化扫描:找到最优配置
做完基础案例后,我又做了两组参数化扫描。第一组扫描线圈提离距离,从 0.5mm 到 2mm,看接收端 A0 幅值变化。结果符合预期:提离越近,信号越强,但 0.5mm 时电磁耦合太强,接收信号前段出现较大的电磁串扰成分,实际工程中未必是好事。
第二组扫描压电片宽度,从 5mm 到 30mm。压电片越宽,接收到声波通量越大,电压幅值越高;但宽度增大后,压电片自身的横向谐振模式也进来了,波形在 A0 之后出现一串额外的振荡。工程上选压电片尺寸时不是越大越好,需要在灵敏度和波形纯净度之间取舍。
这两组扫描在实际工程项目里就是换能器参数优化的雏形。仿真里可以放心扫,一次批量算下来比实验试错快得多。
最后说几句
这套仿真跑通之后,我最大的感受是:EMAT+压电接收的 COMSOL 模型本身不难,难的是把物理机制吃透之后再决定“每一步怎么设置”。理解了磁场方向决定激发模式、理解了趋肤深度决定网格细化区域、理解了压电片谐振决定信号解读方式,COMSOL 界面上的参数就不再是黑箱按键,而是你验证判断的棋盘。
对于打算继续深入的朋友,我建议下一步把二维模型扩展成三维轴对称模型,把螺旋线圈的真实空间结构建出来,再考虑实际载荷下的应力场影响。二维模型可以帮你建立物理直觉和调试方法论,三维模型才是真正逼近工程问题的那一步。