FDTD快速入门之Lumerical脚本语言Pickup(三)结构(Structure)搭建

文章目录

  • 前言
  • 一、(长方体)矩形(Rectangle)
  • 二、多边形柱体(Ploygon)
    • 1.多边形柱
    • 2.三角形柱
  • 三、(椭)圆柱体(Circle)
  • 四、(椭)球体(Sphere)
  • 五、圆环(体)(Ring)
  • 六、角椎体(Pyramid)


前言

这一篇我们来介绍一下如何搭建一个物体的仿真模型(Structure)。FDTD solution中的仿真模型包含两个核心部分:材料(material)和几何结构(structure)。通常用包含吸收参数的材料的复折射率控制material属性,而用3D模型参数控制structure属性。下面介绍几种常用的structure。


一、(长方体)矩形(Rectangle)

一个典型的矩形结构可以由如下代码生成:

addrect;
set("name","rect");#名称                   
set("material","SiO2 (Glass) - Palik");#材料
set("render type","wireframe");   # 渲染方式:线框,减小显卡压力
set("x",0);#设置x中心点坐标   
set("y",0);#设置y中心点坐标
set("x span",1e-6);#设置x方向宽度
set("y span",1e-6);#设置y方向宽度
set("z max",1e-7);#设置z方向最大值
set("z min",-1e-6);#设置z方向最小值
set("first axis","x");#设置第一转轴
set("rotation 1",45);#设置第一旋转角

效果如下:
FDTD快速入门之Lumerical脚本语言Pickup(三)结构(Structure)搭建_第1张图片

下面详细介绍每段代码的用途:
addrect:随机生成一个一定大小,材料为一定折射率介电材料的矩形模型。
set(“name”,“rect”):名称。设定矩形的名称为“rect”
set(“material”,“SiO2 (Glass) - Palik”):材料——这里的材料必须是材料库中存在的,且必须按照材料库中原有的名字命名。设定矩形的材料为二氧化硅
set(“render type”,“wireframe”):渲染方式——有detailed和wireframe两种,系统默认为detailed,如有需要,可改为wireframe。设定矩形的渲染方式为线框
set(“x”,“0”):中心坐标(x轴),类似地还可设置y和z的中心坐标。设定矩形的中心坐标(x轴)为0
set(“x span”,“1e-6”):x轴向宽度(或范围),类似地还可设置y和z的轴向宽度。设定矩形的x轴向宽度为1e-6,即1微米
set(“z max”,“1e-7”):z方向最大值,类似地还有z min、x max、x min、y max、y min。设定矩形的z方向最大为1e-7,即100纳米
set(“first axis”,“x”):第一转轴。设定矩形的第一转轴(first axis)为x轴
set(“rotation 1”,45):绕第一转轴的旋转角。设定矩形绕x轴的转角为45°


二、多边形柱体(Ploygon)

1.多边形柱

一个典型的多边形结构可以由如下代码生成:

um=1e-6;
nm=1e-9;
vtx=[2,0;1,1;-1,1;
     -2,0;-1,-1;1,-1]*um;  #向量组
addpoly;
set("name","poly");#名称
set("index",1.5);#折射率
set("vertices",vtx);#控制向量组
set("x",0.5*um);#中心坐标
set("y",1*um);
set("z",-0.5*um);
set("z span",0.4*um);#z方向宽度

效果如下:
FDTD快速入门之Lumerical脚本语言Pickup(三)结构(Structure)搭建_第2张图片

与矩形相同的部分我们不作过多介绍,这里只介绍和矩形不同的部分:
addpoly:添加一个参数随机的多边形结构。
set(“index”,1.5):折射率。多边形材料为介电材料,折射率为1.5
set(“vertices”,vtx):向量组。设置多边形的xy面二维形状,由传入的向量组vtx中的参数控制

关于vtx中的参数解释:
vtx是一个n*2的矩阵,每一行都是多边形上一个顶点的相对坐标,以设置的"x",“y”,"z"参数作为相对坐标原点,按在矩阵中的顺序顺次连接成多边形。

2.三角形柱

一个典型的三角形柱体结构可以由如下代码生成:

