使用lumerical脚本语言创建绘制波导并进行数据分析(纯代码实现)(1)

发布于:2024-12-06 ⋅ 阅读:(97) ⋅ 点赞:(0)

        使用lumerical脚本语言创建绘制波导、配置二维模式求解器、计算模式轮廓、计算有效折射率(neff)和群折射率(ng)随波长的变化关系、计算有效折射率(neff)随波导宽度的变化关系及针对有效折射率法进行相关数据处理(代码均有注释详解)。

一、绘制波导结构

1.1 代码实现

wg_2D_draw

#按照设定的参数依次绘制波导结构中的各个部分,如包层、埋氧层、硅晶圆、波导本身
#以及肋形波导所需的平板层等

#用于在 Lumerical MODE 软件中初始化新的模式或项目,并关闭重绘功能
#为了提高性能或避免不必要的图形更新,直到所有设置完成后再统一显示图形
newmode; newmode; redrawoff;

#分别定义了包层、硅层、埋氧层的厚度
thick_Clad = 2.0e-6;
thick_Si = 0.22e-6;
thick_BOX = 2.0e-6;
#用于定义肋形波导中平板层的厚度,初始设置为 0 表示当前考虑的是条形波导,
#若改为其他值(如0.22e-6)则可用于模拟肋形波导。
thick_Slab = 0; # for strip waveguides
# thick_Slab = 0.13e-6; # for rib waveguides
width_ridge = 0.5e-6; 
# 定义 materials
material_Clad = "SiO2 (Glass) - Const";
material_BOX = "SiO2 (Glass) - Const";
material_Si = "Si (Silicon) - Dispersive & Lossless";
materials; # 运行脚本 add materials
 
width_margin = 2.0e-6; # space to include on the side of the waveguide
height_margin = 1.0e-6; # space to include above and below the waveguide
# calculate simulation volume
# propagation in the x-axis direction; z-axis is wafer-normal
#确定了模拟区域的范围
Xmin = -2e-6; Xmax = 2e-6; # length of the waveguide
#其中 Zmin 是在硅层下方预留一定空间(-height_margin),Zmax 是在硅层
#上方预留一定空间(thick_Si + height_margin)
Zmin = -height_margin; Zmax = thick_Si + height_margin;
Y_span = 2*width_margin + width_ridge; Ymin = -Y_span/2;
Ymax = -Ymin;

#绘制包层
addrect; set("name","Clad"); set("material", material_Clad);
set("y", 0); set("y span", Y_span+1e-6);
set("z min", 0); set("z max", thick_Clad);
set("x min", Xmin); set("x max", Xmax);
#关于网格划分顺序的操作,将包层的网格划分顺序设置为类似 “置于底层” 的效果,使其作为背景显示
set("override mesh order from material database",1);
set("mesh order",3); 
set("alpha", 0.05);

#绘制埋氧层
# draw buried oxide
addrect; set("name", "BOX"); set("material", material_BOX);
set("x min", Xmin); set("x max", Xmax);
set("z min", -thick_BOX); set("z max", 0);
set("y", 0); set("y span", Y_span+1e-6);
set("alpha", 0.05);

#绘制硅晶圆
# draw silicon wafer
addrect; set("name", "Wafer"); set("material", material_Si);
set("x min", Xmin); set("x max", Xmax);
set("z max", -thick_BOX); set("z min", -thick_BOX-2e-6);
set("y", 0); set("y span", Y_span+1e-6);
set("alpha", 0.1);


# draw waveguide
addrect; set("name", "waveguide");
set("material",material_Si);
set("y", 0); set("y span", width_ridge);
set("z min", 0); set("z max", thick_Si);
set("x min", Xmin); set("x max", Xmax);

#绘制肋形波导平板层
# draw slab for rib waveguides
addrect; set("name", "slab"); set("material",material_Si);
#如果 thick_Slab 为 0(表示当前是条形波导),则将其在 y 轴方向上的
#范围设置为一个点(即 y min 和 y max 都为 0);如果 thick_Slab 不为 0
#(表示是肋形波导),则设置其在 y 轴方向上的范围为整个模拟区域在 y 轴方向上
#的跨度(y span),同时设置其在 z 轴方向上的范围根据 thick_Slab 的值确定,
#最后设置其透明度为 0.2。
if (thick_Slab==0) {
set("y min", 0); set("y max", 0);
} else {
set("y", 0); set("y span", Y_span+1e-6);
}
set("z min", 0); set("z max", thick_Slab);
set("x min", Xmin); set("x max", Xmax);
set("alpha", 0.2);

1.2 知识讲解

(1)肋型波导与条形波导

① 结构形状

  • 肋型波导:是在波导板顶部具有肋形截面的波导,通常由一个较宽的平板波导和在其表面上形成的一条或多条肋条构成,肋条的高度和宽度相对较小,用于限制和引导光的传播。
  • 条形波导:具有矩形横截面的波导,其形状类似于一个长条状的矩形通道,光在这个矩形的芯层中传播,芯层周围是包层材料。

② 制造工艺

  • 肋型波导:制造工艺相对复杂一些,需要先制作平板波导,然后再通过光刻、蚀刻等工艺在平板波导上形成肋条结构。例如在硅基材料上,先沉积一层二氧化硅作为下包层,再沉积一层硅作为平板波导层,最后通过光刻和蚀刻工艺制作出肋条 。
  • 条形波导:制造工艺相对简单直接,通常

网站公告

今日签到

点亮在社区的每一天
去签到