☰
COMSOL光子晶体的Merging BIC调控:能带、Q因子与远场偏振
2026/10/1 12:11:04 网站建设 项目流程

1. 做这个项目前,先把物理模型理清楚

1.1 Merging BIC到底在研究什么

先说结论:Merging BIC不是“两个模撞在一起然后消失”,而是把动量空间中两个或者多个原本彼此独立的束缚连续态(Bound state in the continuum, BIC),通过调一个或者几个结构参数,让它们的色散支走到一起,在某个动量位置形成一个“合并后的束缚态点”。合并点附近的模式会表现出一种特殊的辐射抑制行为:在一个相对大的波矢范围内,泄漏率都被压得很低,Q因子呈指数级别抬升。这句话听起来简单,但在COMSOL光子晶体仿真里要把它变成能复现的结果,远比想象中复杂。

做这个项目之前,我建议先问自己一个问题:你要调控的是哪一类BIC?不同物理解析会直接影响建模方式。常见的是对称保护型BIC,靠结构对称性将某一辐射通道禁止掉;还有Friedrich-Wintgen型BIC,靠两条连续谱模式之间的干涉消相干;以及Merging BIC,本质上是让多个BIC在动量空间靠参数扫到同一个点上。项目标题里的“调控Merging BIC”重点在后者,所以首先要明确:你手里必须有至少两个可追踪的BIC模式,才能谈“merge”。

在实际的COMSOL仿真里,判定一个模式是不是BIC,最直接的依据是它的Q因子在无损耗材料模型下是否趋向无穷大,也就是特征频率虚部趋近于零。但这个判定在数值上很微妙,因为COMSOL解出来的“Q=1e9”和“Q=1e12”都有可能只是网格带来的假收敛。所以这个项目的前半段,你其实是在做“模式追踪”,后半段才是在做“Q因子和远场偏振分析”。

1.2 为什么选择COMSOL做三维能带和BIC调控

目前光子晶体计算常用的路线无非几条:开源平面波展开法(MPB)、时域有限差分(FDTD)、严格耦合波分析(RCWA)、以及COMSOL这类有限元工具。对于Merging BIC这种问题,我强烈建议主力使用COMSOL,原因有四个。

第一,COMSOL的射频模块有专门的特征频率(Eigenfrequency)研究,可以直接给出复特征频率,不需要额外写一整套迭代算法。平面波展开法通常只给出色散曲线,对于连续谱中暗态的判别不够直接。FDTD也可以做Q因子,但时域方法处理高Q模式需要极长的仿真时间,几千到几十万个光周期会让计算资源非常紧张。第二,COMSOL里Floquet周期边界使用非常简单,能带扫描本质上就是周期性边界条件里相位项的连续变化,不需要自己写倒空间转换。第三,工程化的参数扫描和辅助扫描功能让Merging BIC的调控变得非常顺手——把某个几何尺寸设成参数,一步步盯着特征频率实部和虚部变化,这种交互式感受比脚本端工作流直观得多。第四,远场偏振提取可以直接在后处理里做“远场域”计算,不需要把场导出到外部程序再作傅里叶变换。

如果你用的是Linux机器跑COMSOL,这里有一个小经验:特征频率扫描的批量任务最好用命令行方式启动,配合Java参数指定求解器线程数,能比图形界面稳定得多。新版COMSOL(例如6.3、6.4)在频域求解器的预处理步骤上做了一些改进,对于大矩阵的周期性特征值问题收敛性更好,但核心设置逻辑没有变,下面这些步骤在任何较新的版本里都是通用的。

2. COMSOL建模核心设置:几何、材料与周期边界

2.1 参数定义与几何建模的取舍

我做这个项目时采用的是一个非常经典的三维结构:周期性排列的介质椭圆柱阵列悬浮在空气中。晶格常数a取900 nm,椭圆柱长轴为0.5a、短轴为0.3a,柱高为0.4a,材料折射率设为3.48(对应近红外波段的硅)。之所以选椭圆而非正圆,是因为椭圆的“长轴/短轴比”本身就是一个很好的合并不控制参数:当长轴比连续变化时,BIC会沿动量空间某条轨迹移动,两个BIC可以由此被逐渐“拉”到一起。

