最近一直在折腾超声相控阵的仿真,手头这个7×7阵元三维聚焦探头模型前前后后调了一个多月。从最初的网格剖分报错,到后来焦点偏移量死活压不下去,中间踩的坑比预想的多得多。趁着周末把整个建模思路和关键参数整理出来,给同样在搞COMSOL声场仿真的朋友做个参考。这篇文章不打算讲太多理论公式,重点放在怎么看懂声场分布、怎么定位焦点、怎么量化聚焦效果这些实际问题上。
1. 内容整体设计与思路拆解
1.1 为什么选7×7阵列而不是更小的阵元数
做相控阵聚焦探头,第一个要拍板的就是阵元数目和排布方式。我一开始也犹豫过要不要上16×16,但算了一下自由度,三维瞬态声场仿真的计算量是随着阵元数平方级增长的,7×7一共49个阵元,激励信号独立控制还能接受,再往上走计算资源就吃不住了。
选7×7还有一个重要原因是旁瓣抑制效果。阵元间距固定时,阵列孔径越大,主瓣越窄,聚焦效果越锐利,但栅瓣出现的风险也会增加。按照超声相控阵的常规设计经验,阵元间距取半波长左右,49个阵元排下来孔径大概有十几个波长,这个尺寸下的焦点半高宽足够小,适合做高分辨率聚焦分析。
另外7是奇数,阵列在几何中心正好有一个阵元,坐标系的建立和延迟法则的计算都会方便一些。奇数阵列的对称性比偶数阵列更好,仿真结果的后处理可以少处理很多边界情况。
1.2 三维建模的核心思路:从单阵元到整阵的渐进化路径
我的做法是先建立一个单阵元的二维轴对称模型,把压电换能器的厚度振动模态摸清楚,再扩展成三维。这个思路的好处在于分阶段排查问题,单阵元模型如果声场不对,问题多半出在材料参数或者边界条件上,这时候排查的成本最低。
单阵元跑通之后,复制成49个就简单多了。COMSOL里可以用阵列复制功能一次性生成所有阵元,关键是把每个阵元的几何位置算对。7×7阵列的阵元中心坐标,假设从(-3d, -3d, 0)开始,步长为d:
for i = 0:6 for j = 0:6 x_center = (i - 3) * d; y_center = (j - 3) * d; z_center = 0; end end这个坐标生成逻辑是整个模型的基础,建议用全局参数把阵元中心坐标都定义好,后面定义延迟激励时会反复用到。
2. 核心细节解析与实操要点
2.1 压电材料参数与极化方向的一致性检查
COMSOL中压电材料需要定义弹性矩阵、耦合矩阵、介电矩阵和密度,这些参数可以从材料库直接选,但如果用自定义材料,有个坑必须注意——极化方向要和坐标系方向保持一致。
我用的压电材料是PZT-5H,极化方向沿z轴正向。设置压电效应时,应力-电荷形式的耦合矩阵必须对应z轴极化的切向模式。如果参数来自文献而文献里的坐标系定义不一样,直接导入会导致仿真结果完全偏离物理实际。曾有一次我只改了介电常数没改坐标系,算出来的声场焦点偏移了快两个波长,排查了一天半才发现是这个问题。
材料参数的温度依赖性也需要留意,虽然标准仿真通常在室温25度下进行,但压电材料在高驱动电压下自发热明显,d33系数会漂移几个百分点,这会导致聚焦探头的实际声程误差。对精确聚焦应用,这个误差不容忽视。
2.2 网格剖分策略:疏密结合的技巧
三维瞬态声场仿真的网格是最容易出问题的地方。声场区域的最大网格尺寸直接决定了频率上限和精度,经验法则是每波长至少六个网格,即最大网格尺寸不超过声波波长的六分之一。
水的声速约1500 m/s,如果激励频率是500 kHz,波长就是3 nm,最大网格尺寸约0.5 mm。这里要注意的是,如果激励信号不是单频而是宽带的,比如包含两倍频和三倍频分量,应按最高频率分量对应的波长来设置网格。
我把模型分成几个区域来照顾几何细节:
- 阵元体区域:扫掠网格,层数至少6层,确保厚度方向能分辨压电体的应变梯度
- 声场水区域:自由四面体网格,核心关注区域(预期焦点附近)局部加密到网格尺寸为正常值的1/3
- 完美匹配层区域:扫掠网格,至少5层,径向映射分布
这里的加密策略非常关键,任何区域的网格尺寸超过设定值,求解器会自动跳过细化,算出来的焦点会出现虚假破碎或偏移。
2.3 边界条件设置:怎么让边界反射不污染焦点区域
三维声场仿真的边界反射是最大天敌。COMSOL的声学模块提供了平面波辐射条件和完美匹配层两种方案。PML是首选,但要特别注意它的厚度,单层PML厚度至少是最高频波长的1/4到1/2,太薄了吸收效果差,太厚了又浪费计算域。
我实测下来,声学模块里用的PML厚度设为最高频率对应波长的0.4倍效果比较好。我的仿真频率是500 kHz,最高考虑频率到1 MHz,水的声速按1482 m/s(20度),最大声波波长约1.5 mm,所以PML厚度取0.6 mm。
还有一个容易被忽略的细节,换能器阵元表面本身不是硬边界,压电体的振动会直接耦合进水中,这个界面不需要额外设置边界条件,但如果是用固体力学和压力声学耦合,必须勾选声-结构边界耦合,否则即使激励设置正确也不会产生声波。
3. 实操过程与核心环节实现
3.1 激励信号设计与焦点位置的计算
聚焦的核心在于延迟激励。对焦点位置 ( F(x_f, y_f, z_f) ),每个阵元中心位置 ( P_i(x_i, y_i, z_i) ),焦点到阵元的距离 ( r_i ) 可以用三维欧氏距离公式算:
r_i = sqrt((x_f - x_i)^2 + (y_f - y_i)^2 + (z_f - z_i)^2)传播时间 ( t_i = r_i / c ),其中 ( c ) 是介质声速。为了实现到达焦点时的同相叠加,需要给每个阵元的激励信号加上时间延迟,延迟量 ( \tau_i ) 等于最大传播时间减去该阵元自身的传播时间:
tau_i = max(r_i)/c - r_i/c这个延迟差对中心阵元和边缘阵元来说差异很明显,以7×7阵列、阵元间距为波长(3 mm)、焦距为30 mm的配置为例:中心阵元到焦点距离约30 mm,边缘阵元到焦点距离约35.8 mm,时间差约为3.7 微秒。这在实际中表现为边缘阵元的激励信号比中心阵元提前发出约3.7微秒,才能补偿距离差,让所有声波在焦点处同步抵达。
激励波形我选了汉宁窗调制的5周期正弦波,中心频率500 kHz。汉宁窗的旁瓣抑制比矩形窗好得多,能有效减少激励信号带宽外的频谱分量。COMSOL中用解析函数定义激励:
f(t) = sin(2*pi*f0*(t - tau_i)) * sin(pi*(t - tau_i)/(N*T0))^2其中 ( N ) 是周期数(5),( T0 ) 是周期。注意时间偏移必须在信号的包络定义范围内,如果延迟量比信号持续时间还大,会导致整个信号被窗函数裁掉,声场输出为零。
3.2 焦点深度与偏转角度的参数化扫描
为了让仿真更全面,我做了焦点深度扫描,分别在焦距为20 mm、30 mm和40 mm的情况下观察三维声场的焦区形态,并用参数化扫描运行多个求解。扫描过程中发现:
- 焦距20 mm时焦点更尖锐,但焦点的旁瓣水平略高,主瓣更接近近场
- 焦距40 mm时焦点更宽,深度方向上出现了明显的扩散现象
- 焦距30 mm介于两者之间,焦点位置与理论值吻合较好,半高宽大约2.1 mm
具体结果如下图所示。这里的偏差来源主要是近场效应和介质衰减,焦点越近,大孔径下的球面波前与平面波前偏差越大,延迟法则的线性近似越不准确。如果需要改善近场聚焦质量,需要引入二次相位修正项,从更精确的波形聚焦角度修正声时,这属于高阶优化问题。
除深度扫描之外,我还做了偏转扫描:在x方向和y方向分别加入线性相位梯度来实现波束偏转,模拟不同方向的接收声束。这个原理和应用场景类似,只是激励信号的延时在原来聚焦延迟的基础上加上一个线性项,相当于把焦点移到偏离轴线的方位。偏转角度和焦点横向偏移量的关系近似满足 (\tan(\theta) = \Delta x / F),我验证得不错。
偏转扫描结果整理成表格:
| 偏转角度(度) | 焦点横向偏移(mm) | 峰值声压(相对) | 半高宽(mm) |
|---|---|---|---|
| 0 | 0 | 1.000 | 2.1 |
| 5 | 2.6 | 0.87 | 2.4 |
| 10 | 5.3 | 0.71 | 2.8 |
| 15 | 7.9 | 0.58 | 3.3 |
偏转角越大,峰值声压下降越明显,焦点横向分辨率也越差。这主要是阵列有效孔径在偏转方向上缩减了,等效于孔径投影面积减少。
3.3 三维声场分布的可视化与焦点量化评估
仿真结束后,第一步是观察声压分布云图。COMSOL的切面图可以分别显示x-y平面(z=焦距处)、x-z平面(y=0处)和y-z平面(x=0处),三大对称面都看一遍才能对三维聚焦特性有完整印象。
观察声压幅值分布时,我习惯同时勾选多个切面并用统一色标来对比。色标统一非常关键,否则两个不同切面的所谓对比就没有意义了。接着我会在焦点坐标附近提取一条沿x方向穿过焦点的直线,绘制声压幅值曲线,从中读取半高全宽值。这是量化横向分辨率的直接方法。
三维空间中的焦点位置还可以用体渲染云图来观察,体渲染能把声压高亮区域看得非常直观。但体渲染对图形资源的消耗较大,建议把网格先粗化后再渲染,避免卡死。
另外,动态声场的变化过程用瞬态结果查看,观察不同时刻的声压分布云图可以清楚看到声波从各阵元发出后如何汇聚、交叉、增强。动画导出我用的是COMSOL自带的动画功能,逐帧保存为PNG再合成GIF或视频,这样便于和实验中的声场测量结果对比。
4. 常见问题与排查技巧实录
4.1 焦点偏移或聚焦效果差怎么办
这是我遇到最频繁的问题,焦点位置和预期位置不符,通常有以下几种原因:
延迟时间定义有误。检查延迟量单位是秒还是微秒,COMSOL默认单位是秒。我曾把微秒直接当秒输进去,结果所有阵元几乎同时激发,声场完全没有聚焦迹象。
坐标参考点错误。建议先把焦点和阵元坐标列表导出来核对一遍,看看是否有人为输入错误。特别是用户界面里定义的坐标值容易被其他建模操作覆盖。
声速设置不一致。延迟时间用的是水中声速,但某个边界上的声速属性被误改成了其他材料的值。检查模型中所有介质域的声速参数。
网格过粗。聚焦区域的网格如果超过1/3波长,焦点半高宽会被显著高估,焦点位置也会出现系统性偏移。把焦点附近网格加密到1/4波长能明显改善。
PML厚度不足。PML如果太薄,反射波会混入焦点区域。我建议做一次不同PML厚度的对比验证,观察焦点处声压曲线的尾迹是否干净。
排查顺序建议先检查激励信号和延迟,再检查网格和边界,最后检查材料参数。这是一条从高到低概率的路径。
4.2 计算资源不足时的降阶与简化思路
三维瞬态仿真很吃内存和CPU。如果机器配置不够,我建议:
先做二维轴对称模型验证思路,二维仿真速度快两三个数量级,但前提是焦点位置在对称轴上且阵列也是对称的。7×7整阵显然不满足轴对称条件,这时可以改成二维切片模型,取xz中心平面,把7×7降为1×7线阵来分析聚焦趋势,效果虽然不完全等于三维,但趋势是准的。
使用频率域求解。如果只关注稳态聚焦效果而不需要看声波传播的动态过程,可以改成频域分析,扫频得到焦点处的频响函数。计算量相比瞬态小得多。
减小时间窗口。瞬态求解的时间步长受CFL条件限制,时间步数越多越耗时。如果只关注焦点附近声场形态,可以只算到波传播到PML并被吸收为止,减少多余的时间步。
用对称性缩减计算域。7×7阵列本身具有四重对称性(二面角90度对称),可以把模型缩减到四分之一或八分之一区域,边界上加对称边界条件。这种方法能大幅减少单元数量,但需要小心的是,偏转扫描和非对称延迟会破坏对称性,这种情况下不建议使用。
4.3 后处理中如何准确提取焦点与声场特征
提取焦点位置最直接的办法是找体数据中的最大声压幅值点。COMSOL中可以用派生值计算最大值所在坐标:
- 在派生值中选择"体最大值",变量设为声压幅值的均方根或绝对峰值
- 选择"坐标"选项,输出最大值点的x、y、z坐标
这样得到的坐标就是数值仿真的实际焦点,然后可以对比理论焦点,看偏差是否在可控范围内。
旁瓣水平的提取则需要画声压幅值的一维曲线,找出主瓣和最高旁瓣的比值。仿真结果中旁瓣通常出现在焦点两侧,间隔大致等于波长除以孔径的衍射极限。如果最高旁瓣超过了 -15 dB,说明阵列的聚焦性能不佳,需要检查激励幅值是否均匀,或者阵元间是否存在耦合效应。
焦点动态变化分析需要记住声压的时间历史。加一个探针点在焦点位置,记录声压随时间的变化曲线,可以从到达时间和波形形态来评估冲击响应,这些数据后面给硬件控制算法做校准特别有用。
4.4 关于激励相位误差的敏感性分析
最后给一个我个人觉得很有价值的扩展:对阵元激励相位做敏感性分析。实际硬件系统中,每个通道的独立延迟精度有限,一般可以达到纳秒级,但这和声波的周期相比不再是可忽略的小量。我做了几组相位扰动分析,给每个阵元的延迟时间加入随机误差(幅度在2%到5%周期之间),然后统计焦点半高宽和峰值声压的变化。
结论是相位误差增大后焦点半高宽从2.1 mm恶化到3.2 mm,峰值声压从1.0降到0.72,阵元数越多,对这种随机误差越敏感。这说明相控阵聚焦探头对激励一致性要求极高,仿真和实测之间的差异很多时候不是因为模型不对,而是因为硬件通道的相位一致性没有达到设计要求。
之前没怎么注意这个问题,后来在做实验对比时才意识到相位误差的影响比预想的更大。仿真模型可以把通道间幅相特性理想化,但对接实际系统时必须考虑这个因素。
回头再看看这整个流程,从建模到参数扫描再到后处理,COMSOL相控阵聚焦仿真的链条其实很清晰:几何建模→材料参数→边界条件→网格→延迟激励→求解→后处理。每一步都有不少细节陷阱,但弯路走多了反而能积累出对声场规律更直观的感觉。现在再拿到一个阵列设计需求,我已经习惯先在脑子里想清楚焦点位置、旁瓣水平、相位误差容忍度这几个关键指标,再去动仿真,效率和成功率都会好很多。希望这份记录对同路人能有点帮助,后续如果有机会做气液两相流背景下的声场聚焦仿真,再继续整理分享。