Lumerical中FDTD创建仿真基本脚本

本文详细介绍了使用FDTD方法创建基本的仿真脚本,包括创建长方体、圆柱体和任意形状结构,设置材料,调整结构优先级。接着,添加了不同类型的光源,如平面波、高斯光源和模式光源,并创建了FDTD仿真区域,定义了网格精度和边界条件。最后,添加了各种监视器,如频域场、功率监视器和模式展开监视器,以监控仿真结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FDTD创建仿真基本思路:
1.创建结构
2.添加光源
3.添加FDTD仿真区
4.添加所需的监视器

创建基本结构

1.调用add语句 2.命名 3.设置材料 4.确定xyz三个维度的尺寸

创建长方体

addrect; 
set("name","rectangle);
set("material","SiO2 (Glass) - Palik");
set("x",0);
set("x span",25e-6);
set("y",0);
set("y span",25e-6);
set("z max",0);
set("z min",-2e-6);

创建圆柱体

addcircle;
set("name","circle");
set("material","SiO2 (Glass) - Palik");
set("x",1e-6);
set("y",2e-6);
set("radius",5e-6);
set("z",0);
set("z span",10e-6);

创建任意结构poly

poly_parameter=[0,0;2,1;5,1;7,0];
addpoly; 																
set('name','poly');
set('material',"SiO2 (Glass) - Palik");
set("x",0);
set("y",0);
set('z',0);
set('z span',20e-6);
set("vertices",poly_parameter);

创建波导(可用于微环创建)

addwaveguide;
set("base width",600e-9);
set("base height",220e-9);
set("base angle",70);
pole = [0,0; 1,9; 6,9.8; 10,10]*1e-6;
set("poles",pole);
set("material","Si (Silicon) - Palik");

创建Pyramid(适用于梯形结构)

addpyramid;
set("name","Pyramid");
set("material","Si (Silicon) - Palik");
set("x",40e-6);
set("y",0e-6);
set("x span bottom",120e-6);
set("x span top",120e-6);
set("y span bottom",2e-6);
set("y span top",1e-6);
set('Z max',0.5e-6);
set('Z min',0);

修改结构优先级

set("override mesh order from material database",true);
set("mesh order",3);

添加光源

1.调用add语句 2.命名 3.设置入射方向 4.设置几何参数 5.设置波长

添加平面波光源

addplane;
set("injection axis","z");
set("direction","Forward");
set("x",0);
set("x span",25e-6);
set("y",0);
set("y span",25e-6);
set("z",-0.15e-6);
set("wavelength start",0.66e-6);
set("wavelength stop",0.66e-6);

添加高斯光源

addgaussian;
set("injection axis","z");
set("direction","backward");
set("x",0);
set("x span",2e-6);
set("y",0);
set("y span",5e-6);
set("z",10e-6);
set("use scalar approximation",1);
set("waist radius w0",0.5e-6);
set("distance from waist",-5e-6);

添加模式光源

addmode;                    # 模式光源
set("injection axis","x");
set("x",-1e-6);
set("y",thick_Si/2);
set("y span",1e-6);
set("z",0);
set("z span",3e-6);
set("wavelength start",1.26e-6);
set("wavelength stop",1.36e-6);

添加port光源

addport; 
set("name","port_in");                  # port_in
set("x",-radius-3e-6);                  # 设置Geometry属性
set("y",radius+gap+base_width);
set("y span",3e-6);
set("z",0);
set("z span",1e-6);

set("injection axis","x-axis");         # 设置Modal Properties属性
set("direction","Forward" );
set("mode selection","fundamental mode");

addport; 
set("name","port_through");                  # port_through  
set("x",radius+3e-6);                 
set("y",radius+gap+base_width);
set("y span",3e-6);
set("z",0);
set("z span",1e-6);

set("injection axis","x-axis");         
set("direction","Backward" );
set("mode selection","fundamental mode");

addport; 
set("name","port_drop_left");                      # port_drop_left     
set("x",-radius-3e-6);                 
set("y",-(radius+gap+base_width));
set("y span",3e-6);
set("z",0);
set("z span",1e-6);

set("injection axis","x-axis");         
set("direction","Forward" );
set("mode selection","fundamental mode");

addport; # add port
set("name","port_drop_right");                          # port_drop_right   
set("x",radius+3e-6);                 
set("y",-(radius+gap+base_width));
set("y span",3e-6);
set("z",0);
set("z span",1e-6);

set("injection axis","x-axis");         
set("direction","Backward" );
set("mode selection","fundamental mode");


select("FDTD::ports");                              # 选择一个port作为光源
set("source port","port_in");
set("source mode","mode 1");
setglobalmonitor("frequency points",500);           # 设置频率监测点数量
setglobalsource("wavelength start",1.53e-6);
setglobalsource("wavelength stop",1.57e-6);

添加FDTD

1.调用add语句 2.确定仿真维度 3.确定xyz维度空间大小 4.设置mesh精度和仿真时间
5.设置边界条件 6.设置PML模式(选用,一般默认)

创建仿真区FDTD

addfdtd;
set("dimension","3D"); # 3D仿真
set("x",0);
set("x span",25e-6);
set("y",0);
set("y span",25e-6);
set("z min",-0.3e-6);
set("z max",1.6e-6);
set('mesh accuracy',2);
set('simulation time',1000e-15); # 1000飞秒
set("allow symmetry on all boundaries",true); # 允许所有边界对称
set("x min bc","Anti-Symmetric"); # 设置边界条件
set("x max bc","PML");
set("y min bc","Symmetric");
set("y max bc","PML");
set("z min bc","PML");
set("z max bc","PML");
#set("pml profile", 1);   # 设置PML的模式,比如standard

mesh根据个人需要设置,一般步骤:1.调用add语句并命名
2.确定xyz维度空间大小 3.设置mesh精度(需要override设为1)

添加mesh

addmesh;
set("name","mesh_metaatom");
set("x",0);
set("x span",2e-6);
set("y",0);
set("y span",2e-6);
set("z min",2e-6);
set("z max",2e-6);
set("override x mesh",1);
set("override y mesh",1);
set("override z mesh",1);
set("dx",0.02e-6);
set("dy",0.02e-6);
set("dz",0.02e-6);

添加监视器

1.调用add语句并命名 2.确定监视器监视维度 3.设置xyz空间大小

添加频域场与功率监视器

addpower;
set('name','field');
set('monitor type','2D Z-normal');
set("x",0);
set("x span",30e-6);
set("y",0);
set("y span",30e-6);
set("z",1.365e-6);

添加功率监视器观察电场轮廓

addprofile;
set("name","field_profile");
set("monitor type",'2D Z-normal'); 
set("x",0);
set("x span",3e-6);
set("y max",6e-6);
set("y min",-5e-6);
set("z",200e-9);

添加modeexpansion监视器

addmodeexpansion;
set("name","neff_600nm");
set("monitor type",'2D X-normal'); 
set("x",0.3e-6); 
set("y",0.3e-6);
set("y span",1.5e-6);
set("z",0);
set("z span",tooth_length);
set("use wavelength spacing",true); # 修改监视器General中的"use wavelength spacing"定义
set("use source limits",false); # 修改监视器General中的"use source limits"定义
set("wavelength center",1.55e-6); 
set('enabled',true);

添加电影监视器

addmovie;
set("name","movie");
set("monitor type","2D y-normal"); 
set("x span",25e-6);
set("y",0);
set("z min",-0.3e-6);
set("z max",1.6e-6);
set("lock aspect ratio",1);
set("horizontal resolution",240);

添加可计算有效折射率的modeexpansion监视器

addmodeexpansion;
set("name","neff_600nm");
set("monitor type",'2D X-normal'); 
set("x",0.3e-6); 
set("y",0.3e-6);
set("y span",1.5e-6);
set("z",0);
set("z span",tooth_length);
set("use wavelength spacing",true); # 修改监视器General中的"use wavelength spacing"定义
set("use source limits",false); # 修改监视器General中的"use source limits"定义
set("wavelength center",1.55e-6); 
set('enabled',true);

修改监视器监测频率点数

set('override global monitor settings',true);
set("frequency points",101);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值