利用传输矩阵法求解布拉格光栅的透射谱

采用传输矩阵法(TMM)计算具有任意折射率分布光栅结构的透射谱,TMM法描述如下:

  1. 能够计算折射率呈阶梯状分布的波导的反射和透射率,以及波导的传播常数。
  2. 在单模波导中,计算反射和透射率采用2×2的矩阵表示。
  3. 为了表示光栅(多个折射率突变界面),将矩阵乘成级联网络,
  4. 能够计算光栅针对每个波长的透射值和反射值。

1、均匀波导的传输矩阵

​ 传输矩阵定义如下:
[A1B1]=[T11T12T11T12][A2B2]\left[ \begin{matrix} A_1 \\ B_1 \\ \end{matrix}\right] = \left[ \begin{matrix} T_{11} & T_{12} \\ T_{11} & T_{12} \\ \end{matrix}\right] \left[ \begin{matrix} A_2 \\ B_2 \\ \end{matrix}\right] [A1​B1​​]=[T11​T11​​T12​T12​​][A2​B2​​]

传递矩阵的概念类似于散射参数矩阵,波导的均匀截面如图(a)所示的传输矩阵如下:
Thw=[ejβL00e−jβL]T_{hw}= \left[ \begin{matrix} e^{j\beta L} & 0 \\ 0 & e^{-j\beta L} \\ \end{matrix}\right] Thw​=[ejβL0​0e−jβL​]
其中,β为场的复传播常数,包括折射率和传播损耗:
β=2πneffλ−iα2\beta = \frac{2\pi n_{eff}}{\lambda}-i\frac{\alpha}{2} β=λ2πneff​​−i2α​
计算均匀波导的传输矩阵法其MATLAB代码如下:

function T_hw=TMM_HomoWG_Matrix(wavelength,l,neff,loss)
% Calculate the transfer matrix of a homogeneous waveguide.
% Complex propagation constant
beta=2*pi*neff./wavelength-1i*loss/2;
T_hw=zeros(2,2,length(neff));
T_hw(1,1,:)=exp(1i*beta*l);
T_hw(2,2,:)=exp(-1i*beta*l);

2、折射率呈阶梯状分布的波导

折射率呈阶梯状分布的波导的传递矩阵,如图b所示,为
Tis−12=[1/tr/tr/t1/t]=[n1+n22n1n2n1−n22n1n2n1−n22n1n2n1+n22n1n2]T_{is-12}= \left[ \begin{matrix} 1/t & r/t \\ r/t & 1/t \\ \end{matrix}\right]= \left[ \begin{matrix} \frac{n_1+n_2}{2\sqrt{n_1 n_2}} & \frac{n_1-n_2}{2\sqrt{n_1 n_2}} \\ \frac{n_1-n_2}{2\sqrt{n_1 n_2}} & \frac{n_1+n_2}{2\sqrt{n_1 n_2}} \\ \end{matrix}\right] Tis−12​=[1/tr/t​r/t1/t​]=[2n1​n2​​n1​+n2​​2n1​n2​​n1​−n2​​​2n1​n2​​n1​−n2​​2n1​n2​​n1​+n2​​​]
其中r和t是基于菲涅耳系数的反射率和透射率。计算折射率呈阶梯状分布的波导界面的传输矩阵的MATLAB代码如下:

function T_is=TMM_IndexStep_Matrix(n1,n2)
% Calculate the transfer matrix for a index step from n1 to n2.
T_is=zeros(2,2,length(n1));
a=(n1+n2)./(2*sqrt(n1.*n2));
b=(n1-n2)./(2*sqrt(n1.*n2));
%T_is=[a b; b a];
T_is(1,1,:)=a; T_is(1,2,:)=b;
T_is(2,1,:)=b; T_is(2,2,:)=a;

3、布拉格光栅及反射和透射率

表述布拉格光栅的级联矩阵如下:
Tp=Ttw−2Tis−21Thw−1Tis−12T_p=T_{tw-2}T_{is-21}T_{hw-1}T_{is-12} Tp​=Ttw−2​Tis−21​Thw−1​Tis−12​
其中下标1和2表示低和高折射率的区域。然后构造有N个周期的均匀布拉格光栅:
Tp=(Ttw−2Tis−21Thw−1Tis−12)NT_p=(T_{tw-2}T_{is-21}T_{hw-1}T_{is-12})^N Tp​=(Ttw−2​Tis−21​Thw−1​Tis−12​)N
考虑了相移均匀布拉格光栅,即带有两个布拉格光栅反射器的一级FP腔,传递矩阵如下:
T=[(Tp)N]Thw−2[(Tp)N]Thw−2T=[(T_p)^N]T_{hw-2}[(T_p)^N]T_{hw-2} T=[(Tp​)N]Thw−2​[(Tp​)N]Thw−2​
计算由波导截面和材料界面组成的波导布拉格光栅腔的传输矩阵MATLAB代码如下:

