玩转COMSOL光栅仿真:用准BIC把古斯汉森位移搞大
comsol光栅仿真 计算复合波导光栅准BIC增强古斯汉森位移最近在折腾光栅结构里的古斯汉森位移Goos-Hänchen Shift发现用准BICBound States in the Continuum来增强这个效应挺有意思。直接说人话就是通过设计特殊的光栅结构让光在表面反射时横向位移量暴增。这里分享一波用COMSOL建模的核心思路顺带丢点代码片段。模型搭建从画图到边界条件先画个复合波导光栅的基本结构——硅基底上铺一层二氧化硅再覆盖周期性排列的氮化硅光栅条。重点在于参数化建模方便后续扫描优化。用COMSOL的几何脚本可以直接生成参数化结构% 光栅参数化建模COMSOL LiveLink grating_period 800e-9; % 周期800nm grating_width 0.5 * grating_period; % 占空比50% model.geom(geom1).feature().create(grating, Rectangle); model.geom(geom1).feature(grating).set(size, [grating_width, 200e-9]); % 宽度和高度 model.geom(geom1).feature(grating).set(pos, [0, 0]);这里用矩形堆叠实现光栅占空比调成0.5是个保守开局。边界条件要特别注意上下用完美匹配层PML吸收杂散波横向用周期性条件Floquet周期边界让仿真只计算一个单元省算力。扫参数找BIC让Q值飞一会儿准BIC的特征是共振模式的品质因子Q值极高。为了触发它得在参数空间里“钓鱼”——比如扫光栅高度或周期。COMSOL的扫参功能可以自动化这个流程// 参数扫描设置COMSOL Java API study model.study().create(param_scan); study.feature().create(param, Parametric); study.feature(param).set(plist, range(180e-9, 10e-9, 220e-9)); // 高度从180nm扫到220nm study.feature(param).set(pname, h_grating);扫完高度后看透射谱里的共振峰——当某个高度对应的峰突然变尖Q值飙升说明摸到准BIC了。这时候用频域扫描抓共振波长// 频域扫描提取共振波长 solver model.study().create(freq_sweep); solver.feature().create(freq, Frequency); solver.feature(freq).set(type, interval); solver.feature(freq).set(frequencyrange, 1500e12 to 2000e12); // 1.5~2.0THz位移计算近场分布是关键comsol光栅仿真 计算复合波导光栅准BIC增强古斯汉森位移古斯汉森位移的增强和近场分布强相关。在共振波长下用后处理积分算反射相位的空间导数// 计算相位梯度位移公式核心 dphi_dx real(gradient(emw.Ez)); % 取电场Ez的相位梯度 GH_shift -lambda/(2*pi) * dphi_dx;这里有个坑COMSOL默认输出复数场记得用real()取实部或者用arg()函数直接提取相位角。如果发现位移量不对劲检查下近场是不是出现了强烈的局域化——准BIC会让电场在光栅表面“卡住”形成高对比度的分布。避坑指南网格和收敛性翻车重灾区在网格划分。光栅边缘需要用边界层网格Boundary Layer捕捉倏逝波// 边界层网格设置 mesh model.mesh().create(mesh1); mesh.feature().create(bl, BoundaryLayer); mesh.feature(bl).set(faces, [3,4]); // 光栅上下表面 mesh.feature(bl).set(thickness, lambda/20); // 边界层厚度波长1/20如果仿真结果震荡严重大概率是网格太糙或者PML层数不够。另外用低阶元比如二阶反而比高阶更稳毕竟BIC对数值噪声敏感。最后一步验证位移增强对比普通光栅和准BIC光栅的位移量。实测数据可能会发现当Q值从1e3跳到1e5时位移量能翻10倍以上。不过别嗨过头——实际加工时光栅边缘的粗糙度会砍Q值仿真里记得加个2~3倍的衰减因子更接近现实。代码和模型调通了的话准BIC就是个放大器。下次想搞点更野的比如动态调谐光栅参数或许能玩出光学开关的效果。