ARTICLE DETAIL

资讯详情

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

LP22高阶模硬核解析:光纤模式仿真与实测对齐指南

LP22高阶模硬核解析:光纤模式仿真与实测对齐指南 简介面向光纤通信与多模光纤研究者的MATLAB仿真资源聚焦阶跃折射率光纤中LP22模式的分析与模拟适合通信专业学生、光纤工程师及科研人员用于课程设计、毕业设计或课题预研。LP22是线性极化多模光纤中的一种高阶模态具有两个径向节点和两个轴向节点其传播特性直接影响多模系统的色散与传输质量。压缩包共3个文件含2个.m脚本和1个txt说明整体仅3KB属于轻量级代码与理论笔记互补的资源。脚本可仿真LP22模式的电场分布与传播行为txt文档则补充了模式理论背景、模拟思路以及光波导效应的解释。目前已有203人学习下载可帮助读者直观理解LP22光场形态掌握数值模拟多模光纤的基本方法并为进一步研究模式色散抑制、模间干扰与光纤优化设计提供基础。1. LP22 这个 fiber mode 为什么总在仿真和实测里对不上LP22 是光纤高阶模式里一个特别容易让人栽跟头的 fiber mode。做少模光纤通信、光纤传感或者模式复用仿真时求解器会把它和 LP21、LP31 一起吐出来但三个模式的近场强度图都是花瓣状靠肉眼认模式几乎必错。更麻烦的是LP22 在截止频率上和 LP03 简并传播常数挨得极近网格稍微粗糙一点就把两个模式搅成一组。这篇笔记从命名规则、数值求解到近场实测识别把 LP22 讲透适合正在跑模式分析却对不上实验结果的工程师。2. 先看懂 LP22 的场分布命名规则、花瓣相位与近邻模式判别2.1 LP 模式命名角向阶数 l 和径向阶数 m 怎么数LPLinearly Polarized线偏振模式是弱导光纤里的常用近似把矢量波动方程简化成标量方程后得到的模式集合。名字里的两个数字第一个 l 是角向阶数第二个 m 是径向阶数这两个数字直接决定强度图的长相。角向阶数 l 决定场沿圆周方向的变化次数。场分布里带 cos(lφ) 因子所以强度图上沿圆周有 2l 个亮瓣l0 是中心对称的圆斑l1 是两瓣l2 是四瓣。径向阶数 m 决定场强沿半径方向有几个峰m1 是一个径向亮环m2 是两个径向亮环。按这个规则LP22 就是四瓣、而且每个瓣沿径向裂成两个峰的模式。需要注意m 的数值和贝塞尔函数零点的编号一一对应。阶跃折射率弱导光纤里纤芯内场分布是 J_l(U r/a)包层里是 K_l(W r/a)U 和 W 由特征方程决定。截止时 W0此时 VUV_c。对 l≥1 的模式截止频率满足 J_{l-1}(V_c)0对 l0 的模式除基模外截止频率满足 J_1(V_c)0。这就是为什么 LP21 和 LP02 的截止值都是 3.8317LP22 和 LP03 的截止值都是 7.0156——它们落在同一组贝塞尔零点上。2.2 LP22 的强度分布与相位拓扑四个亮瓣的相位有正有负LP22 的横向电场可以写成E(r,φ) A · J_2(U r/a) · cos(2φ)其中 r、φ 是极坐标A 是归一化常数。这个式子看着简单但里面藏着一个关键细节cos(2φ) 在四个瓣里不是同号。φ0° 和 180° 两个瓣是正的φ90° 和 270° 两个瓣是负的。CCD 拍到的强度图是 |E|²正负号被平方抹掉了所以很多人以为 LP22 就是四个一样的花瓣其实相位分布的正负交替才是它的本质特征。区分 LP22 和其他四瓣模式靠的就是这个相位拓扑。径向部分用 J_2。J_2 在 r0 处为 0所以 LP22 的中心是暗的向外走J_2 先上升形成第一个峰过零点后再形成第二个峰然后衰减。对应到强度图上每个花瓣不是均匀的一块亮斑而是内外两段亮区夹一条暗线。这个“四瓣加径向双峰”的组合特征是它和 LP21四瓣但只有单峰最直观的区别。要稳定存在 LP22光纤的归一化频率 V 必须大于 7.0156。V 的定义是V (2π/λ) · a · NAλ 是工作波长a 是纤芯半径NA 是数值孔径。举个例子1550 nm 波长、10 μm 纤芯半径、NA0.12 的光纤V≈4.86最高只到 LP21根本出不来 LP22。想要 LP22要么把纤芯半径加到 15 μm 以上要么把 NA 提到 0.18 以上。这个计算在任何仿真之前都应该先做一遍能省掉后面大量无意义的调参时间。2.3 一张表分清 LP21 / LP22 / LP31别把高阶模认成兄弟模式实测和仿真里最容易混淆的三兄弟是 LP21、LP22、LP31强度图都带花瓣但花瓣数量和径向结构不同。下面这张表可以直接打印出来贴在工位上。模式角向瓣数(2l)径向峰数(m)中心截止 V_c强度图特征LP2141暗3.8317四瓣每个瓣内无径向分裂LP0202亮3.8317中心亮斑加一个外环LP3161暗5.1356六瓣单环LP1222暗5.5201两瓣每瓣径向双峰LP2242暗7.0156四瓣每瓣径向双峰LP0303亮7.0156中心亮斑加两个外环截止 V_c 相同的模式在截止点附近简并LP21 和 LP02 一组、LP22 和 LP03 一组。仿真时如果 V 数刚好压在截止值旁边简并组的两个模式传播常数几乎一样求解器会同时吐出两个根按特征值排序还不稳定这一步是很多人第一次翻车的地方。判别时抓住三点先数瓣数四瓣直接排除 LP31再看径向峰数双峰排除 LP21最后看中心中心是暗斑才可能是 LP22如果中心发亮那大概率是 LP02 或 LP03 一类的圆对称模式。这三个特征全部核对完再下结论说“这是 LP22”。3. 用 Python 数值求解 LP22从标量波动方程到二维场图3.1 弱导光纤里的标量近似为什么 LP 模式可以按这个算弱导光纤指纤芯和包层折射率差很小相对折射率差 Δ 通常在 1% 以下。这种情况下横向场分量远大于纵向分量矢量波动方程可以退化成标量亥姆霍兹方程LP 模式就是在这个近似下定义出来的。严格矢量解里有 HE、EH、TE、TM 模每个矢量模还有偏振简并分量在弱导近似下这些分量按传播常数合并成一组 LP 模式。比如 LP11 其实是 TE01、TM01、HE21 三个矢量模的叠加LP22 也对应一组矢量模只是标量近似不区分它们。做仿真时用标量近似的实际意义是快和稳。COMSOL 或 Lumerical 的矢量求解器在算高阶模时经常遇到简并模不收敛的问题而标量特征方程是单变量求根几毫秒就出一个模式还能精确控制解的是哪个 (l, m)。代价是精度标量解给出的传播常数在 Δ2% 的光纤里会明显偏大所以论文里都会注明“弱导光纤适用”。工程上做模式识别和耦合分析标量近似完全够用。3.2 径向特征方程的求解brentq 求根与参数设定LP22 的特征方程是U · J_3(U) / J_2(U) W · K_3(W) / K_2(W)其中 W √(V² - U²)。给定光纤参数算出 V 后U 落在两个贝塞尔零点之间下界是截止值 j_{1,2}7.0156上界是 j_{2,2}8.4172。用 brentq 在这个区间里找根比盲目用 fsolve 稳得多。import numpy as np from scipy.special import jv, kv from scipy.optimize import brentq def mode_eq(U, V, l): LP_lm 标量特征方程返回左减右求根时找零点。 W np.sqrt(V**2 - U**2) if W 1e-12: return 1e6 # 截止点附近函数值发散直接给大数推开 lhs U * jv(l 1, U) / jv(l, U) rhs W * kv(l 1, W) / kv(l, W) return lhs - rhs # 光纤参数1550 nm纤芯半径 12 umNA0.15 lam 1.55e-6 a 12e-6 NA 0.15 n_core 1.46 V 2 * np.pi / lam * a * NA # 归一化频率约 7.30 k0 2 * np.pi / lam # LP22 的 U 理论区间(7.0156, 8.4172)取略靠内避免边界 U_lower, U_upper 7.02, 8.41 U22 brentq(mode_eq, U_lower, U_upper, args(V, 2)) W22 np.sqrt(V**2 - U22**2) beta22 np.sqrt((k0 * n_core)**2 - (U22 / a)**2) # 传播常数 print(fV{V:.3f}, U{U22:.4f}, W{W22:.4f}) print(fbeta{beta22:.6f} rad/m, 有效折射率{beta22/k0:.5f})逻辑说明mode_eq 返回的是特征方程左减右求根就是找到让左右相等的 U。W 小于 1e-12 时特征函数在数值上会溢出直接返回一个大数把根从截止点附近推开避免 brentq 撞上渐近线。brentq 要求区间两端函数值异号这里 U_lower 和 U_upper 取在两个贝塞尔零点附近可以保证异号。参数说明V 值决定了模式有没有解。上面这组参数 V≈7.30刚过 LP22 截止值 7.0156能解出 LP22但 W 很小约 2模式很大一部分能量在包层里图上会看到明显的包层拖尾。如果想让 LP22 稳稳限制在纤芯内把 V 拉到 9 以上更舒服比如 NA0.18 或半径 15 μm。V 数太高也不行V12 以后高阶模式密集相邻模式的 U 间隔变小brentq 的区间要收得更窄。3.3 重建 LP22 二维场分布并验证正交性有了 U22 就可以在极坐标网格上重建场。纤芯内用 J_2(U r/a)包层用 K_2(W r/a) 衰减连接处保证幅值连续。# 极坐标网格半径取到 3 倍纤芯半径保证包层拖尾可见 R np.linspace(0, 3 * a, 800) PHI np.linspace(0, 2 * np.pi, 1200) rr, pp np.meshgrid(R, PHI, indexingij) # 纤芯内外分段场边界处连续 core_field jv(2, U22 * rr / a) clad_field jv(2, U22) / kv(2, W22) * kv(2, W22 * rr / a) radial np.where(rr a, core_field, clad_field) # 乘以角向调制 cos(2*phi)四个瓣相位有正有负 E22 radial * np.cos(2 * pp) I22 E22**2 # 近场强度分布 # 功率归一化便于后续重叠积分 power np.trapezoid(np.trapezoid(I22, R, axis0), PHI, axis0) E22 E22 / np.sqrt(power)逻辑说明radial 用 np.where 在纤芯边界切换。包层里 K_2 在 r 大时指数衰减乘系数是为了在 ra 处和 J_2(U22) 连续。cos(2φ) 乘完后四个瓣有正有负取平方才是强度图所以强度图永远看不到相位正负。这也是为什么要靠模式分解或者干涉测量才能拿到相位信息。参数说明网格密度 800×1200 在这个尺度下足够再密就是浪费内存。R 取到 3a 是因为 LP22 在 V≈7.3 时包层拖尾明显只取到 a 会把外环截掉导致和实测图对不上。如果你后面还要做重叠积分建议把网格保持直角坐标极坐标在中心附近会有畸变。验证不同模式之间的正交性可以快速解出 LP21 和 LP31然后做重叠积分def solve_lp(l, m, V): 按截止零点表给 brentq 供给区间。 intervals { (2, 1): (3.84, 5.14), # LP21 (2, 2): (7.02, 8.42), # LP22 (3, 1): (5.14, 6.39), # LP31 } lo, hi intervals[(l, m)] return brentq(mode_eq, lo, hi, args(V, l)) U21 solve_lp(2, 1, V) W21 np.sqrt(V**2 - U21**2) radial21 np.where(rr a, jv(2, U21 * rr / a), jv(2, U21) / kv(2, W21) * kv(2, W21 * rr / a)) E21 radial21 * np.cos(2 * pp) overlap np.trapezoid(np.trapezoid(E21 * E22, R, axis0), PHI, axis0) print(fLP21 与 LP22 重叠积分 {overlap:.2e})逻辑说明重叠积分等于零说明两个模式正交。实际数值结果会在 1e-14 量级因为网格离散和求根误差。如果你看到一个明显非零的重叠积分先查 U 是不是解错了模式——常见错误是 U 区间放错解出了 LP03 或者 LP21 的根。这个验证做完后面的耦合效率计算才有底气。4. 实测近场图里确认 LP22图像预处理、NCC 匹配与激发条件4.1 近场成像的预处理暗场扣除、坏点滤波与质心裁剪实测近场图常见的流程是光纤输出端用显微物镜放大成像到 CCD拍到的就是强度 |E|²。直接拿原始图和仿真比对是玄学必须先做三步预处理扣除暗电流背景、用中值滤波去掉坏点、以光斑质心为中心裁剪出固定尺寸区域。import numpy as np from scipy.ndimage import median_filter raw np.fromfile(nearfield.raw, dtypenp.uint16).reshape(512, 512) dark np.fromfile(dark.raw, dtypenp.uint16).reshape(512, 512) I_meas raw.astype(float) - dark.astype(float) I_meas median_filter(I_meas, size3) # 去坏点和随机噪声 # 以质心为中心裁剪 200x200 cy, cx np.unravel_index(np.argmax(I_meas), I_meas.shape) I_crop I_meas[cy-100:cy100, cx-100:cx100] I_crop I_crop / I_crop.max() # 归一化到 0~1逻辑说明暗场扣除是拿物镜挡住光源时拍的帧相减能去掉 CCD 热噪声和固定图案噪声。中值滤波 size3 对单像素坏点很有效也不会把花瓣的边缘磨掉。质心裁剪用最大亮度代替质心计算在单模或少模情况下够用如果拍的是多模叠加场最大亮度点可能不在几何中心这时用 I_meas 的灰度重心更稳。参数说明裁剪尺寸 200×200 是根据 CCD 像素数和光斑放大倍数定的。实测时先让光斑占画面 1/3 到 1/2再裁剪避免光斑太小导致插值误差。归一化放在裁剪之后因为暗场扣除后背景会有负值直接归一化会被背景拉偏。4.2 旋转扫角做 NCC 匹配阈值设多少才能认定 LP22LP22 强度图有 4 重旋转对称cos²(2φ) 的周期是 π/2所以旋转匹配只需要扫 0° 到 90°。归一化互相关NCC公式是NCC Σ[(I_meas - μ_m)(I_sim - μ_s)] / (N·σ_m·σ_s)NCC 最大值为 1 表示完全一致。实际经验0.8 以上基本可以确认是同一个模式0.6~0.8 说明有混合模式或偏振扰动0.6 以下果断认为不是 LP22。from scipy.ndimage import rotate from scipy.signal import correlate2d def ncc(a, b): a (a - a.mean()) / (a.std() * np.sqrt(a.size)) b (b - b.mean()) / (b.std() * np.sqrt(b.size)) return correlate2d(a, b, modesame).max() # 仿真强度图缩放到和实测裁剪一致 I_sim np.array(I22) # 前面算出的 LP22 强度图 I_sim I_sim / I_sim.max() best_ncc, best_angle 0, 0 for angle in np.arange(0, 90, 0.5): I_rot rotate(I_sim, angle, reshapeFalse, order1) score ncc(I_crop, I_rot) if score best_ncc: best_ncc, best_angle score, angle print(f最佳匹配角 {best_angle:.1f}°NCC{best_ncc:.3f})逻辑说明ncc 函数先把两幅图各自标准化亮度差异不影响结果背景稍有不均匀也能扛住。correlate2d 用 modesame 允许两幅图有轻微平移峰值位置同时告诉你横向偏移量。扫角步长 0.5° 足够四瓣对称下 1° 步长其实也够0.5° 是为了余量。参数说明如果 NCC 一直低于 0.7不要急着加角度范围先怀疑拍到的不是纯 LP22而是和 LP21 或 LP03 的叠加场。另外偏振态会影响高阶模式近场图建议在物镜前加偏振片分别拍两个正交偏振方向再挑 SNR 高的一组做匹配。4.3 稳定激发 LP22偏移入射、SLM 相位板与耦合效率计算识别是后话前提是能把 LP22 稳定激发出来。常见做法有三种偏移入射、空间光调制器SLM写入相位板、长周期光栅耦合。偏移入射最简单把输入高斯光的横向位置从纤芯中心移开可以激发出高阶模但缺点是不能精确控制激发哪一个模式。想要只在 LP22 上有高耦合效率需要让入射场和 LP22 场分布的重叠积分尽量大η |∫∫ E_in^* · E_22 dA|² / (∫∫|E_in|²dA · ∫∫|E_22|²dA)对 LP22 来说E_22 有 cos(2φ) 的角向变化普通高斯光重心在中心直接入射的重叠积分接近零。所以要么把高斯光偏移产生倾斜波前要么用 SLM 直接生成带 cos(2φ) 相位的类 LP22 场。SLM 的做法是计算 LP22 的复振幅取相位图加载到 SLM 上平行光照射后经过物镜耦合进光纤。常见参数是像素间距 15 μm 的 SLM 配 20 倍物镜相位量化 8 bit耦合效率能做到 30%~50%。耦合效率的计算可以直接复用在 3.3 节重建的场# E_in 是入射光场高斯或 SLM 出射场E22 是 3.3 节的归一化场 E_in_norm E_in / np.sqrt(np.trapezoid(np.trapezoid(np.abs(E_in)**2, R, axis0), PHI, axis0)) overlap_integral np.trapezoid(np.trapezoid(np.conj(E_in_norm) * E22, R, axis0), PHI, axis0) eta np.abs(overlap_integral)**2 print(fLP22 耦合效率 {eta:.1%})逻辑说明这个公式算的是入射场和目标模式之间的模式耦合效率前提是 E_in 和 E22 都做了功率归一化。实际 SLM 生成的场会有量化噪声和波前误差计算值会偏高实测通常要打个六折。想精确预估可以在 E_in 上叠一个随机相位扰动来模拟 SLM 的相位噪声。参数说明R 和 PHI 网格要和 3.3 节保持完全一致否则重叠积分会有虚假的高频误差。如果 E_in 是用直角坐标采样的先插值到这套极坐标网格上再算。5. LP22 分析的四个常见坑认错模式、仿真不收敛到熔接串扰5.1 现象强度图看着是四瓣实际是 LP21 或者叠加场仿真或实测出图以后看到四个亮瓣就认定 LP22这是最普遍的一次翻车。用图像工具沿某个花瓣的径向提一条强度剖面线数一下峰的数量单峰是 LP21双峰才是 LP22。很多情况下四瓣图其实是 LP21 和 LP02 的叠加——LP02 提供中间亮斑LP21 提供四瓣两者截止频率相同3.8317在 V 数略高时同时被激发叠加场看起来很像四瓣结构。原因只看了角向瓣数没看径向峰数和中心明暗。LP21 四瓣单峰LP02 中心亮环LP22 四瓣双峰且中心暗三个特征缺一不可。解决先在仿真里把 LP21、LP02、LP22 三个模式的强度图都画出来存成模板实测图出来后做一个三路 NCC 匹配而不是只和 LP22 比。匹配分数最高的那个才是真相。5.2 现象brentq 求根报错或者解出的 U 不在预期区间用 3.2 节的求解器时brentq 偶尔会抛“f(a) 和 f(b) 不是异号”的异常。最常见的原因是 V 数设低了。V7.0156 时 LP22 根本不存在特征方程在 (7.02, 8.41) 区间里没有根。另一个原因是区间端点太靠近贝塞尔零点特征函数在零点附近有渐近线brentq 会撞墙。原因对模式的截止条件没概念或者区间取值过于贴近理论边界。求解前先算 V确认 V 比截止值大 10% 以上再套区间。解决把区间内缩一点比如 (7.05, 8.35)避开端点渐近线同时把 mode_eq 里 W1e-12 的保护阈值提到 1e-6让求根器在截止边缘直接返回大数而不是算出一个异常值。还有一个血泪经验永远先画特征函数曲线看一眼零点位置再交给 brentq不要盲目相信区间。5.3 现象实测花瓣数对不上拍出来只有两瓣近场图应该四瓣结果 CCD 拍到两瓣或者四瓣亮度明显不均匀。原因通常是两个一是光纤输出端弯曲弯曲导致 LP22 的两个偏振分量cos 方向和 sin 方向传播常数发生分裂两个分量拍频叠加图样变成两瓣或出现螺旋状二是拍到的其实是 LP11 和 LP22 的混合LP11 两瓣能量较大盖过了 LP22 的弱瓣。原因高阶模对弯曲极其敏感LP22 的弯曲损耗比 LP21 大一个量级光纤稍微一弯模式场就畸变。解决输出端光纤保持顺直用夹具固定弯曲半径控制在 10 cm 以上拍图前先用红外相机看光斑稳定性确认没有模式跳动。如果偏振分裂造成的两瓣化一直存在在物镜前加偏振片分别拍两个正交方向再在仿真里对 LP22 的两个偏振分量分别做匹配而不是拿一个偏振分量的图去比。5.4 现象熔接后 LP22 能量骤降LP01 能量回升前一步还稳定的 LP22熔接一段光纤之后发现高阶模能量掉了一半以上输出变成了以 LP01 为主。这在少模光纤实验里特别容易遇到。原因熔接点如果有横向偏移、端面角度或者锥区光纤的绝热条件被破坏。高阶模在熔接锥区里会耦合回基模——模式没有消失是能量被“倒灌”了。熔接机的默认参数是为单模光纤调的电弧强度和放电时间对少模光纤来说往往过冲。解决熔接前先用仿真扫一遍锥区长度绝热条件要求锥区长度和模式拍长满足关系。工程上更直接的办法是改用拉锥熔接或者减小放电强度熔接后立刻用近场图验证 LP22 占比。另一个后悔药是熔接前在两端各留一段 10 cm 的顺直光纤用夹具固定好再放电能显著减少熔接点应力和偏移。6. 进阶LP22 与 LP03 简并时用一个重叠积分排序拆开简并组LP22 和 LP03 的截止频率同为 7.0156在 V 数刚过截止时传播常数差得非常小。商用求解器按特征值大小输出模式会把这两个模式排在一起而且排序顺序随网格变化抖动——上一版还是 LP22 在前加密网格后 LP03 跑到前面去了。这种黑匣子行为坑过不少人。我的做法是永远不信任求解器的模式序号只用重叠积分来认模式。具体操作是先用 3.2 节的标量求解器算出 LP22 和 LP03 的参考场然后把 COMSOL 或 Lumerical 导出的原始模式场不管它叫 Mode 几逐一和两个参考场做重叠积分按分数重新排序。# ref22 和 ref03 是标量求解器重建的参考场modes 是矢量求解器导出的场 for i, mode in enumerate(modes): ov22 np.abs(np.sum(np.conj(ref22) * mode)) / np.sum(np.abs(mode)**2) ov03 np.abs(np.sum(np.conj(ref03) * mode)) / np.sum(np.abs(mode)**2) print(fmode {i}: LP22{ov22:.2f} LP03{ov03:.2f})逻辑说明归一化方式这里做了简化实际严格做法是两边都功率归一化后再算复重叠积分。分数接近 1 的模式就是目标模式。如果 mode 3 的 LP22 分数是 0.92LP03 分数是 0.03那基本可以判定 mode 3 就是 LP22哪怕求解器把它排在 mode 5。这套方法在做模式复用系统时特别有用。少模光纤里高阶模数量一多简并组内传播常数差小于 1e-6 量级是常事靠特征值排序迟早翻车。按重叠积分追踪模式的好处是结果不随网格变化换个网格密度重新导出排序结果还是同一个。代价是你得先有标量参考场——所以 3.2 节那个 brentq 求解器我一直在用它是后面所有模式识别的锚点。最后一句话是我踩过最深的一个坑换来的不管仿真还是实测永远别用肉眼看图认模式跑一遍重叠积分再说话。希望帮到你。本文还有配套的精品资源点击获取
返回列表