function T=TMM_Grating_Matrix(wavelength, Period, NG, n1, n2, loss)
% Calculate the total transfer matrix of the gratings
l=Period/2;
T_hw1=TMM_HomoWG_Matrix(wavelength,l,n1,loss);
T_is12=TMM_IndexStep_Matrix(n1,n2);
T_hw2=TMM_HomoWG_Matrix(wavelength,l,n2,loss);
T_is21=TMM_IndexStep_Matrix(n2,n1);
q=length(wavelength);
Tp=zeros(2,2,q); T=Tp;
for i=1:length(wavelength)Tp(:,:,i)=T_hw2(:,:,i)*T_is21(:,:,i)*T_hw1(:,:,i)*T_is12(:,:,i);T(:,:,i)=Tp(:,:,i)^NG; % 1st order uniform Bragg grating% for an FP cavity, 1st order cavity, insert a high index region, n2.T(:,:,i)=Tp(:,:,i)^NG * (T_hw2(:,:,i))^1 * Tp(:,:,i)^NG * T_hw2(:,:,i);
end

我们将光栅以折射率为n2的部分作为开始和结束。相移区域是采用高折射率材料n2来实现的。最后,生成透射T和反射R谱。通过对波长点的一维矩阵进行了计算。计算光栅的反射和透射率MATLAB代码如下:

function [R,T]=TMM_Grating_RT(wavelength, Period, NG, n1, n2, loss)
%Calculate the R and T versus wavelength
M=TMM_Grating_Matrix(wavelength, Period, NG, n1, n2, loss);
q=length(wavelength);
T=abs(ones(q,1)./squeeze(M(1,1,:))).^2;
R=abs(squeeze(M(2,1,:))./squeeze(M(1,1,:))).^2;

4、光栅物理结构设计

接下来将物理结构(波导几何形状)与有效折射率联系起来。输出波导部分为500×220 nm的条形波导和氧化物包层组成,其中波导宽度发生变化构成了光栅。

使用本征模计算光栅段的有效折射率,通过计算了波导与波长和波导宽度之间的有效折射率,然后对其进行参数化。数据可以通过曲线拟合为两个函数:
neff−λ(λ)=a0−a1(λ−λ0)−a2(λ−λ0)2neff−w(w)=a0−a1(w−w0)−a2(w−w0)2n_{eff-\lambda}(\lambda)=a_0-a_1(\lambda-\lambda_0)-a_2(\lambda-\lambda_0)^2\\ n_{eff-w}(w)=a_0-a_1(w-w_0)-a_2(w-w_0)^2 neff−λ​(λ)=a0​−a1​(λ−λ0​)−a2​(λ−λ0​)2neff−w​(w)=a0​−a1​(w−w0​)−a2​(w−w0​)2
其中,lambda的单位值微米,w为µm中的波导的宽度,neff (w)为给定波导宽度w下的有效折射率相对于其在λ0处的值的偏差。

定义光栅的物理参数,并画出频谱的MATLAB代码:

function Grating
%This file is used to plot the reflection/transmission spectrum.
% Grating Parameters
Period=310e-9; % Bragg period
NG=200; % Number of grating periods
L=NG*Period; % Grating length
width0=0.5; % mean waveguide width
dwidth=0.01; % +/- waveguide width
width1=width0 - dwidth;
width2=width0 + dwidth;
loss_dBcm=3; % waveguide loss, dB/cm
loss=log(10)*loss_dBcm/10*100;
% Simulation Parameters:
span=30e-9; % Set the wavelength span for the simultion
Npoints = 10000;
% from MODE calculations
switch 1
case 1 % Strip waveguide; 500x220 nm
neff_wavelength = @(w) 2.4379 - 1.1193 * (w*1e6-1.554) - 0.0350 * (w*1e6-1.554).^2;
% 500x220 oxide strip waveguide
dneff_width = @(w) 10.4285*(w-0.5).^3 - 5.2487*(w-0.5).^2 + 1.6142*(w-0.5);
end
% Find Bragg wavelength using lambda_Bragg = Period * 2neff(lambda_bragg);
% Assume neff is for the average waveguide width.
f = @(lambda) lambda - Period*2*(neff_wavelength(lambda)+(dneff_width(width2)+dneff_width(width1))/2);
wavelength0 = fzero(f,1550e-9);
wavelengths=wavelength0 + linspace(-span/2, span/2, Npoints);
n1=neff_wavelength(wavelengths)+dneff_width(width1); % low index
n2=neff_wavelength(wavelengths)+dneff_width(width2); % high index
[R,T]=TMM_Grating_RT(wavelengths, Period, NG, n1, n2, loss);figure;
plot (wavelengths*1e6,[R, T],'LineWidth',3); hold all
plot ([wavelength0, wavelength0]*1e6, [0,1],'--'); % calculated bragg wavelength
xlabel('Wavelength [\mum]')
ylabel('Response');
axis tight;

