COMSOL K空间中远程偏振态、能带及复现19年PRL

张开发
2026/4/6 6:21:43 15 分钟阅读

分享文章

COMSOL K空间中远程偏振态、能带及复现19年PRL
comsol k空间远程偏振态能带复现19年prl在光子晶体和超材料领域k空间偏振态分析就像给电磁场做指纹识别。最近复现了2019年PRL上那篇关于远程偏振态的工作整个过程堪称大型真香现场——前三天疯狂踩坑第四天突然开窍。咱们直接进入正题。搞过光子晶体的朋友都知道COMSOL的波动光学模块其实藏了个彩蛋在频域研究中插入k矢量扫描配合参数化扫描就能玩转能带计算。关键代码段长这样// 创建参数化扫描 ParametricSolutions ps model.study(std1).createParametricSolutions(); ps.set(pname, new String[]{kx, ky}); ps.set(plist, new Object[]{range(-pi/a, pi/a, 20), range(-pi/a, pi/a, 20)});这段Java API控制着k空间的扫描路径和步长其中a是晶格常数。注意这里的range函数第三个参数容易被误解为步数而非间隔实测发现当布里渊区边界出现异常尖峰时八成是这个参数没设对。偏振态提取的核心在于后处理% 导出电场分量后处理 Ex mphinterp(model, real(ewfd.Ex), coord, [x0;y0;z0]); Ey mphinterp(model, real(ewfd.Ey), coord, [x0;y0;z0]); Stokes [Ex.*conj(Ex)Ey.*conj(Ey), Ex.*conj(Ex)-Ey.*conj(Ey), 2*real(Ex.*conj(Ey)), -2*imag(Ex.*conj(Ey))];这个MATLAB LiveLink脚本从指定点提取电场分量构建斯托克斯参数。重点是要在远离结构的位置取点否则局域场会污染远程偏振态——这也是原文强调的远程二字的精髓。comsol k空间远程偏振态能带复现19年prl复现时遇到的第一个暴击是频带折叠效应。当使用传统超元胞法时高阶模式会像俄罗斯方块一样堆叠在基频区。解决方案是在材料设置里加了个骚操作epsilon base_epsilon delta_epsilon * (sign(cos(2*pi*x/a)) 1j*sign(sin(2*pi*y/a)))这种复折射率调制相当于在实空间引入非厄米对称性成功把鬼影模式推到了更高频段。验证方法很简单对比不同k点处Q因子分布当发现某个模式损耗突然增大两个数量级说明折叠模式被成功抑制。最后说说可视化技巧。用COMSOL内置的偏振椭圆图会丢失相位信息改用自定义表面图配合箭头图叠加// 自定义表面图设置 Surface srf plot.createSurface(); srf.set(expr, ewfd.Ex/ewfd.Ey); srf.set(phase, arg(ewfd.Ex/ewfd.Ey)); Arrow arr plot.createArrow(); arr.set(expr, {real(ewfd.Ex), real(ewfd.Ey)});这种组合拳既能显示场强分布又保留了偏振旋转方向。当看到计算结果和论文Fig.3b完美重合时顿时觉得之前掉的头发都值了。整个过程最魔幻的时刻明明所有参数都正确能带却死活对不上。最后发现是网格剖分时手滑勾选了曲率自适应导致结构边缘被过度细分。这告诉我们一个真理——有时候玄学bug比物理原理更难搞懂。

更多文章