Lumerical中FDTD创建仿真基本脚本

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");

修改结构优先级

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);
  • 8
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Lumerical FDTD的超透镜脚本建模,是一种通过编写脚本代码实现超透镜光学性能模拟的方法。Lumerical FDTD是一种常用的时域有限差分法的电磁模拟软件,可以用于模拟光学器件的传输和散射特性。 在脚本,首先需要定义超透镜的几何形状和材料属性。可以使用Lumerical FDTD提供的几何建模工具,通过定义参数如心波长、透射率和折射率等,生成超透镜的模型。脚本代码可以实现对超透镜的二维或三维建模。 接下来,根据所需的仿真目标,可以定义光源和检测器的参数。光源可以是单色光源,也可以是多色光源。检测器用于收集特定位置的光强数据。 在脚本还需要定义网格的大小和分辨率,以及仿真的时间步长等参数。这些参数对模拟结果的准确性和计算速度都有影响,需要根据具体情况进行调节。 完成参数定义后,可以运行脚本进行超透镜性能的模拟。Lumerical FDTD使用时域有限差分法进行电磁场仿真,对于每个时间步长,根据麦克斯韦方程和边界条件计算出电磁场在空间的传播情况。通过迭代计算,可以得到求解域电磁场的空间分布和吸收情况。 最后,可以通过脚本代码对仿真结果进行后处理和分析。可以计算超透镜的传输效率、衍射效果、聚焦性能等指标,并进行可视化展示。通过不同参数的调整和优化,可以进一步改进超透镜的设计和性能。 总之,基于Lumerical FDTD的超透镜脚本建模能够帮助研究人员深入了解超透镜的光学特性,并优化其性能,为超透镜的设计和应用提供重要参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值