Polarization converter using a tapered waveguide
在本主题中,我们将演示如何根据参考文献 [1] 设计偏振转换器。 我们将从 MODE 的有限差分本征模 (FDE) 求解器开始,以在使用本征模扩展 (EME) 求解器运行整个设备的完整仿真之前快速缩小设计选择范围。
一、使用 FDE 进行初始设计
偏振转换器的设计基于参考文献[1]。对于此设计,在使用 EME 求解器运行整个设备的完整仿真之前,启动 FDE 求解器以快速缩小设计选择(在这种情况下改变波导宽度)非常有用。对于偏振转换器,FDE 求解器可用于识别模式交叉发生的区域。该设计将 TE1 模式转换为 TM0 模式,其中模式交叉发生在 0.9um 左右。
打开taper_width_sweep.lms 并运行taper_width_sweep.lsf。该脚本将运行许多 FDE 模拟,将波导宽度从 3um 改变到 0.5um。在每一步,将存储前 5 种模式的有效折射率( n e f f n_{eff} neff)。波导的 n e f f n_{eff} neff值减去平板slab模式(没有脊ridge)的值。模拟完成后,脚本将创建下图,可用于识别发生模式交叉的区域以及实现偏振转换所需的波导宽度。对于使用 EME 求解器的后续仿真,我们将分别使用 1.5um 和 0.8um 的输入和输出波导宽度。
1.1 结构设置
打开文件taper_width_sweep.lms 显示如下
400nm厚,折射率设置依据。
初始的脊(ridge)宽为0.5um
substrate的折射率为1.445,slab和ridge的折射率为3.455
FDE求解器背景折射率为1.445
taper_width_sweep.lsf文件打开如下:
clear; cleardcard;
# 清除全局d-cards。 仅清除全局d-cards 。
# 本地 d-cards 同当前的模拟计算相关,只有从分析模式切换到设计模式时才可被清除
waveguide_width = linspace(3e-6,0.5e-6,21);
neff1 = matrix(length(waveguide_width));
neff2 = matrix(length(waveguide_width));
neff3 = matrix(length(waveguide_width));
neff4 = matrix(length(waveguide_width));
neff5 = matrix(length(waveguide_width));
slab_neff = 2.754047; # from a reference simulation without the ridge # 来自没有山脊的参考模拟
for (i=1:length(waveguide_width)){
# set geometry
switchtolayout;
setnamed('ridge','y span',waveguide_width(i));
findmodes;
# store top 5 modes for largest waveguide width
# since the mode order may change for different width
# 存储最大波导宽度的前 5 个模式
# 因为模式顺序可能会因不同的宽度而改变
if (i==1){
copydcard('mode1','TE0');
copydcard('mode2','TE1');
copydcard('mode3','TE2');
copydcard('mode4','TE3');
copydcard('mode5','TM0');
}
# store neff for modes at other waveguide width
# 为其他波导宽度的模式存储 neff
neff1(i) = real(getdata(bestoverlap('TE0'),'neff'))-slab_neff;
neff2(i) = real(getdata(bestoverlap('TE1'),'neff'))-slab_neff;
neff3(i) = real(getdata(bestoverlap('TE2'),'neff'))-slab_neff;
neff4(i) = real(getdata(bestoverlap('TE3'),'neff'))-slab_neff;
neff5(i) = real(getdata(bestoverlap('TM0'),'neff'))-slab_neff;
if (neff3(i) == neff1(i)){neff3(i) = 0;}
if (neff4(i) == neff2(i)){neff4(i) = 0;}
}
# plot in normalized units
plot(waveguide_width*1e6,neff1,neff2,neff3,neff4,neff5,'waveguide width (um)','delta_neff');
setplot('y min',0); setplot('y max',max(neff1));
legend('TE0','TE1','TE2','TE3','TM0');
bestoverlap
运行结果
二、使用 EME 进行长度扫描
我们将使用 EME 求解器模拟该设备中的光传播。模拟设置类似于光斑尺寸转换器入门示例。建议您在运行 pol_converter.lms 之前详细阅读入门示例。
pol_converter.lms 包含输入和输出脊波导,通过一个锥形连接,分别为 1.5um 和 0.8um 作为波导输入和输出。我们跟踪了 3 种模式,并注意到这些模式是根据它们的 neff 列出的,即 1.5um 波导宽度的 (TE0, TE1, TM0) 和 0.8um 波导宽度的 (TE0, TM0, TE1)。可以通过在上图中在特定波导宽度处绘制一条垂直线来可视化该顺序。我们将扫描这个锥度的长度并跟踪 TE1 模式转换为基本 TM 模式的效率。运行模拟以计算每个单元的模式。模拟完成后,使用 EME 分析窗口中的“Propagation sweep”小部件扫描从 5um 到 500um 的锥形长度(group span 2),然后单击“eme sweep”按钮。
单击“visualize eme sweep”将在可视化器中显示所有 S 参数元素 (6x6) 的结果。 S矩阵索引映射表可以用来查看哪个S元素映射到哪个端口。 由于有 2 个端口(每个端口有 3 种模式),S42、S52、S62 将分别给出从 TE1 到 TE0、TE1 到 TM0 和 TE1 到 TE1 的转换效率。 可以单击“Remove”按钮来保留感兴趣的属性。 然后在“Scalar operation”下拉列表中选择“Abs^2”。 在下图中,可以看到没有能量从 TE1 转移到 TE0。 在 250um 左右的锥度长度处,TE1 模式几乎完全转移到 TM0 模式。
EME 方法非常适合锥度设计,因为可以非常快速地扫描锥度长度,而无需重新计算任何模式。 不仅基于 FDTD 的方法所需的模拟时间随着锥形长度的平方而增加,而且由于数值网格色散,精度也会降低。
2.1 结构设置
端口都选的mode1
下载的文件可能有一些问题。仅选择了一个模式。需要重新选择。左侧Port1波导宽度为1.5um。观察neff与波导宽度的曲线图,当宽度为1.5um时,存在TE0、TE1、TM0三种模式,其有效折射率按从小到大排序。图中可粗估TE0有效折射率为0.37+2.75=3.12,TE1为3.02,TM0为2.92.
通过计算,其为前三个模式,并选择。
扫描出来的结果:
筛选后的结果:
参考文献
[1]D. Dai et al, “Mode conversion in tapered submicron silicon ridge optical waveguides”, Optics Express. Vol. 20, No. 12, 2012.