在COMSOL里建立三维几何单元时,注意不要把整个晶格建出来,一个单胞就够了。关键点是:单胞里必须同时包含周期延拓需要的所有信息,然后在两对相对边界上加Floquet周期条件。对于悬浮柱阵列,空气域上下要留出足够的空间,厚度至少要到半个波长以上,否则边界处的倏逝场会被截断,导致特征频率虚部偏大。如果你用的是带基底的平板光子晶体,那么基底厚度和折射率也需要一并建模,但这里我先说悬浮结构,因为基底的存在会引入额外对称性破缺,让BIC调控的清晰度下降。

材料设置上,射频模块的“电磁波,频域”接口中,把相对介电常数设成折射率的平方就够了。无损耗模型是必须的,因为你计算的是辐射Q因子。如果材料模型里加入了损耗,特征频率虚部里会混入材料吸收贡献,后续提取BIC的“纯辐射泄漏”就没法分离了。很多人第一次做的时候会在这一步踩坑:Q因子怎么算都只有几千,检查了半天,发现是材料电导率或者介电虚部没有清零。

2.2 Floquet周期边界与三维能带扫描

三维能带计算是Merging BIC研究的基础。COMSOL的Floquet周期边界要求你在两条相对的边界上分别设置“源”和“目标”,然后指定倒空间波矢k的x、y分量。这里一个最常见的错误是把k矢量方向填错。比如晶格常数a = 900 nm,那么在x方向扫描时,k_x的单位会自动归一化为rad/m,你需要换算成约化波矢,用kx·a/(2π)来和文献中的能带横轴对应。

扫描能带时,我习惯把k_x设成参数kp,取值范围0到1,然后在“研究”里用辅助扫描,代入所有布里渊区高对称点路径。真正执行扫描前,先固定一个初始k点(比如Γ点,kp=0)做单点特征频率求解,确认前几条带的位置和你预期一致。因为三维光子晶体能带里往往同时存在大量高阶模,如果你一上来就全路径扫描,可能根本没法从几十个特征频率里认出哪两个模是你要追踪的BIC。

对于BIC所在的能带,典型特征是在某一动量处,某个模式的辐射场分量在远场方向上完全相消。也就是说,当扫描到该动量附近时,该特征频率的虚部会突然变得非常小,而其他模式的虚部保持在一个量级。用COMSOL能带图的方式呈现就是:频率实部曲线连续,虚部曲线在BIC位置出现一个尖锐的“凹陷”。这个凹陷就是BIC,也是后续Merging BIC的“原料”。

2.3 网格策略与数值收敛

网格是光子晶体仿真里最值得花时间的环节。对于周期性结构,自由三角形网格在单胞边界处容易产生不均匀分布,从而破坏数值上对结构对称性的保护,导致BIC的Q因子被“数值泄漏”拉低。我的做法是:用物理场控制网格,但将最大单元尺寸手动限制在λ_eff/8以内,其中λ_eff = λ₀/n。在介质柱内部和柱周围区域加密,网格尺寸取到λ_eff/12甚至更细;空气区域可以稍微放宽松一点,但也不宜超过λ_eff/5。

这里有个非常关键的经验:BIC仿真必须使用能够完整表达结构对称性的网格。如果你在单胞中间画一条对称轴,两侧网格密度相差很大,数值上就等于引入了不对称扰动,原本是完美BIC的模式会变成高Q因子但有限的“准BIC”。我在检查网格对称性时,会直接看网格统计里是否出现对称节点分布,或者干脆用“复制网格”的方式先把半个单胞剖好,再镜像生成另一半。

网格收敛性验证不能只看实部频率,必须看虚部。把最大网格尺寸从λ/10逐步细化到λ/16,观察目标模式的Q因子是否已经进入饱和区间。对Q因子来说,常见表现是:网格粗的时候Q因子在10^4量级浮动,细化后跳到10^6,再细化到10^7,然后基本稳定。如果你的Q因子每次细化都还在涨一个数量级,不要急着记录数据,继续加网格或者调整网格分布,直到增量在一个数量级以内。

3. 特征频率扫描与Merging BIC调控

3.1 特征频率研究的设置与筛选策略

COMSOL的特征频率研究里,你可以设置搜索频率范围和求解的模式数。对于光子晶体能带,带宽范围通常很窄,我一般把搜索范围设在预期频率附近左右各扩展10%。模式数不要一味调大,设为“目标频率附近需要观察的模式数”即可,否则求解器会把一大堆高阶或局域模也输出来,徒增筛选成本。

