资讯动态

一维声子晶体带隙仿真实操:传递矩阵法与有限元建模全解析

发布时间:2026/10/5 3:14:46 来源:尧图企业网站定制
一维声子晶体这个名词听起来像是只有做超材料研究的博士才会碰的东西。但说白了它就是一根杆、一串弹簧、一排小球这样周期排列出来的结构。这种结构最迷人的地方在于某些频率的振动波传不进去就像被一道看不见的墙拦住了。这道频率禁区就是我们常说的带隙。带隙有什么用用大白话说它可以做减振、隔振、降噪比如把某个设备固定在精心设计的一维周期结构上让设备的振动频率落在带隙内振动就传不到地基和周围结构上。这套思路在航空航天精密载荷平台、汽车传动轴减振、高铁轮轨噪声治理甚至 MEMS 谐振器设计中都有应用空间。这篇文章不会只停留在概念上我会把我实际算过的双组元杆状一维声子晶体仿真模型完整拆开从布洛赫定理和传递矩阵的物理起因到 COMSOL/MATLAB 实操的每一个参数设置再到我踩过的模态缺失、网格敏感、数值溢出这些坑一次性讲清楚。适合刚接触声子晶体、想快速搭出第一个带隙仿真模型的研究生和工程师也适合想搞懂带隙到底怎么算出来的进阶玩家。1. 物理图像与带隙形成机制为什么周期结构能挡住波1.1 布洛赫定理与能带概念的移植先回到最基本的周期性。一维声子晶体的典型结构是两种或多种材料在空间上周期交替形成一个单元单胞后不断重复。比如铝-环氧-铝-环氧这样排下去晶格常数为 a单胞长度为 a。弹性波在这种介质里的传播数学形式是u(x,t) e^{i(kx - ωt)} · u_k(x)其中 u_k(x) u_k(x a)也就是说振动的空间包络是周期的。这个形式叫布洛赫波是从固体物理学里的电子能带理论搬过来的。k 是波矢ω 是圆频率。因为 u_k 具有周期性所以整个无限长周期结构的求解域可以被压缩到一个单胞内只需要让波矢 k 在第一布里渊区 [-π/a, π/a] 内变化就行。带隙的出现本质上就是色散关系 ω(k) 出现了不连续的频率区间。你可以把每个单胞想象成一个排队传话的人声子波想从队头传到队尾每个单胞内部振动的相位关系必须满足布洛赫条件。在某些频率下相邻单胞之间的振动相位正好反相能量被反复反射回源头宏观上就表现为波衰减、透不过去。这个频率范围对应的色散曲线上没有实数解就是带隙。1.2 两种带隙机制布拉格散射与局域共振一维声子晶体的带隙主要有两种来源搞清楚它们的区别非常重要因为直接决定了你的仿真模型该怎么建。第一种是布拉格散射机制。它的特征是带隙中心频率对应的波长和晶格常数满足布拉格条件粗略说就是 λ ≈ 2a。这种带隙频率通常比较高受几何周期尺寸控制结构尺寸越大带隙越低。缺点很明显想在低频隔振结构就得做得很大工程上往往不划算。第二种是局域共振机制。在周期单元内部加入一个弹簧-质量谐振子当入射波频率接近谐振子固有频率时谐振子大幅度振动能量被锁在单元内部不能向远处传播。局域共振带隙的频率不取决于晶格尺寸而取决于单元内部的局部共振频率理论上可以用很小的尺寸实现很低的带隙。这就是为什么超材料研究这么热门。我在实际仿真中两种机制都算过。布拉格型结构简单、参数好扫适合入门局域共振型数值上更容易遇到模态耦合和网格敏感的问题需要更多经验。文章后面的算例以布拉格型双组元结构为主局域共振我会在扩展方向里再提。1.3 传递矩阵的本质把每层材料变成四端网络仿真带隙有两条主流路线一条是传递矩阵法一条是有限元法。我建议新手先把传递矩阵法搞清楚因为它计算量小、物理图像透明、写代码只要几十行。传递矩阵的核心思想非常工程化把每一层均匀材料看作一个二端口网络输入端的力和速度经过这一层后映射到输出端的力和速度。对于一维纵波状态向量取 [位移u, 内力F]^T单层的传递矩阵 T_i 是一个 2×2 矩阵。因为位移和内力在层间界面是连续的所以整个单胞的传递矩阵就是各层矩阵连乘T_cell T_1 · T_2而整个周期结构的布洛赫条件要求T_cell [u, F]^T e^{iqa} [u, F]^T也就是说 e^{iqa} 是 T_cell 的特征值。对 2×2 矩阵来说两个特征值之积等于 det(T_cell)1之和等于迹。于是立刻得到著名的色散方程cos(qa) 0.5 · trace(T_cell)这个式子极度优雅。当 |0.5·trace| ≤ 1 时q 是实数波可以传播当 |0.5·trace| 1 时q 变成复数波在周期结构中指数衰减这个频率区间就是带隙。所以带隙仿真本质上算的就是矩阵的迹跑出 ±1 区间的频率范围。这个判断只花几行代码就能完成我建议所有做声子晶体的人都先在 MATLAB 里写一遍再去碰有限元。2. 仿真模型的参数体系与计算方案选型2.1 设计算例双组元杆状声子晶体理论讲完落到一个能复现的算例。我采用最简单的双组元一维细杆模型截面积 A 1×10⁻⁴ m²晶格常数 a 50 mm两种材料各占一半即 d₁ d₂ 25 mm。材料 A 用铝弹性模量 E₁ 70 GPa密度 ρ₁ 2700 kg/m³。材料 B 用环氧树脂弹性模量 E₂ 4 GPa密度 ρ₂ 1200 kg/m³。在细长杆的假设下纵波波速 c sqrt(E/ρ)算出来铝约 5091 m/s环氧约 1826 m/s。波阻抗 Z ρcA两种材料的阻抗差异直接决定了带隙宽度。用布拉格机制粗略估计第一带隙的中心频率应该在 10 kHz 到 20 kHz 这个量级具体边界要靠扫描计算得到。选这个参数组合的原因很实际铝和环氧的价格低、材料参数稳定、实验室容易加工而且阻抗比足够大带隙明显适合做验证实验。如果你手头只有钢和橡胶也可以照着同样的流程换材料参数结论趋势不会变。2.2 解析估算与仿真方法的选择拿到参数之后大多数人会直接开有限元软件但我建议先做一遍解析估算哪怕粗糙一点也能在后续仿真时避免把局部极小值错当成带隙。最简单的近似是把一维声子晶体简化成集中质量-弹簧链。环氧层等效为一个弹簧刚度 k E₂·A/d₂ 4×10⁹ × 1×10⁻⁴ / 0.025 16000 N/m。铝层等效为集中质量 m ρ₁·A·d₁ 2700 × 1×10⁻⁴ × 0.025 0.00675 kg。由质量弹簧链的色散关系 ω² (2k/m)·sin²(qa/2) 可以估算出布里渊区边界处qaπ的截止频率也就是带隙上边界附近的一个参考值。这个模型很粗糙但好处是几秒钟就能算出来能帮我判断后续有限元结果有没有数量级错误。精确计算建议用两条腿走路传递矩阵法适合快速扫参和整条色散曲线的初算十几行 MATLAB 代码就能得到带隙边界。有限元法COMSOL 或 Abaqus适合处理复杂截面、含缺陷、有阻尼、多维耦合的情况精度高但计算流程长。两者结果互相印证是最稳妥的。我曾经只信有限元结果后来和一个师兄的传递矩阵代码对比发现有限元里因为边界条件设置错误多算出一条伪带隙差点写进论文。从那以后我坚持至少用两种独立方法交叉验证一次。2.3 注意仿真模型这个词在不同领域里的含义搜带隙仿真模型的时候你可能还会撞见一堆看起来同名但完全不是一个东西的技术。比如电子工程里的 Brokaw 带隙基准源那是做基准电压温度补偿的用的是 Bipolar 晶体管和电阻网络和声学带隙八竿子打不着电力设备里的局部放电仿真模型关注的是绝缘缺陷处的电场和放电机器人领域常用的 Gazebo 仿真环境模型本质是刚体动力学与传感器物理引擎液压系统里的 AMESim 元件子模型以及功率电子里的 PLECS 热仿真模型也都属于各自物理场内的专用仿真工具。一维声子晶体带隙仿真属于结构动力学与弹性波传播的范畴核心工具是连续介质力学和周期结构理论别被这些同名不同义的术语带偏。如果你想找人交流用周期结构色散计算弹性波超材料仿真这些关键词会更容易找到对的人。3. 完整实操流程从数学方程到色散曲线3.1 基于传递矩阵法的快速扫参传矩法的代码很简单我直接把核心片段放上来。% 一维双组元声子晶体传递矩阵法带隙计算 % 参数 E1 70e9; rho1 2700; d1 0.025; % 铝层 E2 4e9; rho2 1200; d2 0.025; % 环氧层 A 1e-4; % 截面积 a d1 d2; % 晶格常数 % 频率扫描范围 f linspace(1, 40e3, 4000); omega 2*pi*f; traceVal zeros(size(f)); for n 1:length(f) w omega(n); c1 sqrt(E1/rho1); c2 sqrt(E2/rho2); Z1 rho1*c1*A; Z2 rho2*c2*A; k1 w/c1; k2 w/c2; M1 [cos(k1*d1), sin(k1*d1)/(Z1*w); -Z1*w*sin(k1*d1), cos(k1*d1)]; M2 [cos(k2*d2), sin(k2*d2)/(Z2*w); -Z2*w*sin(k2*d2), cos(k2*d2)]; Mcell M1 * M2; traceVal(n) 0.5 * trace(Mcell); end % 绘制带隙判定图|traceVal|1 的区域即带隙 figure; plot(f/1e3, traceVal, k-, LineWidth, 1.2); hold on; plot(f/1e3, ones(size(f)), r--); plot(f/1e3, -ones(size(f)), r--); xlabel(Frequency (kHz)); ylabel(0.5*trace(M_{cell})); ylim([-3, 3]); grid on;运行这段代码你会看到 traceVal 曲线在多个频率区间超出 ±1这些区间就是带隙。我这里扫的是 1 Hz 到 40 kHz步长 10 Hz算例对应的第一个带隙边界大致在 10 kHz 到 20 kHz 附近。需要说明的是具体边界值取决于材料参数的精确输入所以你的曲线和我的略有出入是完全正常的关键看趋势和区间。如果你想直接画色散曲线 ω(k)只需要把每个频率的 traceVal 反解出 qaqa acos(traceVal)然后对实数解画点就能看到声学支和光学支以及中间的带隙空洞。3.2 有限元单胞建模与 Floquet 周期边界设置传矩法虽然好用但对于二维截面或者更复杂几何还是得上有限元。以下以 COMSOL 为例流程在 Abaqus 里同样适用。第一步几何建模。建立一个 50 mm × 10 mm 的二维矩形单胞左半段赋铝右半段赋环氧。这里用二维平面应力近似细长杆理论上够用。如果管壁厚、截面大就要建三维实体并检查横向模态是否影响带隙结构。第二步材料赋值。固体力学模块中设置两个域的材料参数注意单位统一。COMSOL 默认单位制下 E 用 Pa密度用 kg/m³几何用 m频率用 Hz填数值时不要搞混。第三步设置周期边界。在固体力学物理场里添加周期性条件类型选 Floquet 周期。源边界选 x 0 一侧的边界目标边界选 x a 一侧的边界。这里有个关键操作周期边界上的波矢分量 kx 一定要定义成全局参数比如 kx 0然后在研究里做参数化扫描让 kx 从 0 扫到 π/a。如果不做参数化扫描你只能得到某一个波矢下的特征频率画不出完整的能带图。第四步网格划分。一维波传播问题对网格要求不算苛刻铝层和环氧层在传播方向各划 10 个单元以上横向划 24 个单元就能得到比较干净的色散曲线。我建议开扫掠网格把计算量压到最低。3.3 参数化扫描与色散关系提取研究类型选特征频率。需要注意的细节是每步扫描需要求解的模态数不只是一个因为在一个固定波矢下色散曲线可能有声学支、光学支以及高阶模态。我一般设置为 812 个频率搜索范围设定为 0 到 50 kHz。搜索范围太小会把高次模态漏掉曲线就会出现断档。扫描完成后后处理里以 kx 为横坐标、特征频率为纵坐标画点图。你会看到类似教科书里的能带结构一条从 0 开始上升的声学支一条更高频率的光学支两条曲线之间存在一个没有任何解的区域这个空区就是一维声子晶体的布拉格带隙。有个容易混淆的点布里渊区边界在 kx π/a 处也就是归一化横坐标 ka/π 1 的地方。你在画图时要注意如果 kx 参数化扫描只写到 π/a那么横坐标最大就是 1。不要把这个边界误认为带隙边界带隙边界是色散曲线断档的边界是频率轴上的一段区间。3.4 有限周期结构的传输/衰减验证单胞色散曲线算完理论上带隙已经确认了。但工程上还要验证一件事真实结构是有限长的带隙内的波衰减多少我习惯用传递矩阵法直接算透射率。把传矩法扩展到有限数量的周期单元 N总传递矩阵 T_total T_cell^N。两端分别设定入射波和透射波条件透射系数能量比可以表示成总矩阵元素的函数。我用 20 个周期的模型算过带隙中心的透射率能跌到 -40 dB 以下这说明结构确实能明显隔振。这个结果对于写论文和做工程报告特别有用。只甩一张色散曲线图审稿人会追问带隙内衰减多少附上透射谱说服力强很多。4. 常见问题与排查技巧实录4.1 色散曲线断裂与模态缺失最常见的现象是能带图里明明应该有连续曲线画出来却断成一截一截。原因通常是单步扫描求解的特征模态数量不足。尤其在高频段模态密度变大你设置了 8 个可能实际需要 15 个。解决方法是逐步增加模态数直到带隙边界频率的变化小于 1% 为止。另一个容易忽略的坑是有些模态是伪模态来源于周期边界的不正确设置或网格引发的局部振动。区别方法是查看模态振型真正的传播模态振型在单胞内具有布洛赫周期性伪模态往往只在某个角点或边界附近局部变形。如果你看到振型里出现异常集中但物理上不合理的变形先回头检查周期边界别急着调整材料参数。4.2 布里渊区边界的简并与曲线交叉在 kx π/a 处声学支和光学支经常出现简并或交叉后处理画图时如果按频率自动排序曲线会突然跳变。我吃过这个亏画出来的能带在边界处出现很大的U 型回折同事一看就说这不对重新按分支排序后问题消失。解决办法是在绘制色散曲线时按每个频率解对应的振型特征比如同相位/反相位对模态分组而不是简单按频率大小排序。COMSOL 里可以在结果中按模态参与因子或位移方向滤波MATLAB 里则要手动排序。这一步花的时间不多但对结果的判断影响巨大。4.3 传递矩阵法的数值溢出传矩法在低频和高频两端都可能遇到数值问题。低频时特征频率太低矩阵元素趋近于常数反三角函数的精度受限高频时各层厚度对应的相位移很大矩阵元素出现高频振荡计算 traceVal 时正负号丢失导致带隙边界抖动。我在扫高频100 kHz 以上时就遇到过 traceVal 超过几百的情况完全失真。解决方法是改用 Δ 矩阵或者将每一层再细分让单层相位变化不超过 π 的一半也可以把扫描步长加密但根治方法是使用阻抗递推法它对数值稳定性更友好。4.4 网格敏感性与计算资源的平衡有限元计算里网格太粗会把带隙边界算偏太细则计算量暴涨。以我用的案例为例传播方向单元尺寸从 2.5 mm 加密到 1 mm带隙边界频率移动了大约 3%从 1 mm 加密到 0.5 mm移动不到 0.5%。所以我基本以 1 mm 作为收敛网格。收敛性检查是职场里常说的计算素养至少做两组网格密度粗/中、中/细的结果对比带隙边界频率变化在 1% 以内才敢说网格收敛了。特别是你要做参数化研究的时候收敛性必须每套参数都确认因为不同材料组合下应力波波长变化很大。4.5 一维模型的适用边界最后特别提醒一件事一维杆模型只在波长远大于截面尺寸时成立。当你把频率推高到一定程度杆内除了纵波还会有弯曲波、扭转波和剪切波这些波会带来额外的模态填满甚至破坏你预想的带隙。所以做高频仿真时务必先用二维或三维模型验证一维结果的准确性。我做过一个截面 20 mm × 20 mm 的铝-环氧样件一维模型预测的带隙在 30 kHz 以上和三维模型差了将近一倍问题就出在高阶横向模态。如果你只是做原理验证和课程设计一维模型完全够但如果你想针对具体的工程结构做隔振设计建议至少用三维模型把前几阶横向模态算一遍再决定是否使用简化模型。最后说一点个人体会。一维声子晶体是最适合入门周期结构仿真的载体因为它方程简单、计算快速但已经能让你完整体验理论推导-数值计算-结果验证的全流程。我在做这个案例时最大的收获其实不是带隙数值本身而是理解了传递矩阵和有限元这两种方法各自的脾气传矩法快但是容易数值失稳有限元稳但是参数设置复杂。两者配合使用才能互相兜底。如果你后续想延伸这个模型还可以往几个方向改把环氧层换成压电片做主动控制在单元内嵌入弹簧质量做局域共振带隙或者把一维阵列弯成环形做拓扑波导这些都是现在超材料研究的热点方向。先把这个一维模型跑通、跑透你就有了一块很结实的跳板。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