计算结果如下图所示:

5、Lumerical求解

通过Lumerial的FDTD求解光栅透射率代码如下:

###############################################
# script file: Bragg_FDTD.lsf
#
# Create and simulate a basic Bragg grating
# Copyright 2014 Lumerical Solutions
###############################################
# DESIGN PARAMETERS
###############################################
thick_Si = 0.22e-6;
thick_BOX = 2e-6;
width_ridge = 0.5e-6; # Waveguide width
Delta_W = 50e-9; # Corrugation width
L_pd = 324e-9; # Grating period
N_gt = 280; # Number of grating periods
L_gt = N_gt*L_pd;# Grating length
W_ox = 3e-6; L_ex = 5e-6; # simulation size margins
L_total = L_gt+2*L_ex;
material_Si = ’Si (Silicon) - Dispersive & Lossless’;
material_BOX = ’SiO2 (Glass) - Const’;
# Constant index materials lead to more stable simulations
# DRAW
###############################################
newproject; switchtolayout;
materials;
# Oxide Substrate
addrect;
set(’x min’,-L_ex); set(’x max’,L_gt+L_ex);
set(’y’,0e-6); set(’y span’,W_ox);
set(’z min’,-thick_BOX); set(’z max’,-thick_Si/2);
set(’material’,material_BOX);
set(’name’,’oxide’);
# Input Waveguide
addrect;
set(’x min’,-L_ex); set(’x max’,0);
set(’y’,0); set(’y span’,width_ridge);
set(’z’,0); set(’z span’,thick_Si);
set(’material’,material_Si);
set(’name’,’input_wg’);
# Bragg Gratings
addrect;
set(’x min’,0); set(’x max’,L_pd/2);
set(’y’,0); set(’y span’,width_ridge+Delta_W);
set(’z’,0); set(’z span’,thick_Si);
set(’material’,material_Si);
set(’name’,’grt_big’);addrect;
set(’x min’,L_pd/2); set(’x max’,L_pd);
set(’y’,0); set(’y span’,width_ridge-Delta_W);
set(’z’,0); set(’z span’,thick_Si);
set(’material’,material_Si);
set(’name’,’grt_small’);selectpartial(’grt’);
addtogroup(’grt_cell’);
select(’grt_cell’);
redrawoff;
for (i=1:N_gt-1) {copy(L_pd);
}
selectpartial(’grt_cell’);
addtogroup(’bragg’);
redrawon;# Output WG
addrect;
set(’x min’,L_gt); set(’x max’,L_gt+L_ex);
set(’y’,0); set(’y span’,width_ridge);
set(’z’,0); set(’z span’,thick_Si);
set(’material’,material_Si);
set(’name’,’output_wg’);# SIMULATION SETUP
###############################################
lambda_min = 1.5e-6;
lambda_max = 1.6e-6;
freq_points = 101;
sim_time = 6000e-15;
Mesh_level = 2;
mesh_override_dx = 40.5e-9; # needs to be an integer multiple of the period
mesh_override_dy = 50e-9;
mesh_override_dz = 20e-9;# FDTD
addfdtd;
set(’dimension’,’3D’);
set(’simulation time’,sim_time);
set(’x min’,-L_ex+1e-6); set(’x max’,L_gt+L_ex-1e-6);
158 Fundamental building blocks
set(’y’, 0e-6); set(’y span’,2e-6);
set(’z’,0); set(’z span’,1.8e-6);
set(’mesh accuracy’,Mesh_level);
set(’x min bc’,’PML’); set(’x max bc’,’PML’);
set(’y min bc’,’PML’); set(’y max bc’,’PML’);
set(’z min bc’,’PML’); set(’z max bc’,’PML’);#add symmetry planes to reduce the simulation time
#set(’y min bc’,’Anti-Symmetric’); set(’force symmetric y mesh’, 1);
# Mesh Override
if (1){addmesh;
set(’x min’,0e-6); set(’x max’,L_gt);
set(’y’,0); set(’y span’,width_ridge+Delta_W);
set(’z’,0); set(’z span’,thick_Si+2*mesh_override_dz);
set(’dx’,mesh_override_dx);
set(’dy’,mesh_override_dy);
set(’dz’,mesh_override_dz);
}# MODE Source
addmode;
set(’injection axis’,’x-axis’);
set(’mode selection’,’fundamental mode’);
set(’x’,-2e-6);
set(’y’,0); set(’y span’,2.5e-6);
set(’z’,0); set(’z span’,2e-6);
set(’wavelength start’,lambda_min);
set(’wavelength stop’,lambda_max);# Time Monitors
addtime;
set(’name’,’tmonitor_r’);
set(’monitor type’,’point’);
set(’x’,-3e-6); set(’y’,0); set(’z’,0);
addtime;
set(’name’,’tmonitor_m’);
set(’monitor type’,’point’);
set(’x’,L_gt/2); set(’y’,0); set(’z’,0);
addtime;
set(’name’,’tmonitor_t’);
set(’monitor type’,’point’);
set(’x’,L_gt+3e-6); set(’y’,0); set(’z’,0);# Frequency Monitors
addpower;
set(’name’,’t’);
set(’monitor type’,’2D X-normal’);
set(’x’,L_gt+2.5e-6);
set(’y’,0); set(’y span’,2.5e-6);
set(’z’,0); set(’z span’,2e-6);
set(’override global monitor settings’,1);
set(’use source limits’,1);
set(’use linear wavelength spacing’,1);
set(’frequency points’,freq_points);
addpower;
set(’name’,’r’);
set(’monitor type’,’2D X-normal’);
set(’x’,-2.5e-6);
set(’y’,0); set(’y span’,2.5e-6);
set(’z’,0); set(’z span’,2e-6);
set(’override global monitor settings’,1);
set(’use source limits’,1);
set(’use linear wavelength spacing’,1);
set(’frequency points’,freq_points);#Top-view electric field profile
if (0) {addprofile;
References 159
set(’name’,’field’);
set(’monitor type’,’2D Z-normal’);
set(’x min’,-2e-6); set(’x max’,L_gt+2e-6);
set(’y’, 0); set(’y span’,1.2e-6);
set(’z’, 0);
set(’override global monitor settings’,1);
set(’use source limits’,1);
set(’use linear wavelength spacing’,1);
set(’frequency points’,21);
}# SAVE AND RUN
###############################################
save(’Bragg_FDTD’);
run;
# Analysis
###############################################
transmission_sim=transmission(’t’);
reflection_sim=transmission(’r’);
wavelength_sim=3e8/getdata(’t’,’f’);
plot(wavelength_sim*1e9, 10*log10(transmission_sim),10*log10(abs(reflection_sim)),’wavelength (nm)’, ’response’);
legend(’T’,’R’);
matlabsave(’Bragg_FDTD’);