用射频模块求解特征频率时,COMSOL默认给出的是复特征值。频率实部是模式频率,虚部对应泄漏率。Q因子的标准计算是Q = f_r / (2|f_i|)。很多人在这一步会困惑:为什么算出来的Q因子没有量纲?因为特征频率的实部和虚部天然同量纲,相除即无量纲。举个例子,如果实部是2.0e14 Hz,虚部是2.0e7 Hz,则Q ≈ 5e6。这正是高Q模式的特征。

筛选BIC时,不能只盯着Q因子。还要看电场分布图和远场辐射图。在BIC所在动量点,模式场紧紧束缚在柱子内部或柱间位置,延伸到空气中的场分量大幅减弱;而准BIC模式会在单胞边界附近表现出周期性的泄漏场。我的操作方式是:在结果后处理里同时创建一组“电场模”表面图和一组“远场辐射”图,两者对照着看。如果某个模式Q因子很高,但远场图里明显有残余辐射,那么它可能只是网格数值误差造成的伪BIC,不是物理BIC。

3.2 Merging BIC的调控轨迹实现

Merging BIC的核心控制参数我选了椭圆柱长轴比r。初始设r = 0.5(标准椭圆),第一步先在kx-ky平面里做一次二维扫描,记录两个BIC在动量空间的位置。具体操作是:设定k_y = 0,扫描k_x;再设定不同的k_x,扫描k_y;把特征频率虚部的极小值位置提取出来,得到每条BIC的动量轨迹。

COMSOL里做这个二维扫描有两种方法:一种是在“扫描”里嵌套两个参数;另一种是用“参数化扫描”的二维表格形式。我推荐第二种,因为你可以精确控制采样点密度。扫描完成后,将每个参数组合下的Q因子用“三维绘图组”画成Q(kx,ky)曲面。在这个曲面上,BIC表现为Q因子趋向无穷大的尖峰。如果你看到的是两个分离的尖峰,就继续调r;当r逐渐变化到某一个值,两个尖峰开始靠拢、融合成一个更宽的高Q区域,这个r值就是Merging BIC点。

需要特别强调的是,Merging BIC不是靠“肉眼看到两个峰合在一起”就结束了。你要定量地追踪模式。因为COMSOL特征值求解器返回的模态顺序可能随着参数变化发生跳变,同一个模式在扫描过程中偶尔会“消失”再“出现”。为了避免把两条不同模式的轨迹当成同一条,我强烈建议开启“模态追踪”功能(部分版本叫load tracking或模态排序设置),或者在参数扫描中固定模态序号后,检查相邻两个k点之间的场分布重叠度。这个步骤虽然烦琐,但直接决定Merging轨迹的可靠性。

3.3 从能带数据里确认合并点位置

三维能带研究的数据量很大,直接看表格不现实。我会把能带计算的结构用位移视图做成“频率实部随kx变化”的曲线组。Merging BIC在能带图上的典型特征不是带交叉,而是两个带在某一点几乎简并,并且各自对应的虚部同时逼近零。在理想模型下,合并点处的两个模式频率完全重合,成为具有更强鲁棒性的BIC。

实际上,COMSOL里数值上很难做到虚部绝对为0,所以我的标准是:设阈值“虚部小于实部的10^-8”视为数值零,也就是Q因子达到10^8量级。这时必须检查一下动态范围,看求解器是否报“最小特征值”收敛警告。如果有,有可能是搜索区域设置太宽导致求解器丢掉真正的BIC模式,把搜索区间缩小后再看。

合并点确定后,最好再做一个额外校验:把合并点动量坐标附近的能带放大,检查是否存在带隙或其它偶然简并。因为合并点如果落在另一条连续谱带上,实际Q因子会受到带间耦合影响,导致仿真结果偏离理论预测。这个校验,说白了就是防止你合并的是“假的”BIC——两个模式确实靠在一起,但其中一个仍然泄漏。

4. Q因子计算与远场偏振后处理

4.1 Q因子提取的两种可靠方式

在COMSOL中提取Q因子,最直接的就是用复特征频率的虚部。但这里有一个经验问题:虚部对网格和求解误差极其敏感,哪怕实部已经很收敛了,虚部可能还在明显波动。因此,对于高Q模式,我不建议只跑一次加密网格就直接取虚部。更稳的做法是跑一组网格尺寸,做“Q因子对网格尺寸倒数”的线性外推。也就是说,至少取三组网格(比如λ/10、λ/12、λ/14),把Q因子分别记为Q1、Q2、Q3,观察是否单调上升并趋于平台。如果趋势线外推到网格无限密时与某一有限值吻合,那就以这个外推值作为最终参考Q因子。

