FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)

文章目录

  • 前言
  • 数据获取
  • 数据可视化
  • “?”命令


前言

这篇文章里,我们讲一讲如何进行仿真数据的获取和分析。FDTD的仿真结果通常只有光波的复振幅、相位、透射率等较为简单的数据;如果想要获得一些自己想要的结果,比如材料表面的相位损失,衍射波的分布,以及一些更复杂的结果,就需要对获取的数据进行分析。本文仅列出一部分关于仿真结果获取的命令,关于更复杂的分析和计算我们将不会在本文中说明,大家可以在FDTD给出的一些分析组(Analysis group)中查看,也可以根据自己阅读的文献或有关理论编写自己的分析脚本。

下面我们假定仿真模型为如下的一个模型,并且运行后处在Analysis模式(这个时候可以直接获取仿真结果并查看,也可以利用脚本进行数据的分析),在此基础上我们使用后文的脚本绘制一段监视器T处获取的“频率-相位”关系。
FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第1张图片


数据获取

一般来说仿真结果的获取方式有getdata()和getresult()两种,而原始数据可以通过get()和getnamed()获取,下面给出了几种不同方式获取数据的例子:

#使用get获取光源位置
select("Planewave");
source_z=get("z");

#使用getnamed获取监视器T位置
T_z=getnamed("T","z");

#使用getdata获取T所在位置的光波相位
Ey=getdata("T","Ey");
phase=angle(Ey);
phase=pinch(phase);

#使用getresult获取光波的频率f
E=getresult("T","E");
f=E.f;

#绘制f-phase曲线
plot(f,phase,"f Hz","pha");

输出结果如图:
FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第2张图片


数据可视化

一般来说FDTD里面主要绘制的都是数据的二维平面图,所以有三种命令:

  • plot(一维折线图,需要至少两组数据)
  • image(二维彩色图,只能以二维矩阵作为输入)
  • visualize(二维彩色图,以数据集(dataset)作为输入)
    示例如下:
#plot
x=linspace(1,50,50);
y=randmatrix(1,50);
plot(x,y,"x","y");
#image
mtx=randmatrix(50,50);
image(mtx);
#visualize
a=linspace(1,50,50);
b=linspace(1,40,40);
R=randmatrix(length(a),length(b));
r=matrixdataset("r");
r.addparameter("a",a); 
r.addparameter("b",b); 
r.addattribute("R",R); 
visualize(r);

下面是输出(按顺序排列):

FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第3张图片
FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第4张图片
FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第5张图片
一般来说getresult()获取的是dataset,可以直接用visualize绘图,如果是个人处理过的数据,用plot或者image更为常见。


“?”命令

FDTD设置参数和获取数据的方式相对来说比较简单,但是有的时候我们可能并不清楚自己想要获取的数据叫什么名字,或者不知道能够从监视器中获取哪些结果,那么可以通过在单行命令窗口输入"?"命令很方便的得到(图中红圈标出的位置)FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第6张图片

下面是一些例子:

?get;

FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第7张图片

?getdata("R");

FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第8张图片

?set;

FDTD快速入门之Lumerical脚本语言Pickup(七)数据获取与分析(Analysis)_第9张图片

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