简介这套压缩包面向光子晶体与微纳光学领域的研究者聚焦连续域束缚态BIC的远场偏振特性与Q值能带分析。内容基于COMSOL仿真展开涵盖k空间模拟、远场偏振计算、能带与Q值变化规律并配有Matlab脚本与相关文献探讨适合正在开展BIC课题仿真或学习Comsol光学建模的读者。包内共15个文件其中docx为方案思路与文献解读笔记html为可视化分析页面jpg为仿真结果截图txt为简要说明整体约2.83MB文件组织明确便于按需查阅。目前已有42人学习下载。通过这套资料可以快速理解光子晶体连续域束缚态的远场偏振计算流程掌握Q值在k空间中的分布分析方法同时借助Matlab脚本复现关键结果节省自行建模与编写程序的时间尤其适用于需要完成光子晶体仿真作业或撰写相关小论文的本科生与研究生。1. 光子晶体连续域束缚态远场偏振计算为什么是仿真里的硬骨头光子晶体里的连续域束缚态BIC这几年几乎是光学仿真绕不开的选题做传感器、做激光器、做非线性谐波的都在往这上面靠。原因不复杂BIC 能在辐射连续域里把模式牢牢锁住Q 值理论上无穷大实际仿真里也能看到上万甚至十万的量级结合远场偏振控制是高 Q 微纳光子器件研究的理想起点。但这东西的仿真不好做——BIC 本身就像个黑匣子近场算得很漂亮远场一转就翻车。这份资源把 COMSOL 光子晶体模型搭建、k 空间能带扫描、Q 值提取和远场偏振计算串成了一条完整链路还带 Matlab 脚本和配套文献。适合被边界条件和后处理卡住的研究生与工程师新手能照步骤复现熟手能直接拿脚本改参数。2. BIC 的物理图像与 Q 值能带先搞清楚仿真在算什么2.1 连续域束缚态的本质辐射连续域里的“漏网之鱼”普通导波模式频率落在光锥之下靠全内反射把光束缚在结构内部BIC 的特殊之处在于它的频率落在辐射连续域里——按常理它应该向自由空间辐射但辐射通道恰好被某种机制“关闭”了。仿真里最常见的两类第一类是对称保护的 BIC模式在某个空间对称操作下的变换性质与辐射通道不匹配导致它和平面波之间的耦合矩阵元为零经典例子是 Γ 点处的偶对称模式第二类是偶然 BIC也叫 Friedrich–Wintgen 型靠两个模式之间的干涉相消把辐射率压到零位置随几何参数移动需要扫参才能找到。资源附带的 docx 和 HTML 文档里把这两种类型从 Maxwell 方程怎么推出束缚条件、怎么落到对称性分析写得比较完整建模前值得先翻一遍。仿真层面识别 BIC 最直接的手段是看 Q 值的发散。用复特征频率 ω ω_r iω_i 计算 Q ω_r / (2|ω_i|)当模式趋近 BIC 时 ω_i 趋零Q 值暴涨。这里有个高频踩坑点BIC 的存在依赖结构对称性网格有一点点不对称、边界相位给错一位ω_i 就会停在有限值上Q 值封顶在几千让你误以为结构只是“高 Q 准 BIC”其实结构本身支持严格 BIC。所以我做这类仿真的习惯是先在纸上把结构的空间群和辐射通道对称性理清楚再动 COMSOL。别小看这一步它能省下后面调网格的一整天。2.2 Q 值能带与远场偏振两个量必须一起看能带图给的是频率和色散关系Q 值能带给的是每个 k 点上的辐射损耗。对 BIC 研究来说只画频率能带不够因为 BIC 在频率能带图上和普通模式没有区别它就是一个能带点只有在 Q 值能带上它才表现为一个尖锐的峰log 坐标下尤其明显。这份资源的处理方式就是把 ω(k) 和 Q(k) 合并到同一张图双 y 轴左边频率、右边 log10(Q)BIC 的位置一眼定位省去对着模式列表硬找的功夫。远场偏振是另一个视角。BIC 本身不辐射但 BIC 附近的准 BIC 模式会向远场泄漏泄漏光的偏振在 k 空间里绕 BIC 形成旋转结构。这里的“远场偏振”不是某个点的线偏振或圆偏振那么简单而是要看偏振角 ψ 在 k 空间二维面上的环绕行为——BIC 对应涡旋中心涡旋的拓扑荷通常是 ±1。资源里说的“远场偏振计算”核心就是量化这个过程从近场出发做远场投影得到每个 k 点的复振幅 Ex、Ey换算成斯托克斯参数最后画成偏振图。一句话说起来容易做起来全是细节第三章第四章展开讲。2.3 拓扑荷与偏振涡旋BIC 的远场指纹先交代拓扑荷的定义因为后面写 Matlab 脚本时要直接用到。远场每个观测方向对应一个偏振椭圆椭圆长轴倾角 ψ 0.5·atan2(S2, S1)。绕 BIC 在 k 空间走一圈ψ 累积变化 ±180°对应拓扑荷 ±1。计算时要在 kx-ky 二维网格上逐点做远场投影再把 ψ 做 unwrap 求绕圈积分。这个积分值稳定、可复现是比“在图上看到一个尖峰”强得多的 BIC 判据。BIC 类型形成机制典型位置仿真识别特征网格敏感度对称保护型模式对称性与辐射通道不匹配Γ 点Q 在 Γ 点发散高网格破缺对称性毁掉 BIC偶然型FW双模式干涉相消Γ 点外一般 k 点扫描参数时 Q 出现尖峰中需要加密细扫准 BIC对称性微扰打破原 BIC 附近Q ∝ 1/Δ²Δ 为不对称度中受数值误差限制这张表同时解释了为什么仿真报告里习惯同时给 Q 值能带和偏振图Q 值能带证明“这里存在 BIC”偏振图证明“BIC 的远场行为符合拓扑预言”两者互证结论才立得住。很多新手只画了 Q 尖峰就说找到 BIC审稿人一问偏振拓扑就答不上来资源里配套的文献探讨部分就是补这块的。3. COMSOL 模型搭建几何参数、Floquet 边界与求解器三个关键设置3.1 几何参数晶格常数、板厚和孔半径的起点COMSOL 里建光子晶体模型第一步不是画图而是把参数表定下来。最经典的结构是方形晶格介质板打圆孔一层高折射率薄膜悬浮在均匀背景里孔周期排列。晶格常数 a 决定工作频段一般取 600 nm 到 1 μm对应近红外通信波段板厚 h 影响垂直束缚常见起点是 0.4a 到 0.5a孔半径 r 决定能带宽度和 BIC 位置从 0.2a 开始调。介质折射率用 Si 的 3.48 或 SiN 的 2.0取决于你实验里能拿到什么材料。在 COMSOL 里用全局参数定义这一整套几何直接引用参数后面扫 r、h 时不用改几何。具体参数可以这样起步参数符号推荐起点备注晶格常数a800 nm增大 → 工作频率整体红移板厚h0.45a增厚 → 低阶模 Q 上升孔半径r0.25a增大 → 能带变宽、BIC 移动介质折射率n3.48定义为材料不要写死背景折射率n_bg1.0有衬底时改 1.45晶格类型-方形、单圆孔对称性最好适合起步网格方面圆孔边缘需要局部细化。但初期别追求完美网格先用默认物理场控制网格把流程跑通确认能带形状合理再做网格无关性验证。这个顺序能省很多时间否则一上来就自定义网格算一次要十几分钟改参数也慢。3.2 Floquet 周期边界与布洛赫波矢k 空间扫描的基石光子晶体是周期结构仿真只需要一个单元胞。关键在边界条件COMSOL 射频模块里用 Floquet 周期条件指定布洛赫波矢分量。我习惯定义 kx_bloch 和 ky_bloch 两个参数单位取 2π/a然后扫 kx_bloch 从 0 到 0.5、固定 ky_bloch 0这就是沿 Γ–X 方向的能带扫描。要画二维偏振图时再改成二维扫描kx、ky 各取 20~40 个点。这里有个易混点Floquet 边界里到底是填归一化波矢还是绝对波矢。不同 COMSOL 版本界面不一样有的直接给 k 分量rad/m有的用周期相位 exp(-ik·a)。注意统一用 k_actual kx_bloch · 2π/a 作为 Floquet 边界的输入kx_bloch 从 0 扫到 0.5对应第一布里渊区半边。用参数而不是手填数字后面排查相位错误时能少走很多弯路。另外ky 0、kx ≠ 0 时模式沿 x 方向传播单元胞两侧场不完全一致Floquet 边界会自动处理但如果你在模型里还加了完美电导体之类的其他边界条件它会把布洛赫相位吃掉能带直接算错。这一点在光子晶体仿真里翻车率极高后面避坑章细说。3.3 特征频率求解器搜索范围、模式数与导出设置BIC 计算用特征频率研究不是频域扫描。频域扫描只能得到透射谱得不到复频率Q 值无从谈起。特征频率研究需要设置搜索范围目标模式的频率量级可以用 c / (n_eff · a) 估算n_eff 取 2~3。搜索范围太宽会搜出一堆高阶模和漏模太窄会漏掉目标。建议第一轮先设宽范围对应 100~400 THz跑一遍找到目标能带的位置再收窄到目标频率 ±20% 重算同时限定模式数 6~8 个。特征频率的虚部符号也要留意。COMSOL 给出的复频率一般是实部加负虚部也就是 ω ω_r - iγγ 0 代表辐射损耗或材料损耗Q ω_r/(2γ)。如果算出来虚部为正物理上对应增益优先检查边界条件是不是设反了或者材料折射率是否误加了负虚部。数据导出上建一个“全局计算”节点输出特征频率的实部和虚部配合参数化扫描后生成表格导出 CSV。E 场数据需要在单元胞边界上单独加“导出”节点实部虚部分开输出后面 Matlab 脚本要用复数重构。如果你装了 LiveLink for MATLAB可以跳过 CSV直接在 MATLAB 里调 model.sol 拿数据这是资源里脚本推荐的路径第四章细说。4. k 空间扫描与 Matlab 后处理能带提取和远场偏振投影怎么写4.1 两条数据通路CSV 批量导出与 LiveLink for MATLAB先讲数据通路因为后处理脚本的第一行代码取决于数据怎么来的。第一条路在 COMSOL 里对 kx_bloch 做参数化扫描每个 k 点算一次特征频率把全局计算结果频率实部、虚部连同参数值导出成一张 CSV列的顺序固定为 kx、Re(ω)、Im(ω)。Matlab 里直接读表简单可靠适合一次性分析。第二条路是 LiveLink for MATLAB适合参数多、要反复迭代的场景。在 MATLAB 里建一个 model 句柄循环里改 kx_bloch 参数、运行求解器、读取结果全程不用手动导出。缺点是 COMSOL 的 Java API 方法名记起来费劲而且每次循环都要重新求解数据量大时反而慢。我的建议是能带分析用 CSV 就够了偏振图需要二维 k 扫描时再考虑 LiveLink二维网格 20×20 就是 400 次求解手动导出确实不现实。4.2 能带与 Q 值提取复特征频率的后处理脚本下面这段脚本处理 CSV输出双 y 轴能带图% 读取 COMSOL 全局计算导出的特征频率表 % 列格式kx_bloch, Re(freq), Im(freq) raw importdata(eig_kx_sweep.csv); kx raw.data(:, 1); freq_re raw.data(:, 2); freq_im raw.data(:, 3); % Q 值定义Q Re(omega) / (2 * |Im(omega)|) Q freq_re ./ (2 * abs(freq_im)); % 双 y 轴左轴频率(THz)右轴 log10(Q) figure(Color, w); yyaxis left; plot(kx, freq_re * 1e-12, o-, LineWidth, 1.2); ylabel(Frequency (THz)); box on; yyaxis right; plot(kx, log10(Q), s-, LineWidth, 1.2); ylabel(log10(Q)); xlabel(k_x (2\pi/a)); grid on;这段代码的逻辑是importdata 直接读 CSV 到数组kx 作为横轴Q 值必须取虚部绝对值因为 COMSOL 的虚部是负的直接除会得负 Qfreq_re × 1e-12 是把 Hz 换成 THz让刻度更直观log10(Q) 是为了让 BIC 尖峰不被低 Q 基底压扁Γ 点处 Q 从几千跳到几万甚至更高线性坐标下看不清楚。跑完如果发现曲线断断续续多半是某个 k 点模式漏了或跳支了回头检查求解器搜到的模式数是否随 k 变化必要时按目标频率附近单独追踪模式。4.3 远场偏振投影从近场电场到斯托克斯参数远场偏振的计算流程是先在 COMSOL 里对每个 k 点求解取单元胞外边界上的近场电场做远场投影远场节点会自动处理辐射积分导出远场方向的复振幅 Ex、Ey。Matlab 里按斯托克斯参数公式处理% 读取远场数据列格式theta, phi, Re(Ex), Im(Ex), Re(Ey), Im(Ey) ff importdata(farfield_kx_0.3.csv); th ff.data(:, 1); ph ff.data(:, 2); Ex complex(ff.data(:, 3), ff.data(:, 4)); Ey complex(ff.data(:, 5), ff.data(:, 6)); % 斯托克斯参数约定 z 轴为传播方向 S1 abs(Ex).^2 - abs(Ey).^2; S2 2 .* real(Ex .* conj(Ey)); S3 -2 .* imag(Ex .* conj(Ey)); I0 abs(Ex).^2 abs(Ey).^2; % 偏振椭圆 psi 0.5 .* atan2(S2, S1); % 长轴倾角单位弧度 chi 0.5 .* asin(S3 ./ (I0 eps)); % 椭圆度单位弧度这里有几个约定必须统一S3 前符号取决于手性约定右手坐标系下通常取 -2·Im(Ex·conj(Ey))psi 的范围是 [-π/2, π/2]atan2 处理了象限问题不能换成 atan分母加 eps 防止 I00就是涡旋中心的 C 点时除零。实际画 k 空间偏振图时psi 要按 kx、ky 网格排成矩阵再画成彩色图或箭头场箭头方向就是偏振主轴方向。资源里的 Matlab 脚本已经把这段封装成了函数输入 k 空间网格和远场文件列表输出偏振图。4.4 二维 k 空间扫描与拓扑荷判定拓扑荷判定需要二维数据。做法是在 kx-ky 平面里以 BIC 位置为中心取一个小圆环半径 2~3 个网格点沿环取偏振角 psiunwrap 后求总变化量除以 2π 得到电荷数% psi_ring 是沿闭环取的偏振角序列单位弧度 psi_unwrapped unwrap(psi_ring); charge (psi_unwrapped(end) - psi_unwrapped(1)) / (2 * pi); fprintf(topological charge %.2f\n, charge);unwrap 是 MATLAB 信号处理工具箱的函数作用是把 [-π/2, π/2] 之间跳变的相位展开成连续曲线跳变超过 π 时自动补 ±π 倍数。如果算出的 charge 不是整数优先怀疑网格密度不足psi 在相邻 k 点之间跳变太大把二维扫描加密到 40×40 再看。这个判定对 BIC 位置的微小偏移不敏感比人眼在图上找涡旋中心可靠得多。5. 远场偏振计算避坑指南五个典型翻车点与排查思路5.1 特征频率搜出一堆漏模目标模式被淹没了现象搜索范围内出现大量模式能带图上分不清哪条是导波模式、哪条是辐射漏模频率点乱作一团。原因搜索范围开得太宽模式数设得太多把辐射连续域里的漏模和垂直方向高阶模全搜进来了。解决第一轮定位能带后把搜索范围收到目标频率 ±20%模式数降到 4~6 个再用场分布过滤在结果里画电场 z 分量BIC 相关模式的近场集中在板内漏模的场会明显发散到上下空间。把每个模式的场图快速扫一遍再决定保留哪些支。5.2 Q 值虚部被数值噪声淹没log 图上一片毛刺现象log10(Q) 曲线不光滑毛刺严重BIC 尖峰被噪声盖住同一个 k 点反复算 Q 值都不稳定。原因网格太粗或求解器容差太松。Q 值越大虚部越小当虚部量级接近求解器的数值误差底限时Q 就是噪声这块有时像玄学其实背后就是数值精度问题。解决做网格收敛性验证加密圆孔周边网格对比 Q 的变化把特征频率求解器的相对容差从默认值收严一两个数量级如果 Q 已经到 10^6 以上别迷信绝对值报告里写“数值上限”更严谨。血泪经验BIC 仿真里 Q 值超过 10^5 之后的波动属于正常现象别花一整天去追那个噪声。5.3 Floquet 波矢相位给错能带不连续、模式缺失现象沿 Γ–X 的能带在某段 k 区间突然断掉或者相邻两个 k 点之间的模式频率跳变幅度异常大。原因Floquet 边界里的波矢输入方式不同有的版本要求归一化值有的要求绝对波矢带 2π/a 因子填错后布洛赫相位不对模式边界条件就错了能带自然不连续。解决把 k_actual kx_bloch · 2π/a 定义成全局参数边界条件引用它在 COMSOL 里直接查看边界条件的波矢值确认 kx_bloch 0.5 时对应相位是 π扫描步长也检查一下步长太大会跳过窄带区间的模式加密后曲线连上了说明是采样问题不是相位问题。5.4 远场参考方向不一致偏振角对不上文献现象自己算的偏振角分布和文献结果趋势相反或者同一个模型换了坐标方向后偏振涡旋方向变了。原因远场导出时 Ex、Ey 的参考轴定义不同或者斯托克斯参数里 S3 的符号约定不同。偏振角 psi 只和 S1、S2 有关参考轴转了 90°psi 就对应变化S3 的符号直接决定左右旋判定。解决在脚本开头写死坐标约定并加注释写清 z 轴传播、x-y 为远场投影面、S3 -2Im(Ex·conj(Ey))跟文献对比时先翻转 Ex/Ey 试一次看涡旋方向有没有对上不要把偏振角画成绝对角度画相对某个参考 k 点的差值更稳妥。5.5 网格对称性被破坏BIC 分裂成准 BIC现象Γ 点处 Q 值只有几千而且随网格加密持续变化没有收敛迹象Q 值能带上 Γ 点附近出现“双峰”。原因三角形网格在圆孔边界离散化时不满足结构的 C4 或 C2 对称数值上等效于引入了微小的不对称扰动把严格 BIC 变成了准 BICQ 值被钉死在有限值。解决用对称网格或者把网格划分得具有与结构相同的对称性验证方法是将单元胞绕对称轴旋转后重新划分看网格是否完全重合。如果必须用自由网格就在报告里注明“数值上为高 Q 准 BIC对称性恢复后 Q 趋无穷”这也算合格结论。6. 用 Q 值标度律和偏振拓扑复核 BIC进阶验证技巧6.1 用 Q ∝ 1/Δ² 标度律确认准 BIC 机制找到候选 BIC 后最有力的验证不是反复加密网格而是把结构故意打破成准 BIC看 Q 值随不对称度 Δ 的变化是否符合理论标度律。对称保护 BIC 被 Δ 打破后辐射率正比于 Δ²因此 Q ∝ 1/Δ²。操作方式把圆孔改成椭圆孔短轴 a(1-Δ)Δ 从 0.02 扫到 0.1每个 Δ 下重新求解 Γ 点附近的准 BIC 模式提取 Q 值然后做 log-log 拟合。% 不对称度与对应 Q 值从 COMSOL 扫描导出 delta [0.02 0.04 0.06 0.08 0.10]; Q [3.2e4 8.1e3 3.6e3 1.9e3 1.2e3]; p polyfit(log(delta), log(Q), 1); slope p(1); fprintf(拟合斜率 %.2f理论值 ≈ -2\n, slope);如果拟合斜率在 -2 附近误差 10% 以内说明这个 BIC 属于对称保护型且仿真没有受到网格对称性破坏的干扰。斜率偏离明显时先检查 Δ 较大时是否有第二个模式参与了干涉那是 Friedrich–Wintgen 型的信号标度律会不同。6.2 用偏振涡旋积分复核 BIC 位置第二个复核手段是拓扑荷积分。在 k 空间里以候选 BIC 位置为中心取闭环算 psi 的环绕变化。如果闭环把 BIC 包在里面电荷应为 ±1如果闭环不包含 BIC电荷为 0。这个性质比 Q 尖峰更稳健即便 Q 值受数值影响波动拓扑荷是整数不会因噪声变成 1.3。实操上我一般取三个不同半径的闭环半径从一个网格间距到五个网格间距确认电荷都一致再下“这里是拓扑荷 ±1 的 BIC”这个结论。这两个方法配合使用基本可以覆盖大多数审稿人对 BIC 仿真证据的要求Q 值能带给出位置证据标度律给出机制证据拓扑荷给出远场偏振证据。从那以后我每次跑完一轮 k 空间扫描都会强制把 log10(Q) 图和环绕闭环的偏振角展开图叠在一起看一眼确认 BIC 尖峰和涡旋中心重合、电荷为 ±1再继续往下做参数优化。这个习惯帮我排查过不止一次由网格对称性引起的假 BIC希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?