另一种方式是通过“辐射功率积分”来计算Q因子:Q = ω·W / P_rad,其中W是模式储能,P_rad是单胞边界处的净辐射功率。这在COMSOL后处理里可以使用“积分”算子配合远场域范围来计算。不过坦白说,对于BIC这种Q因子特别高的模式,辐射功率本身数值极小,用积分算容易遇到数值噪声主导,反而不如复特征值方法干净。我的实际建议是:BIC附近的Q因子用复特征频率法;远场偏振提取时再用辐射功率积分法辅助判断方向。

为了确保虚部可信,你还要确认特征值求解器设置的“特征值尺度”合理。COMSOL里特征频率的单位默认是Hz,但在高频问题中数值量级很大,求解器对虚部的相对误差控制有时不够精细。这时可以把特征频率设置里的“尺度”改成“无量纲”或者用angular frequency(角频率),往往可以让虚部结果更稳定。这个细节不少教程不会提,但对Merging BIC这种需要对比高Q值差异的问题非常关键。

4.2 远场偏振提取的具体流程

标题里最后那个“远场偏振”是容易被忽略的部分。Merging BIC的物理意义不仅在于Q因子,还在于远场辐射的偏振特性。在合并点附近,模式的远场偏振方向会发生快速变化,这也是实验上识别Merging BIC的一个重要特征。

在COMSOL的射频模块中,提取远场偏振的基本流程是:先在使用“完美匹配层(PML)”或“散射边界条件”的模型中,加上“远场域”特征。注意PML不能紧贴单胞边界,中间一般要留一段均匀空气层,否则外行波在PML入口处的反射会污染远场。远场域设置完成后,后处理里会多出变量,通常是E_far_phi和E_far_theta,对应球坐标系下的两个正交偏振分量。

偏振提取的关键操作是:在结果里用“远场偏振”参数化绘图,固定某个观察方向(例如从单胞正上方观察),扫描方位角phi从0到360度,把E_far_theta和E_far_phi的振幅比与相位差提取出来,换算成偏振椭圆的长短轴和旋向。对于BIC点,理想情况下E_far_theta和E_far_phi都趋近于零,因为辐射完全被抑制。对于边界附近的准BIC,则经常表现为线偏振,并且偏振方向随k_x、k_y变化而旋转。

这里我分享一个调试经验:远场计算是在后处理中对近场做傅里叶变换得到的,所以近场网格直接决定远场偏振的准确度。如果你发现远场偏振方向出现奇异的条纹状分布,或者明显违背结构对称性,不要怀疑物理模型,先去看网格——十有八九是网格各向异性太强或者PML配置有问题。还有一种情况是单胞边界上的法向场分量没有正确处理,导致近场傅里叶变换混入不正确的相位。这种现象在COMSOL里可以通过切换“远场域”内的积分选项(如使用法向磁场还是切向电场)来修正。

4.3 用Q因子和远场偏振验证合并效果

到了验证阶段,我习惯同时画两组数据:一组是Q因子随动量位置的倒数图(1/Q),一组是远场偏振角随动量位置的变化。原因在于,Merging BIC的典型特征是“宽区域高Q”,也就是不再只有一个孤立的高Q点,而是围绕合并点的一整片动量区域内,Q因子仍然很高。这种“鲁棒性”恰好可以通过1/Q在动量平面上形成一个低平台来展示。

在做这个展示时,不要把1/Q直接用彩色图,因为动态范围太大,低Q区域的颜色会把高Q特征淹没。我一般先对Q取对数,再做表面图。同时在合并点附近叠加网格线,标注两个原始BIC的轨迹,这样才能让读者一眼看出“两个BIC从分离到合并”的过程。

远场偏振的数据处理上,因为BIC附近远场幅度趋近于零,E_far_theta和E_far_phi之比可能出现数值噪声主导,所以偏振角图上的散点噪声往往很大。解决方法是在后处理里给远场幅度加上一个极小截断值,或者改用斯托克斯参数来表征偏振态。斯托克斯参数的好处是它们是强度的线性组合,比直接求角度抗噪能力强得多,在做参数扫描时尤其好用。

5. 常见问题与排错实录

