FDTD快速⼊门之Lumerical脚本语⾔Pickup(⼀)序⾔
⽬录
前⾔
FDTD作为⼀款功能强⼤的光学仿真软件,已经⼴泛应⽤于纳⽶光学以及超材料仿真领域。但是就软件本⾝来说,完全上⼿还需要⼀定的时间。并且,鉴于很多微纳光学领域的仿真更适合⽤脚本完成,所以我写了这个脚本语⾔系列⽂章,帮助需要的朋友快速上⼿FDTD。
这⾥需要注意的是,虽然本系列⽂章的⽬的是帮助需要的朋友快速⼊门FDTD,但是我们的侧重点是⽤脚本语⾔实现仿真流程,并不涉及FDTD软件窗⼝功能的介绍,所以阅读本系列⽂章的读者最好具备⼀定的预备知识。FDTD相关的介绍视频可以在百度上很容易地搜到,因此本⽂⽂末不再列出。
⼀个简单的仿真模型
⾸先应说明⼀点,作为Lumerical的主流产品之⼀,FDTD采⽤的其实是⼀种叫Lumerical脚本语⾔(Lumerical Script Language)的命令语⾔。这种语⾔和matlab很相似,很多matlab中的语法都可以直接在Lumerical脚本语⾔中实现。Lumerical脚本保存在⼀个扩展名为.lsf的⽂件中,脚本编辑器在下图中的右边栏。
下⾯从⼀个简单的例⼦开始,介绍FDTD仿真脚本的⼏个主要组成部分。⾸先上⼀个实例:
switchtolayout;
selectall;delete;
nm=1e-9;#纳⽶单位
um=1e-6;#微⽶单位
#添加矩形
addrect;
set("name","SiO2");#名称为SiO2
set("material","SiO2 (Glass) - Palik");#材料为⼆氧化硅(玻璃)
set("x",0);#设置x中⼼点坐标
set("y",0);#设置y中⼼点坐标
set("x span",1*um);#设置x⽅向宽度
set("y span",1*um);#设置y⽅向宽度
set("z max",100*nm);#设置z⽅向最⼤值
set("z min",-1*um);#设置z⽅向最⼩值
#添加FDTD仿真区域
addfdtd;
set("dimension",2);#仿真区域为三维区域
set("x",0);
set("y",0);
set("z min",-10*nm);
沪aset("z max",2*um);
set("x span",0.2*um);
set("y span",0.22*um);
set("x min bc","periodic");#设置x⽅向周期边界条件
set("y min bc","periodic");#设置y⽅向周期边界条件
set("Mesh type","uniform");#仿真⽹格为⾃定义⽅式
Mesh_size=10*nm;#⽹格精度10nm
setnamed("FDTD","dx",Mesh_size);
setnamed("FDTD","dy",Mesh_size);
#添加平⾯波
addplane;
set("injection axis","z");#⼊射轴与z轴平⾏
set("direction","backward");#朝向后⽅⼊射
set("x",0);
对祖国的祝福set("x span",0.4*um);
set("y",0);
set("y span",0.4*um);
set("z",1*um);
set("wavelength start",1.5*um);#波长(最⼩)
set("wavelength stop",1.5*um);#波长(最⼤)
#添加点监视器
addprofile;
set("name","R");
set("monitor type",1);#点监视器
set("x",0);
set("y",0);
set("z",1.5*um);
#添加时间监视器
addtime;
set("name","time");
run;#运⾏仿真
#获取结果并分析
select("SiO2");
surface_z=get("z max");
select("source");
水晶source_z=get("z");
select("R");
monitor_z=get("z");
ex=getdata("R","Ex");
R_z=getdata("R","z");
f=getdata("R","f");
f=pinch(f);
亭亭玉立是什么意思lambda=c/f*1e6;
phase=pinch(angle(ex));
phai=phase-2*pi*(source_z+monitor_z-2*surface_z)*f/c;
phai=mod(phai*180/pi,360);
plot(lambda,phai,"lambda um","phase");
这是⼀段⽤于验证光从光疏介质⼊射到光密介质时,反射波中存在半波损失的完整仿真代码。它包含了以下⼏个部分:什么才是国潮
仿真结构(structure)
仿真区域(FDTD)
光源(source)
监视器(monitor)
仿真结果分析(Analysis)
⼤致的仿真结果如下:
仿真代码中的关键部分(除了分析模块)我都做了⼀定的注释,⼤家可以根据⾃⼰的需要结合注释修改代码。关于以上⼏个仿真模块详细的编写与使⽤,我们将在后续的⽂章中介绍。
参考链接
唐太宗的儿子
由于本系列⽂章主要作为⼊门级的⼀些介绍,更详细的脚本命令和相关设置还请参考以下链接:模型:.
脚本命令:.
PS:其他技术相关的具体问题也可在Lumerical官⽹以及kx论坛上到。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论