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


前言

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

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


数据获取

一般来说仿真结果的获取方式有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里面主要绘制的都是数据的二维平面图,所以有三种命令:

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般来说getresult()获取的是dataset,可以直接用visualize绘图,如果是个人处理过的数据,用plot或者image更为常见。


“?”命令

FDTD设置参数和获取数据的方式相对来说比较简单,但是有的时候我们可能并不清楚自己想要获取的数据叫什么名字,或者不知道能够从监视器中获取哪些结果,那么可以通过在单行命令窗口输入"?"命令很方便的得到(图中红圈标出的位置)在这里插入图片描述

下面是一些例子:

?get;

在这里插入图片描述

?getdata("R");

在这里插入图片描述

?set;

在这里插入图片描述

评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ArcSight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值