ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

COMSOL光子晶体波导法诺共振模拟:从建模到参数拟合

COMSOL光子晶体波导法诺共振模拟:从建模到参数拟合 半个多月里我一直在和一条不对称谱线较劲——用COMSOL搭光子晶体波导模型通过频域扫描做法诺共振的模拟研究。折腾这么久不是没原因的法诺共振的线型又窄又陡比普通洛伦兹峰对折射率变化更敏感在传感、窄带滤波、光开关和非线性增强领域都很吃香而光子晶体波导恰好能把光约束在波长量级的截面里同时提供一片清晰的“连续模式背景”是承载法诺共振最自然的片上平台。这篇文章把我从“完全没有模型”到“稳定复现法诺谷”的完整过程写下来包括物理原理如何转化为COMSOL设置、几何和材料的选型逻辑、网格和边界条件的处理、以及从透射谱里把q参数、共振波长和线宽拟合出来的具体步骤。适合两类人看一类是刚接触COMSOL波动光学、想从零搭一个光子晶体仿真模型的人另一类是已经会跑光子晶体透射谱、但一直拿不准“这个谷到底是不是法诺共振”的人。文章里我会把踩过的坑都摊开讲保证你能少走不少弯路。1. 法诺共振与光子晶体波导为什么值得做一次模拟1.1 法诺线型的物理来源——离散态与连续态的干涉法诺共振和最常说的洛伦兹共振最大的区别在于它是一条不对称的谱线。洛伦兹谱是“一个孤立能级”自然辐射出来的对称峰而法诺谱来自两条通道的干涉一条是宽带连续通道光子或电子可以直接通过另一条是窄带离散通道系统先被激发到一个束缚态再衰变出去。两条路径的振幅叠加在没有共振的地方相互抵消在有共振的地方相互加强于是谱线呈现一边高一边低的“谷-峰”结构。用生活里的例子来类比想象两个人在同一块场地说话。甲的声音是宽频的“背景人声”乙只发出一个固定音调。当两个人相位合适时某个频率上的声音会互相抵消周围频率则加强听众听到的不是单纯的“某个频率变大”而是一段明显不对称的频响变化——这就是法诺线型。在光频段法诺共振的透射谱通常用一个无量纲参数 (q) 来描述。常见的Fano公式写作[ T(\lambda) A\frac{(q\varepsilon)^2}{1\varepsilon^2} B, \quad \varepsilon \frac{2(\lambda-\lambda_0)}{\Gamma} ]其中 (\lambda_0) 是共振中心波长(\Gamma) 是线宽(q) 决定谱线形状。(q) 趋向无穷时线型退化为洛伦兹峰(q0) 时变成一个对称的“谷”(q) 在1附近时不对称程度最明显也是传感应用里最常用的区间。后面我会用COMSOL跑出来的透射数据去拟合这个公式而不是只凭眼睛看曲线弯没弯。1.2 光子晶体波导为什么是承载法诺共振的理想平台光子晶体是一类折射率周期性变化的介质结构。光在里面传播时会像电子在周期性晶格中运动一样形成光子带隙——某些频率的光无法传播。通过在完美周期结构中人为去掉一行空气孔就形成了一条“缺陷通道”原本被禁止的频率可以在通道里导行这就是光子晶体波导。光子晶体波导的导模可以看作一个宽带的连续态而如果我们在波导旁边再加一个点缺陷微腔这个微腔就像离散态。波导里的连续模式与微腔的局域模式强烈耦合时透射谱上就会出现法诺共振。这个结构简直是天然的法诺共振发生器波导本身负责运输光微腔负责提供窄带谐振两者之间的间距则直接控制耦合强度。选择光子晶体波导而不是普通条形波导来做这件事还有几个实际理由它的色散关系可以通过周期参数精细裁剪能工作在高Q慢光区域微腔与波导的间距可以精确控制在几十纳米级别耦合强度高度可调相比介质环或微环光子晶体结构在全片上集成时占用面积更小模式体积也更小。1.3 这次模拟要完成的具体目标在动手建模前我给自己列了四个可验收的目标建出一个带侧耦合微腔的二维光子晶体波导模型用COMSOL频域扫描拿到透射谱并找到明显的非对称法诺线型用Fano公式对谱线做拟合得到 (\lambda_0)、(\Gamma)、(q) 三个参数通过 (|E|) 场分布确认共振模式确实被限制在微腔里并且远离共振时场会回到波导传播模式。四条都跑通之后再去做参数扫描、灵敏度分析、结构优化才有底气说“我是在做模拟研究而不是在调一个玩具模型”。2. 建模前的设计确定结构、材料和模拟维度2.1 选空气孔型还是介质柱型结构光子晶体有两类常见构型一类是硅薄膜上刻一排排空气孔光被约束在留下的硅骨架里另一类是在空气中竖立一根根硅柱光在柱子之间传播。做片上集成研究时空气孔型光子晶体更接近SOI工艺后续可以挂电极、做微流道、跟其他光电器件联用所以我推荐先以“硅衬底空气孔”作为默认结构。介质柱型在二维模拟里更容易收敛不过实验对应性弱一些适合纯原理演示。确定构型之后还要选晶格类型。三角形晶格、正方晶格都可以做光子晶体波导但三角形晶格在同一个晶格常数下通常能打开更大的二维带隙缺陷模的Q值也更容易做高。因此这篇博文默认采用三角晶格空气孔结构。2.2 晶格、缺陷波导与侧耦合微腔的尺寸确定核心尺寸包括晶格常数、空气孔半径、薄膜厚度和缺陷腔形式。一个常用的起始参数集如下参数推荐值说明晶格常数 (a)600 nm让通信波段1550 nm落在带隙里空气孔半径 (r)0.30(a)孔径太小带隙窄太大骨架过薄机械不稳定波导类型W1移除一排孔宽度为一行空缺微腔形式点缺陷孔在波导旁一个晶格位点取消挖孔或缩小孔径波导与微腔间隔1~2排孔控制耦合强度决定法诺线型是否明显这里的“间距”是法诺共振成败的关键参数。微腔离波导太近连续模式和局域模式耦合太强离散态会被“拉宽”谱线反而趋向洛伦兹形离得太远耦合太弱透射谱上只剩一个微小的凹陷不好测量。经验上先做“中间隔一排孔”的模型再把间距作为扫描参数去观察谱形演化。2.3 材料折射率与仿真极化方式的选择硅在1550 nm附近的折射率大约是3.45空气约等于1。如果计算频率范围在1450~1650 nm之间硅的折射率色散很小完全可以当作常数。COMSOL里直接建一个折射率3.45的材料空气用1即可没有必要一开始就挂入完整的色散模型。极化方式建议选TE。光子晶体薄膜中TE模式电场在面内带隙更大和侧耦合微腔的相互作用也更直观。COMSOL的“电磁波、频域”接口在二维模型下有模板对应设置时需要注意选择“面内电场”或“面外电场”这里选“面内电场”就是TE。2.4 模型简化2D还是3D这个问题直接决定你的仿真周期。纯粹2D模型把结构当成无限厚完全忽略z方向的泄漏计算量小适合扫参数、调几何。完整3D模型能还原220 nm硅薄膜的纵向约束结果更贴近真实芯片但对网格和内存要求高一次精细扫频可能要多花数倍时间。我个人的策略是“两步走”第一步用2D把法诺共振现象复现出来把 (\lambda_0)、(\Gamma)、(q) 随几何参数的变化规律摸清楚第二步只对最优参数抽取3D模型跑验证确认2D结论没有发生本质改变。这样既能很快出结果又不至于被一篇报告带偏。3. COMSOL建模全流程几何、边界、网格与求解3.1 几何构建与布尔运算在COMSOL中新建二维模型把单位设为nm或μm。先在几何里画一个大矩形作为硅基区域然后用圆形数组把空气孔铺开。三角形晶格的本质是两套错开的圆阵列一套在 (y0) 排一排另一套在 (y\frac{\sqrt{3}}{2}a) 错开半周期再排一排。为了参数化方便建议所有尺寸都写成全局参数a 600[nm] R 0.3*a grid_x_size 30*a grid_y_size 18*sqrt(3)/2*a画好矩形和全部圆之后用“差集”操作把孔从矩形里减掉。做这一步时注意COMSOL的布尔运算对象选择被减对象是矩形减去的对象要一次性把所有圆都选进去避免一根根手动操作。完成减集后“形成联合体”和“形成装配体”二选一后者适合之后做不同子域的材料区分前者更适合连续介质。波导缺陷怎么加最直接的办法是“少画一排孔”。也就是说在生成周期孔阵列时刻意把 (y0) 这一行对应位置的圆从集合里排除留下一条连续的硅通道。微腔则是在波导旁边的一个晶格点上“少挖一个孔”或“缩小孔径”。两种做法分别对应不同缺陷态频率先用少挖孔最方便之后想深入优化时再试缩小孔径。3.2 物理场接口和边界条件PML、端口与源物理场选择“波动光学 电磁波、频域ewfd”。二维下求解的是频域麦克斯韦方程组方程里直接代入材料折射率。在默认情况下COMSOL会用频率 (f) 作为求解变量我建议把频率关联到可扫的波长参数lambda_sweep 1.45[um] # 后面做参数扫描用 freq c_const/lambda_sweep这样在参数扫描表里直接扫波长得到的透射谱横轴更直观。边界条件的设置是整个模型里最容易被低估的一步。我试过三种方案全部用散射边界条件SBC模型简单但光子晶体波导端口的模式阻抗和平面波相差很大容易产生反射伪影在区域四周加完美匹配层PML吸收效果好需要额外画一层PML域设置略微繁琐输入输出用“端口”边界并启动“边界模式分析”最能精确计算透射率但要求边界处能稳定提取出波导本征模几何不对称时容易匹配失败。对于这篇文章里的教学型模型我推荐方案2也就是PML打底。具体做法是在几何外围再画一圈宽约 (1.5\lambda) 的矩形环把这一圈材料设为空气并在物理场设置中把这环指定为PML。PML可以把你不想看到的反射波“吞”掉两侧就不会来回振荡。激发光怎么加进去简单做法是在波导入口端附近放一个“电偶极子”点源频率设为扫频频率位置放在硅波导中心线上。源会激励出朝两个方向传播的导模由于另外一端是PML我们只需用它作为“入射光”的近似。注意偶极子源的目的是做模式诊断和谱线识别若要严格计算透射率绝对值更严谨的做法是双端口模型在输入输出端分别加“端口”边界并配合边界模式分析。先用偶极子源把法诺现象跑出来再切换到双端口的定量计算这个顺序是效率最高的。3.3 网格划分策略哪里加密、哪里放松网格对高Q微腔模拟的影响远超很多人的直觉。我一开始为了图快用COMSOL自带的“物理场控制网格”结果透射谱里的法诺谷被糊没了排查半天发现是网格太粗。参考标准材料中的最小波长约等于 ( \lambda_{min}/n_{Si} 1.45/3.45 \approx 0.42,\mu m)。要解析微腔的驻波结构每个波长方向至少要8~10个单元也就是说硅区域最大网格尺寸要压在40~60 nm。具体到本模型我建议用户自定义网格整个模拟域的“最大单元尺寸”设为 (0.1a60) nm微腔孔边界和波导孔边界附近加密到 (0.05a30) nm在空气孔边缘添加三层边界层第一层厚度取20 nm拉伸因子1.2PML区域网格可以放宽到0.2a但注意PML内部最好也用映射扫掠网格避免各向异性材料在三角网格下难收敛。网格质量检查用COMSOL自带的“质量”统计建议最小网格质量不低于0.3。如果出现负质量单元多半是某些布尔运算产生了尖角或重叠面需要回几何里检查。3.4 扫频研究的配置与求解器选择研究类型选择“频域”。扫频方式不要直接填大表格而是用“参数化扫描”把lambda_sweep作为扫描变量范围先设1450 nm到1650 nm步长1 nm快速看整体谱线趋势发现明显谷后再把范围缩到共振附近10 nm步长0.05~0.1 nm精细确认线型。求解器方面二维模型用直接求解器PARDISO是最稳妥的选择。不要图省事用迭代求解器高折射率对比度结构的矩阵条件数不太好迭代器容易中途发散。COMSOL会默认分配多核四核跑一个二维扫频通常一两个小时就能拿到全部结果完全在可接受范围。4. 数据提取识别并拟合法诺共振4.1 透射率的三种计算思路拿到场分布之后需要把“透射率”这条谱线算出来。我用过三种方式按实用度从高到低排定义一条位于波导输出段的线段积分该截面上的能流。虽然在COMSOL里能流是矢量但我们可以定义边界积分算子积分实部(S_x)或法向分量得到输出功率。对比参考模型同样几何、去掉微腔单独跑一遍扫频把输出功率作为基准 (P_0(\lambda))再跑带腔模型得到 (P_1(\lambda))透射率取 (P_1/P_0)。这样做的好处是能扣除波导本身的耦合损耗法诺谷的对比度更清楚。用场振幅在某个固定点的值代替功率。这个在定性检查时可用但不适合定量提取 (\Gamma)。实际操作中我在“派生值 截面”里建立了输出段积分算子然后在全局参数扫描时通过“派生全局计算”批量得到每个波长的功率值。把带腔和不带腔的两组数据导到Python里做除法就得到归一化透射谱。4.2 怎样在谱线上认出法诺共振当COMSOL结果出来后如果透射谱出现如下三个特征就可以初步判定是法诺共振共振峰附近不是简单的“一个峰”而是峰旁带一个谷两侧对称性明显被破坏从谷到峰的过渡段斜率很陡往往比单一洛伦兹峰的过渡快微腔与波导间距改变时谷峰位置基本不动但相对强度变化这是离散态和连续态相对相位的体现。如果你看到的是完全对称的谷或对称的峰可能的原因有两个一是耦合太强离散态被展宽成洛伦兹形二是微腔模式没有真正被激发没出现干涉。这时回到几何先调间距。4.3 用Fano公式拟合q值、共振波长与线宽可视化谱线之后不要用手工标“谷底”来当共振波长那其实只是干涉相消点不等于离散态位置。更严谨的做法是对整条谱线做最小二乘拟合。我用的拟合函数就是前面说的Fano公式[ T(\lambda) A\frac{(q\varepsilon)^2}{1\varepsilon^2} B, \quad \varepsilon \frac{2(\lambda-\lambda_0)}{\Gamma} ]在Python里用scipy的curve_fit初始值设 (\lambda_01550) nm(\Gamma2) nm(q2)(A0.8)(B0.1)。拟合后如果得到的 (q) 在 (-10) 到 (10) 之间且残差不大就能确认这是典型的法诺共振。(Q) 值直接用 (\lambda_0/\Gamma) 计算比如 (\lambda_01550) nm、(\Gamma0.5) nm时对应的 (Q≈3100)这就是一个相当可观的高Q法诺共振了。4.4 用场分布做二次确认参数拟合虽然漂亮但还不够完整。我会再剖两个频点的 (|E|) 分布图一个取 (\lambda_0) 处一个取远离共振10 nm处。在 (\lambda_0) 处能量应该高度局域在侧耦合微腔内部波导里的传播场明显减弱形成“光被拽到腔里”的感觉远离共振时场强沿波导均匀传播微腔处几乎看不到亮点。这个对比如果成立就说明离散态与连续态的耦合机制确实存在不是数值噪声或者边界反射造成的假象。保存这两个频点的场图对论文或项目汇报来说也是最直观的证据。5. 实操中遇到最坑的事项与我的解决办法5.1 网格变密后谱线“变了形状”这是我最先遇到的。同一模型粗网格扫出来是个窄谷加密一倍后谷变浅而且多了一个峰其实说明粗网格把干涉细节平均掉了。解决办法是必须做一次“网格收敛测试”以1、0.75、0.5、0.35倍基准尺寸逐级加密观察 (\lambda_0) 和 (\Gamma) 的变化直到两者不再显著漂移。如果没有这个收敛测试后面所有参数分析都不可信。5.2 PML反射带来的赝共振PML虽然叫“完美匹配层”用不好照样会反射。最容易出问题的点是我把PML域建得太薄。后来确认PML厚度一般要大于目标波长的0.5倍最好到1个波长。另一件事是PML的材料指定不要随手选成普通空气域必须在物理设置里把这几个域单独指定为PML否则COMSOL不会启动各向异性吸收。检查PML是否工作直接把背景场分布图拉出来看如果场进入PML后快速衰减说明吸收正常如果PML边界处出现亮条纹说明有反射马上调整厚度或边界网格。5.3 扫频步长与线宽的关系法诺共振的 (\Gamma) 可能只有0.2~0.5 nm。如果你用的是1 nm步长扫频从数学上就很难分辨这条谷。步长经验值是 (\Delta\lambda \le \Gamma/4)。这也是为什么我一直坚持“粗扫定位细扫精测”的两段式扫描法。先花十分钟粗扫全波段找到嫌疑范围再把细扫范围缩一小段用0.02~0.05 nm步长跑这样才能画出完整、平滑的法诺线型。5.4 端口模式匹配失败如果选择双端口方案COMSOL里的“边界模式分析”有时候找不到想要的导模特别是波导入口切在光子晶体内部时模式边界条件不稳定。我卡了两天才想明白需要在波导两端各接一段均匀硅矩形区把端口放在均匀区外边界上让导模先在光子晶体里“跑顺”再过渡到均匀区被端口接收。这样模式匹配成功率高很多。额外好处是均匀区里可以轻松定义平面波端口网格也不容易畸形。5.5 求解器内存爆炸与时间失控二维模型其实很难把内存吃干净但如果你把整个模型放大到20×20个晶格周期并且所有区域都用30 nm网格自由度依然能飙升到百万级别。我的控制办法是缺陷腔及波导附近加密外围周期结构放宽到0.15aPML区再放宽。求解器坚持PARDISO并且关闭不必要的“绘制解”选项只保存特定频点场分布。扫描结果用“派生全局计算”批量输出成表格不要让COMSOL画几千张曲线图。5.6 从2D到3D的落差2D模型跑得很好不代表3D也会一样好。实际情况中220 nm硅膜在z方向有泄漏微腔Q值会下降法诺谷对比度也会变弱。把2D结论迁移到3D时检查这几项一是在硅膜上下添加覆盖层材料空气或SiO₂二是把z方向网格至少分成三层三是允许模式频率小幅度偏移。不要看到2D结果好就直接写结论多花半天做一次3D验证能省去之后审稿人质疑的麻烦。我个人现在跑这类模型已经固定成一套流程先2D快速定位结构参数再用3D验证最优设计拟合和场图双管齐下确认法诺机制。对刚开始接触这个方向的朋友最实用的建议是“先复现、再创新”把本文里的波导加微腔模型彻底跑明白之后再去加第二腔、调高Q、做传感灵敏度扫描——那时你手里已经有了一套可靠的方法不会因为模型边界或者网格问题把真实的物理现象给掩埋掉。
返回列表