欢迎光临
我们一直在努力

阶跃光纤和变折射率光纤有何区别?基于pyMMF仿真

文章目录

    • 初始化
    • 模式估计
    • 自定义光纤

初始化

pyMMF中提供了阶跃(Step-Index, SI)光纤和抛物线渐变折射率(Gradient-Index Fiber, GRIN)光纤的模型,前者的纤芯折射率为常数,后者则不然,纤芯折射率随着径向发生变化

n

(

r

)

=

n

1

1

(

r

a

)

2

n(r)=n_1\\sqrt{1-(\\frac{r}{a})^2}

n(r)=n11(ar)2

【IndexProfile】是用于表示光线折射率剖面的类,其初始化函数分别是网格划分的格点数npoints和仿真尺寸areaSize。在确定剖面的仿真信息之后,即可初始化光纤,两种不同折射率模型对应的初始化方法为

  • 【initParabolicGRIN】GRIN光纤初始化方法
  • 【initStepIndex】SI光纤初始化方法

二者输入参数均包含纤芯折射率n1,半径a和数值孔径NA。在GRIN光纤中,还有一个参数alpha,表示折射率变化的抛物线参数,默认2.0。初始化后,这两种类型的光纤剖面折射率分布差异如下

在这里插入图片描述

import pyMMF
import matplotlib.pyplot as plt

grin = pyMMF.IndexProfile(256, 30)
grin.initParabolicGRIN(1.45, 7, 0.2)

si = pyMMF.IndexProfile(256, 30)
si.initStepIndex(1.45, 7, 0.2)

plt.subplot(121)
plt.title("GRIN")
plt.imshow(grin.n.reshape(256, 256), cmap='jet', extent=[15, 15, 15, 15])

plt.subplot(122)
plt.title("SI")
plt.imshow(si.n.reshape(256, 256), cmap='jet', extent=[15, 15, 15, 15])
plt.show()

【n】即为IndexProfile中的折射率分布情况,但默认以一维数组的形式存储。

模式估计

在GRIN和SI光纤中,由于折射率分布不同,其能容纳的模式数也不相同。记归一化频率

V

=

2

π

a

λ

NA

V=\\frac{2\\pi a}{\\lambda}\\operatorname{NA}

V=λ2πaNA,则SI和GRIN光纤中的模式估算公式分别为

V

2

2

\\frac{V^2}{2}

2V2

V

2

4

\\frac{V^2}{4}

4V2

pyMMF中提供了这两种光纤的模式估计函数

  • 【estimateNumModesGRIN】
  • 【estimateNumModesSI】

二者输入参数均为输入参数为波长wl、半径a、数值孔径NA以及偏振标志pola。测试结果如下

pyMMF.estimateNumModesGRIN(0.633, 7, 0.2)
# 25
pyMMF.estimateNumModesSI(0.633, 7, 0.2)
# 49

自定义光纤

【initFromRadialFunction】可通过自定义函数来初始化轴对称折射率剖面,其输入参数是一个以

r

r

r为自变量的函数,例如

  • SI光纤等效于 lambda r : n1 if r<=a else n2
  • GRIN光纤等效于 lambda r : n2 if r>a else n1 * np.sqrt(1 – (NA / n1 * r / a)**2)

G.657光纤是一种抗弯曲单模光纤,通过下陷包层来增强模场约束,其具体的折射率结构曾W形态

  • 纤芯:

    n

    1

    n_1

    n1

  • 内包层:

    n

    3

    <

    n

    2

    n_3<n_2

    n3<n2

  • 外包层:

    n

    2

    n_2

    n2

其折射率分布为

在这里插入图片描述

def n_W_profile(r, n1=1.468, n2=1.444, n3=1.430, a1=4.5, a2=9.0):
if r <= a1:
return n1 # 纤芯
elif r <= a2:
return n3 # 下陷包层
else:
return n2 # 外包层

profile = pyMMF.IndexProfile(npoints=256, areaSize=40)
profile.initFromRadialFunction(n_W_profile)

plt.imshow(profile.n.reshape(256,256), cmap='jet', extent=[20,20,20,20])
plt.colorbar(label='n')
plt.show()

赞(0)
未经允许不得转载:171主机测评 » 阶跃光纤和变折射率光纤有何区别?基于pyMMF仿真
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址