一、参考FDTD官网farfield3d命令介绍:
https://optics.ansys.com/hc/en-us/articles/360034930693-farfield3d-Script-command
1. farfield3d命令功能:在3D模拟中将给定的功率或场轮廓监视器,或直线数据集投影到远场,将会返回电场强度|E|^2。
(1) 语法1:out=farfield(“mname”, f, na, nb, illumation, periodsa, periodsb, index, direction) ;将给定的功率或常轮廓监视器投影到远场。如果1个频率点被投影,将会返回N*M阶矩阵,其中N和M相当于na和nb投影的分辨率,即个数;如果多于1个频率点被投影,将会反馈N*M*P阶矩阵,其中P相当于被投影的频率的点数;
(2)语法2:out=farfield(dataset, f, na, nb, illumation, periodsa, periodsb, index, direction);参考语法1介绍,二者区别在于本语法是将数据集dataset中的数据返回;
2. farfield3d语法中相关参数定义说明:
(1)mname:监视器名称(mintor name),必须输入(required),属于字符串;
(2)dataset:包含电场E和磁场H的直线型数据集,必须输入(required),属于数据集;
(数据集的介绍可参考https://optics.ansys.com/hc/en-us/articles/360034409554-Datasets)
(3)f:目标频率点的索引,可以是一个数字或者矢量;在R2016b (这个是matlab的版本??)中引入了多线程投影功能可以允许多个频率点的数据同时进行投影。选择性输入(optional),不输入时默认值为1,属于矢量;
(4) na/nb:投影到远场的点数,选择性输入(optional),不输入时默认值150,属于数字;
(5) illumination:用于周期性结构,对于高斯照明输入1,对于平面波照明输入2;选择性输入,不输入时默认值为1,即采用高斯照明,属于数字;
(6)periodsa/periodsb:周期性照明中采用的周期数;选择性输入(optional),不输入时默认值1,属于数字;
(7)index:进行投影的材料的折射率,选择性输入(optional),不输入时默认值为监视器中心处才材料折射率,属于数字;
(8)direction:可以为±1,选择性输入(optional),不输入时默认值为最大功率流方向,属于数字;
3. 下面的表格总结了不同监视器取向下ux, uy坐标矢量和周期输入特性与坐标轴的对应关系。
监视器取向 | 监视器表面法线 | ‘na’,’ux’,’period a’对应于 | ‘nb’,’uy’,’periods b’对应于 |
XY平面 | Z | x轴 | y轴 |
XZ平面 | Y | x轴 | z轴 |
YZ平面 | X | y轴 | z轴 |
4. FDTD官网示例:
(1)第一个示例:对名称为“monitor”的2D监视器的远场投影进行成像。在该示例中选择第二个频率点进行投影。如果监视器中只含有与一个频率的数据,第二个参数可以不用输入。
E = farfield3d("monitor",2); #2表示第二个频率点
ux = farfieldux("monitor",2); #farfieldux命令参考下面说明
uy = farfielduy("monitor",2);
image(ux,uy,E,"","","title","polar"); #ux和uy分别为x和y轴,对E进行作图,对应的图表名称“polar”
思考:farfield("monitor",2)中2可以被识别为f的数值,其它参数均采用默认值;如果对于后面参数不再采用默认值时,前面的参数一定要进行输入,比如na=nb=1000时,输入应为farfield("monitor",2,1000,1000);
(2)第二个示例:对一个直线型数据集的远场投影进行成像。这里的数据集来自一个2D监视器。
dataset=getresult("monitor", "E"); #采用getresult命令来获取名称为monitor的监视器中数据集E的数据
dataset.addattribute("H",getattribute(getresult("monitor","H"),"H"));#采用getresult获取名称为“monitor"的监视器中的数据集H的数据,然后采用getattribute命令获取数据集中的所有属性,最后采用addattribute命令在数据集dataset中添加一个矢量属性H,包含H的所有属性;
E = farfield3d(dataset,2);
ux = farfieldux(dataset,2);
uy = farfielduy(dataset,2);
image(ux,uy,E,"","","title","polar");
思考:在getattribute命令中未找到getattribute(getresult("monitor","H"),"H")这种语法说明,即getattribute(dataset,"a")格式。不知此处的"H"代表啥?
参考FDTD官网getattribut命令:https://optics.ansys.com/hc/en-us/articles/360034409534-getattribute-Script-command
二、参考FDTD官网farfieldux/farfielduy命令介绍:
https://optics.ansys.com/hc/en-us/articles/360034410134-farfieldux-Script-command;
https://optics.ansys.com/hc/en-us/articles/360034410154-farfielduy-Script-command;
1. Farfieldux命令功能:将farfield3d中进行3D模拟获得的远场数据来赋值给ux矩阵。可以参考farfield3d文档中关于不同监视器取向ux,uy,na,nb的解释信息。
(1)语法1 out=farfieldux(“mname”, f, na, nb, index) :可以参考farfield中的说明,相关参数定义同farfield3d。获得的矩阵为N*M阶矩阵,其中N是空间索引数目,M是频率点数;
(2)语法2 out=farfieldux(dataset,f,na,nb,index): 可以参考farfield中的说明,相关参数定义同farfield3d。获得的矩阵为N*M阶矩阵,其中N是空间索引数目,M是频率点数。
2. Farfielduy命令功能:将farfield3d中进行3D模拟获得的远场数据来赋值给ux矩阵。可以参考farfield3d文档中关于不同监视器取向ux,uy,na,nb的解释信息。
(1)语法1 out=farfielduy(“mname”, f, na, nb, index) :可以参考farfield中的说明,相关参数定义同farfield3d。获得的矩阵为N*M阶矩阵,其中N是空间索引数目,M是频率点数;
(2)语法2 out=farfielduy(dataset,f,na,nb,index): 可以参考farfield中的说明,相关参数定义同farfield3d。获得的矩阵为N*M阶矩阵,其中N是空间索引数目,M是频率点数。