利用传输矩阵法求解布拉格光栅的透射谱相关推荐

  1. matlab可视化大学物理学_传输矩阵法在大学物理波动光学教学中的应用

    1 提出问题 在现代光学技术中,从基本的光学元件增反膜和增透膜[1],到超快光路中用来补偿飞秒激光色散的啁啾镜,以及半导体微腔领域中广泛使用的分布式布拉格反射器(DBR)[2],这些光学元件基本的特征 ...

  2. 如何利用扩展欧几里得算法求解不定方程_欧几里德算法、拓展欧几里德、中国剩余定理...

    01.欧几里德算法(Euclidean algorithm)(辗转相除法) 欧几里德算法又称辗转相除法,主要是用于计算两个整数a,b的最大公约数. 简单点说一下算法原理:两个整数的最大公约数等于其中小 ...

  3. 如何利用扩展欧几里得算法求解不定方程_客户端不用的算法系列:从头条笔试题认识扩展欧几里得算法...

    难度较高,阅读时间大概 28 分钟 这是数论的第二篇,在<素数筛法>中,我们重温了素数这个数学定义,并且给出了区别于教科书上更高效的 Eratosthenes 筛法和欧拉线性筛.这篇文会从 ...

  4. 偏振器件传输矩阵matlab编程,关于传输矩阵法模拟光子晶体的MATLAB编程

    clear %  基础数据 [lambda,L,o1]=textread('C:\Users\Administrator\Desktop\TOZLM\SiO2_refr1_imag0.txt','%n ...

  5. LU分解完成利用节点电压法的简易电路求解程序(二)

    上一篇博客中我们回顾了LU分解,分析了一个简单的电路并观察到 电导矩阵中的对角线项为节点相连的电导之和,非对角线项等于两个节点之间电导的相反数 与 电流项为独立电流源流入节点与流出节点电流代数和,其中 ...

  6. matlab光波耦合光栅,均匀布拉格光栅的原理及MATLAB反射谱仿真

    精品文档 . 1欢迎下载 均匀布拉格光栅的原理及MATLAB 反射谱仿真 张睿 一. 前言 光纤光栅是纤芯折射率受到周期性微扰而形成的一种全光纤无源器件,自问世以来,由 于其与光纤通信系统兼容.体积小 ...

  7. matlab仿真插入损耗,均匀布拉格光栅的原理及MATLAB反射谱仿真

    包含MATLAB源程序! MATLAB反射谱仿真 张睿 一. 前言 光纤光栅是纤芯折射率受到周期性微扰而形成的一种全光纤无源器件,自问世以来,由 于其与光纤通信系统兼容.体积小.插入损耗低.结构简单. ...

  8. 均匀布拉格光栅MATLAB反射谱仿真

    1 简介 光纤光栅是纤芯折射率受到周期性微扰而形成的一种全光纤无源器件,自问世以来,由 于其与光纤通信系统兼容.体积小.插入损耗低.结构简单.成本低等等,广泛应用于光纤通信.光纤传感.光信息处理等领域 ...

  9. 动力学矩阵法计算石墨烯声子谱

    上个学期,学习固体物理,老师让写一个程序来计算石墨烯的声子谱和振动的态密度进行画图.大二的假期里自学了Python但是没有实际自己写过,决定用Python代码来实现这个任务(最重要的是自己能力不行,c ...

  10. 简单迭代法、牛顿法、弦割法、布洛依登法求解方程或方程组【Matlab】

    利用迭代法求解定非线性方程及方程组,使得误差不超过10^(-8).同时应用迭代加速技术,提交迭代运算效率. 此题需要用到的MATLAB代码及附录: 附录6 二分法作根的隔离 % 附录6 二分法作根的隔 ...

最新文章

  1. Android Studio 三种添加插件的方式,androidstudio
  2. 微信公众平台消息接口开发(2)-封装weixin.class.php
  3. 第一季6:海思方案中uboot、kernel和rootfs的烧写方法
  4. 想要 24 小时自学编程,那是不可能的,先自学 10000 小时再说!
  5. python在线学习pdf_扣丁学堂Python在线学习之将pdf转成图片的方法
  6. ofd 文件发票解析
  7. tcp 压力 测试 软件,强大的TcpServer压力测试工具及源码(附突破连接限制的方法和工具)...
  8. autosar 与osek 的nm
  9. android点九切图,点九图切图规范
  10. python输入单词显示长度_Python按长度打印单词
  11. 前端工程师如何提升能力 提高效率有哪些方法
  12. Typecho Fancybox 给文章图片添加灯箱效果
  13. SOC架构主要做什么?
  14. Markdown中表格中内容换行、左对齐等基本操作
  15. 生鲜配送公司面临的几大痛点,你知道多少?
  16. 2021最新 RocketMQ面试题精选(附刷题小程序)
  17. 解决Chrome和Chrome内核edge浏览器在启用硬件加速后颜色异常的问题
  18. 一键分享到新浪微博、腾讯微博、搜狐微博、人人网、开心网、百度收藏等js代码大全...
  19. 领英进阶技巧-google和LinkedIn结合
  20. 中小型企业优选的免费OA品牌

热门文章

  1. 工赋开发者社区 | 抛弃 Google,Debian 改将 DuckDuckGo 作为默认搜索引擎
  2. 应用程序错误,如何解决?急
  3. Python实现视频流媒体传输
  4. 二、azkaban 指南
  5. 欧洲杯赛场“中国元素”引观众热议;万达两家酒店在延安红街开业窑洞房最具特色 | 美通社头条...
  6. 双绞线接法详解双绞线的标准的由来与分析
  7. kaldi或者eesen中错误:ERROR (compute-fbank-feats:Read():wave-reader.cc:198
  8. [生存志] 第92节 纵横游说之辞
  9. php 批量下载网页文件,批量下载文件(以xxx网站为例)
  10. 2021年黄石二中高考成绩查询,【黄石二中2018高考金榜】黄石二中2004届高考总结...