5.1 特征频率扫描里出现大量伪模式

我的经验是,第一次计算三维光子晶体能带,伪模式数量通常比物理模式还多。伪模式指的是那些由边界条件、PML或者网格异常点引起的数值模态。COMSOL特征值求解器并不会帮你区分物理模式和数值模式。

排查方法也很直接:把可疑模式的电场图调出来看。物理模式的空间分布一定有明确的对称性和局域化特征,而伪模式往往表现为在单胞角落或者边界处集中的场强,有时还会呈现棋盘状分布。另一个更高效的技巧是:用“模式重叠积分”辅助筛选。如果你已经知道某个k点下物理模式的场分布,算它与相邻k点模式的交叠,如果两个模式的交叠突然跳变,说明发生了模式跟踪跳变或者伪模式混入。

5.2 Q因子结果不太对:虚部异常

Q因子结果要么虚部明显偏大,要么虚部小得不正常。虚部偏大的最常见原因就是网格不够细或者网格不对称,造成数值辐射泄漏。虚部小得不正常,常见原因是搜索范围内存在无数值意义的低损耗模式,比如纯电磁静默模式,或者被PML完全吸收的模式。

还有一种情况是求解器设定里面打开了“复数扫描”选项但相关容差参数没有调好,导致虚部偏小到接近机器精度,Q因子被算成1e12以上。这时不要高兴太早,先做一个网格细化测试,如果细化后Q因子骤降了一个甚至两个数量级,说明原结果不是物理BIC,而是数值假象。现在我的工作习惯是:任何超过1e8的Q因子结果,都必须经过至少两轮网格细化确认,才会写进报告里。

5.3 远场偏振角扫描结果不稳定

远场偏振角做参数扫描时,数据点经常出现像噪声一样的极性翻转。核心原因是BIC附近的远场能量极小,两个偏振分量的相位会随着参数变化快速翻转,数值上属于小量比值的不稳定。另一个常见原因是PML的位置太近,远场计算中把PML内部的残余场也算进去了。

处理办法有几种:第一,把PML加厚到1/4波长以上,并且距离结构至少半个波长;第二,在后处理时把远场分量先做平滑滤波再求比值;第三,只在Q因子已经很高的动量区域内做偏振分析,不要在全布里渊区图上强看偏振分布。我做Merging BIC的远场图时,通常会在绘图组里指定mask条件,只显示Q > 10^4的区域,这样图面会干净很多,趋势也更清楚。

5.4 参数化扫描太慢怎么办

三维特征频率的参数化扫描,计算量确实不小。如果扫描范围很大,建议先用二维简化模型或者单k点做试探,把参数扫描范围和步长确定好之后,再正式跑三维全参数扫描。使用辅助扫描时,适当降低求解精度,先跑完一遍确认模式轨迹没有跳变,再用高精度重跑关键参数附近的点。

新版COMSOL支持分布式扫掠,如果你手边有计算集群或者多核工作站,记得在“研究设置”里打开分布式扫掠的选项,把每一个参数组分配到不同节点上。另外,在Linux环境下,用命令行的batch模式扫参比图形界面快很多,特别是在做几十上百个参数点时。这一点我之前在多个项目里实测下来,效率差距非常明显。

写在最后:一点实操体会

做完这个COMSOL光子晶体仿真项目,我最大的体会是:Merging BIC的物理思想很优雅,但整个数值验证过程中,“模式追踪的稳定性”和“网格对称性”才是真正决定成败的两件事。你可以在参数设置上做得非常精细,但如果没有盯住特征频率虚部的收敛趋势,没有反复确认远场偏振提取的数值可靠性,最后得到的图可能依然很好看,却经不起复现。

如果你也正在做类似课题,我的建议是不要急着追求“一次性扫描出一条完美的合并轨迹”。先花两天时间把单个k点下的BIC模式特征彻底吃透,把网格和求解器配合的脾气摸清楚,再扩大到全布里渊区扫描。实际跑下来,你会发现一旦模式和参数的关系建立起来了,后面调Merging BIC的轨迹就像在实验平台上调一个旋钮,剩下的只是时间问题。最后再提一个容易忽略的细节:计算完成后,把远场偏振图和Q因子图导出时,一定要注明是哪一层网格密度和哪一组PML参数得到的。这类结果对数值设置非常敏感,别人要复现你的结论,只有知道这些后台参数才有意义。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询