【FDTD Lumerical sweep扫描参数数据提取及可视化【以S参数为例】】

FDTD Lumerical sweep扫描参数数据提取及可视化【以S参数为例】

    本文以Lumerical官方提供的超透镜例程中的单元结构的S参数扫描为例,主要介绍这些代码中涉及到的脚本函数的含义,超透镜例程链接:
Metalens - Zemax Interoperability


一、背景介绍

      上图摘自Lumerical官方的超透镜例程,在使用FDTD进行超透镜研究时,我们经常需要参考这个例程中对超结构单元的仿真,使用软件分析组库中提供的S参数分析组来提取不同尺寸参数的超结构单元的复振幅(突变相位、振幅)等参数。但由于S参数给出的数据往往需要我们进一步处理(提取、分析、可视化等)才能得到我们需要的结果,最后对结果进行可视化分析,这就要求我们编写Lumerical脚本来获得所需的最终结果。
      下图即官方例程中对单元的height和radius进行S参数扫描后得到的"height"扫描结果(注意height扫描中嵌套了radius)。

二、各重要脚本指令的含义

     以下仅详细介绍针对上述案例使用的相关指令,具体扩展信息可以前往官网Lumerical scripting language - Alphabetical list按字母顺序查询学习。下面按第三部分给出的实例代码中各指令出现的顺序进行介绍。

1. getsweepdata指令

#下文中"sweep_name"为分析对象,"data"为对象中数据参数
?getsweepdata; #返回所有扫描、优化和蒙特卡罗分析对象的名称
?getsweepdata(“sweep_name”); #返回存储在扫描、优化或蒙特卡洛分析对象中的所有可用数据的名称。
out = getsweepdata(“sweep_name”, “data”);
#返回参数扫描、优化或蒙特卡罗分析数据

2. getsweepresult指令

?getsweepresult; #返回具有有效结果的所有扫描、优化、蒙特卡罗和S参数扫描对象的名称。
?getsweepresult(“sweep_name”); #返回指定的具有有效结果的扫描、优化、蒙特卡罗和S参数扫描对象的名称
out = getsweepresult(“sweep_name”, “result”);
#从指定的参数扫描、优化、蒙特卡罗或 S 参数扫描任务返回结果数据集

3. length指令

y = length(x); #返回矩阵中元素的个数

4.angle指令

out = angle(x); #以弧度返回复数或矩阵x的相位,相位在 - π 和 π 之间

5.pinch指令

out = pinch(x); #删除矩阵的所有单维度
pinch(x,i); #删除矩阵的指定维度(第i维)
pinch(x,i,j); #删除第 i 维度,但保留删除维度 i 的特定索引 j 。

6.image指令

image(x,y,z, “x label”, “y label”, “title”, “options”);
#创建带有轴标签和标题的2D图像,可以设置“options”参数选择绘制其他图像如:极坐标图

7.setplot指令

?setplot; #创建一个字符串,其中列出了当前选定图窗的所有图窗属性。
setplot(“property”, “property value”); #设置当前选定图形的特定属性的属性值。

8.find指令

out = find(x,n); #返回 x 中与n最接近的值所对应的第一个元素的索引。
#返回等于、大于和小于n的所有x值的索引。
out = find(x==n);
out = find((x>=n) & (x<m));

9.unwrap指令

out = unwrap(x); #用于从一维数组中消除由于超过2 π相位导致的数据突变,使其变得连续

10.plot指令

plot(x,y, “x label”, “y label”, “title”, “options”);
#“options”的可选参数参见下表:

11.getnamed指令

?getnamed(“name”); #返回名为"name"的对象的属性列表;
out = getnamed(“name”, “property”); #返回命名对象的特定属性的值。

12.savedata指令

savedata(“filename”, var1, var2,…); #以“filename”为文件名保存特定变量

三、S参数扫描结果提取

     Lumerical软件提供的S参数分析组会生成四个 S 参数分析结果。其中,“S”是主输入偏振和相同输出偏振的S参数(例如,如果光源是s偏振,它只计算s偏振透射和反射光的结果)。而 “S_polarization”是主输入偏振和两个方向输出偏振的S参数,在光线极化方向被超材料旋转时使用。而“T”和“R”分别是透射功率和反射功率
     下面脚本中S21_Gn表示的是透射光相对入射光的复振幅表示,同理S11_Gn则表示反射光相对入射光的复振幅表示,通过使用angle指令即可提取我们所需要的相位。

1.首先读取扫描参数

sname = "height";    
# 可以使用?getsweepdata指令查看**height**对象中包含哪些参数
 #读取扫描对象“height”中的“height”和“radius”参数,按扫描点数等分后得到的一维数组
height = getsweepdata(sname,"height"); 
radius = getsweepdata(sname,"radius"); 
 #读取扫描对象“height”中的“S”和“T”参数
S = getsweepresult(sname,"S");
T = getsweepresult(sname,"T");
nd = length(radius);  #获得半径扫描点数

2.超结构单元相位及透射率提取

# S21_Gn的维度为[frequency,radius,height],提取单元的突变相位
phase = pinch(angle(S.S21_Gn),1,1); 
# 绘制相位随高度和半径变化的二维图像
image(radius*1e6,height*1e6,phase,"Radius (um)","Height (um)","Phase");
# 设置图像颜色条的取值范围
setplot("colorbar min",-pi); setplot("colorbar max",pi);

# T_Gn的维度为[frequency,radius,height],提取单元的透射率
T0 = pinch(T.T_Gn,1,1); 
image(radius*1e6,height*1e6,T0,"Radius (um)","Height (um)","Transmission");
setplot("colorbar min",0); setplot("colorbar max",1); 

3.提取特定高度值的相位及透射率并进行可视化

hi = find(height,1.3e-6);   # 查找最接近1.3um高度的height数组索引
# 对提取得到的相位数据进行连续性处理unwrap
# 其中phase(1,hi)表示当前指定高度下最小半径对应的相位值,phase(:,hi)表示当前指定高度下不同半径对应的相位值
# 因此注意:此处计算得到的其实是 相对相位差
norm_phase  = pinch(unwrap(phase(:,hi))-phase(1,hi));
plot(radius*1e6,norm_phase,"Radius (um)","Phase (rad)","Height = "+num2str(height(hi)*1e6)+" (um)","linewidth=2");
setplot("show legend",false);

plot(radius*1e6,T0(:,hi),"Radius (um)"," Transmission","Height = "+num2str(height(hi)*1e6)+" (um)","linewidth=2");
setplot("y min",0);setplot("y max",1);setplot("show legend",false);

4.保存所需数据

# 保存特定波长下的数据
wavelength = getnamed("s_params::source","center wavelength");
height = height(hi);
period = getnamed("::model","period");
mat_TiO2_Unit = getnamed("TiO2_Unit","material");
index_TiO2_Unit = getnamed("TiO2_Unit","index");
mat_sub = getnamed("substrate","material");
index_sub = getnamed("substrate","index");
phase = norm_phase;
savedata('phase_vs_radius',wavelength,height,period,mat_TiO2_Unit,index_TiO2_Unit,mat_sub,index_sub,phase,radius);

猜你喜欢

转载自blog.csdn.net/weixin_44636369/article/details/123357937