um=1e-6;
nm=1e-9;
vtx=[3,0;0,4;-2,0]*um;  #向量组
addtriangle;
set("name","triangle");#名称
set("index",1.5);#折射率
set("vertices",vtx);#控制向量组
set("x",0.5*um);#中心坐标
set("y",1*um);
set("z",-0.5*um);
set("z span",0.4*um);#z方向宽度

效果如下:
FDTD快速入门之Lumerical脚本语言Pickup(三)结构(Structure)搭建_第3张图片
多边形生成代码和三角形生成代码基本一致,这里不作过多介绍。


三、(椭)圆柱体(Circle)

一个典型的(椭)圆柱体结构可以由如下代码生成:

um=1e-6;
nm=1e-9;

addcircle;
set("name","circle");
set("material","Au (Gold) - Palik");
set("x",0);
set("y",0);
set("z",0);
set("z span",400*nm);
set("radius",600*nm);#半径/x轴半径
set("make ellipsoid",1);#生成椭圆
set("radius 2",800*nm);#y轴半径

效果如下:
FDTD快速入门之Lumerical脚本语言Pickup(三)结构(Structure)搭建_第4张图片
同样的,这里只对和矩形结构生成代码不同的部分作一些说明:
set(“radius”,600*nm):半径/x轴半径。若是圆柱体,radius为圆的半径;若是椭圆柱体,radius为椭圆在x轴方向的半轴长(可能是长半轴或短半轴,由radius和radius的相对大小决定)。这里表示椭圆短半轴为600nm
set(“make ellipsoid”,1):生成椭圆。“make ellipsoid”可取两个值:0和1。其中,0表示生成的为圆柱体,1表示生成椭圆柱体(也可以认为1是enable椭圆参数radius 2,为0则radius 2被disable,只生成半径为radius的圆柱)。这里参数为1表示生成一个椭圆柱体。
set(“radius 2”,800*nm):y轴半径,椭圆的第二半轴长。生成一个第二半轴长为800*nm的椭圆柱体。

四、(椭)球体(Sphere)

一个典型的(椭)球可以由如下代码生成:

um=1e-6;
nm=1e-9;

addsphere;
set("name","sphere");
set("index",1.5);
set("x",0);
set("y",0);
set("z",0);
set("radius",200*nm);#半径/x轴半径
set("make ellipsoid",1);#生成椭球
set("radius 2",400*nm);#y轴半径
set("radius 3",2*um);#z轴半径

效果如下:
FDTD快速入门之Lumerical脚本语言Pickup(三)结构(Structure)搭建_第5张图片
球体的代码和椭圆柱的代码十分相似,区别仅在于多了一个第三半径(radius 3)(事实上是控制了z轴方向的大小),这里不作过多说明。

五、圆环(体)(Ring)

一个典型的圆环柱体可以由如下代码生成:

um=1e-6;
nm=1e-9;

addring;
set("name","ring");
set("index",1.5);
set("x",0);
set("y",0);
set("z",0);
set("z span",600*nm);
set("outer radius",400*nm);#外圆半径
set("inner radius",200*nm);#内圆半径
set("theta start",0);#起始角
set("theta stop",135);#终止角

效果如下:
FDTD快速入门之Lumerical脚本语言Pickup(三)结构(Structure)搭建_第6张图片
柱体默认以xy平面作底面,z轴方向宽度作高。关于环柱体参数控制的详细说明可参考注释部分

六、角椎体(Pyramid)

一个典型的角锥体可以由如下代码生成:

um=1e-6;
nm=1e-9;

addpyramid;
set("name","pyramid");
set("index",1.5);
set("x",0);
set("x span bottom",600*nm);#梯形下底长(x轴向)
set("x span top",100*nm);#梯形上底长(x轴向)
set("y",0);
set("y span bottom",400*nm);#梯形下底长(y轴向)
set("y span top",200*nm);#梯形上底长(y轴向)
set("z",0);
set("z span",600*nm);

效果如下:
FDTD快速入门之Lumerical脚本语言Pickup(三)结构(Structure)搭建_第7张图片
其中参数"x span bottom"、“y span bottom”、“x span top”、"y span top"分别控制该角锥体下、上底面的矩形大小。

你可能感兴趣的:(FDTD,matlab)