Py学习  »  Python

Python光学仿真举例---光纤中的线性偏振(LP)模式

小小光08 • 1 年前 • 310 次点击  


线性偏振(Linearly Polarized,LP)模式是弱波导光纤中电磁场分布的简化描述方法,它们是在特定近似条件下对光纤中传播的光波的数学描述。

1. LP模式的物理基础

LP模式的推导基于"弱波导近似"条件,即光纤纤芯与包层的折射率差很小(通常Δn < 1%),这使得纵向场分量远小于横向场分量,可以近似认为电场和磁场完全在横平面内。

在柱坐标系中,波动方程的解可以表示为:

上式中,R(r) 是径向分布函数(贝塞尔函数),Φ(φ) 是方位角分布函数(三角函数),β是传播常数。

2. LP模式的命名与特性

LP模式用两个下标表示:LPlm

其中,

l:方位角模数(0, 1, 2, ...),表示方位角方向的波瓣数,它决定cos(lφ)或sin(lφ)的变化。

m:径向模数(1, 2, 3, ...),表示径向方向的极值点数量,它决定贝塞尔函数的根序号。

① LP₀ₘ模式(l=0):圆对称模式,无方位角变化。LP₀₁是基模,近似高斯分布。

②LPₗₘ模式(l>0):非圆对称模式,有2l个波瓣,有m-1个径向节线环。

3. LP模式的场分布

LP模式的电场分布可以表示为:

其中:

Jl是l阶贝塞尔函数;

Kl是l阶修正贝塞尔函数;

u = a√(k₀²n₁² - β²) 是横向相位常数;

w = a√(β² - k₀²n₂²) 是衰减常数;

a 是纤芯半径。

4. 光纤中LP模式的出现条件

在阶跃折射率光纤中,能够传输的LP模式由归一化频率V参数决定。

V参数的定义为:

上式中,a为纤芯半径,λ为工作波长,n1为纤芯折射率,n2为包层折射率,NA为光纤的数值孔径。

每个LPₗₘ模式都有其特定的截止V值,由贝塞尔函数的根决定。截止条件的一般表达式为:

其中Vc为模式的截止V值。

各模式的截止V值如下表所示:

LP模式

截止V值

数学来源

LP₀₁

0

基模,无截止

LP ₁₁

2.405

J0(x)的第一个根

LP₂₁

3.832

J1(x)的第一个根

LP₀₂

5.520

J0(x)的第二个根

LP₃₁

5.136

J2(x)的第一个根

LP₁₂

7.016

J1(x)的第二个根

对于阶跃折射率光纤,当V值较大时,能够支持的模式总数可近似估算为:

各个模式按照其截止V值从小到大依次出现,V值越大,光纤中能够支持传输的模式数量越多。

5. 单模光纤中的LP模式

单模光纤是指在一定工作条件下只能传输一个模式(基模LP₀₁)的光纤。其单模传输条件为:

即归一化频率V参数必须小于LP ₁₁模式的截止值2.405。当满足此条件时,所有高阶模式(LP₁₁、LP₂₁等)均被截止,只有LP₀₁模式能够传输。

LP₀₁模式近似高斯分布,模场直径略大于纤芯直径,在截止波长附近,模场直径会增大。

6. 用Python仿真LP模式图像

附录1:LP模式的Python代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.special import jv, jn_zeros
from matplotlib.colors import LinearSegmentedColormap

# 
创建红蓝颜色映射
cmap = LinearSegmentedColormap.from_list('red_blue', ['darkblue', 'blue', 'white', 'red', 'darkred'])

# 
设置图形大小和布局
fig, axes = plt.subplots(8, 4, figsize=(12, 20))
plt.subplots_adjust(wspace=0.1, hspace=0.2)

# 
创建极坐标网格
r = np.linspace(0, 1, 200)
theta = np.linspace(0, 2 * np.pi, 200)
R, Theta = np.meshgrid(r, theta)

# 
对于每个LP模式计算电场分布并绘图
for l in range(8):  # 方位指数 l: 0-7
    
for m in range(1, 5):  # 径向指数 m: 1-4
        
ax = axes[7 - l, m - 1]  # 从下到上排列

        # 
计算LP模式的电场分布
        
if l == 0 and m == 1:
            # LP01
模式 - 使用高斯近似
            # 
高斯光束的场分布: exp(-(r/w0)^2)
            
w0 = 0.6  # 光束腰斑半径
            
E = np.exp(-(R / w0) ** 2)
        else:
            # 
其他模式使用贝塞尔函数
            # 
计算贝塞尔函数的根
            
if l == 0:
                roots = jn_zeros(0, 4)  # J0
的根
            
else:
                roots = jn_zeros(l, 4)  # Jl
的根

            
if m <= len(roots):
                u_lm = roots[m - 1]
                # LP
模式电场分布: J_l(u_lm * r) * cos(l * theta)
                
E = jv(l, u_lm * R) * np.cos(l * Theta)
            else:
                E = np.zeros_like(R)

        # 
转换为直角坐标用于绘图
        
X = R * np.cos(Theta)
        Y = R * np.sin(Theta)

        # 
绘制模式图案
        
im = ax.pcolormesh(X, Y, E, cmap=cmap, shading='auto', vmin=-1, vmax=1)
        ax.set_aspect('equal')
        ax.set_xticks([])
        ax.set_yticks([])
        ax.set_frame_on(False)

        # 
添加模式标签
        
ax.set_title(f'LP$_{{{l}{m}}}$', fontsize=12, pad=10)

# 
添加坐标轴标签
fig.text(0.5, 0.04, 'Radial mode number (m)', ha='center', va='center', fontsize=14)
fig.text(0.06, 0.5, 'Azimuthal mode number (l)', ha='center', va='center', rotation='vertical', fontsize=14)

# 
添加行标签(l值)
for i, l_val in enumerate(range(7, -1, -1)):  # 从7递减到0
    
fig.text(0.01, 0.85 - i * 0.1, str(l_val), ha='center', va='center', fontsize=12)

# 
添加列标签(m值)
for m in range(1, 5):
    fig.text(0.125 + (m - 1) * 0.25, 0.96, str(m), ha='center', va='center', fontsize=12)

plt.suptitle('LP Modes in Optical Fiber', fontsize=16, y=0.98)
plt.savefig('lp_modes_corrected.png', dpi=300, bbox_inches='tight')
plt.show()

附录2:归一化频率V参数中2.405的由来

归一化频率V参数中的截止值2.405来源于零阶贝塞尔函数J0(x)的第一个根,这个数值在光纤模式理论中具有重要的物理意义。

数学推导:

在阶跃折射率光纤的模式分析中,特征方程的解与贝塞尔函数的根密切相关。

对于LPₗₘ模式,其截止条件由以下方程决定:

其中Vc是模式的截止归一化频率。

对于LP₁₁模式(这是基模LP₀₁之后的第一个高阶模式),我们有l=1,因此截止条件为:

零阶贝塞尔函数J0(x)的第一个非零根正是:

这个值通常近似为2.405。

当V < 2.405时,光纤中只能支持LP₀₁模式(基模)传输;当V > 2.405时,LP₁₁模式开始出现,光纤进入多模传输区域。光纤设计者使用这个值来确定单模光纤的纤芯直径和数值孔径。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/187118