FDTD Lumerical超材料S参数提取

  • 一、S参数简介
  • 二、S参数的提取原理
  • 三、S-parameter分析组参数设置
  • 四、S参数设置脚本

本文重点参考自Lumerical官方的此篇文章,以翻译内容为主体并附加相关的FDTD Script介绍,主要目标是学习了解S参数的使用方式及其提取相位等参数的基本原理
Lumerical Support — Metamaterial S parameter extraction


注:下文中的输入/输出信号对应于入射光和反射/透射光,个人使用S参数来提取光的相位信息。

一、S参数简介

双端口网络的S参数

S参数也被称为散射参数,常用于描述 2×2 网络(network)或传输线(transmission lines)的传输行为。对于如上图所示两给定的输入信号a1和a2, 输出信号b1和b2,可采用下面公式进行计算:

S参数是采用的是复振幅(包括振幅和相位)的形式来表示反射和透射系数。从上式中我们可以看出输出信号b1分别由输入信号a1、a2与系数S11、S12相乘求和得到,输出信号b2则同理。其中,a1入射光对应的是反射系数S11和透射系数S21,a2入射光对应的是反射系数S22和透射系数S12。

二、S参数的提取原理

已知入射信号a和b的系数与电场成正比,设Ei,Er,Et分别表示入射、反射和透射电场,则S参数可表示为S11=b1/a1=Er/Ei而S21=b2/a1=Et/Ei。在使用S参数时需要保证模型满足以下两条件(需保证在以下前提的情况下使用,在实在不知道如何使用的情况下,可以参考Lumerical官方分析组库中各监视器及超材料的摆放位置):

  1. 要测量近场的S参数,若测量区域如监视器位置存在瞬逝场的影响(见物理光学)可能会导致测量出错,因此要确保监视器离结构足够远;
  2. 模拟光源和监视器要与超材料表面保持一定距离,监视器必须与超材料保持足够远来避免瞬逝场的影响)。

当场从光源传播到超材料再到监视器时会积累额外的相位差(见下图)。而仅需要超材料的S参数(即超材料引入的变化,如突变相位),要抵消这个额外传播过程的影响我们必须补偿该相位差。假设入射和透射空间中的波数分别为ki和kt,则监视器T中来自光源S的额外相位差为 ki * rs+kt * rt,其中rs和rt是距离。同理反射监视器 R对应的额外相位差是ki * rs+ki * rr。

光源和监视器的相位补偿

三、S-parameter分析组参数设置

在Lumerical软件提供的分析组对象库中已经提供了现成的S参数分析组,上文中提到的额外相位差的补偿便在分析组的脚本中完成。注意我们假定平面波在平面超结构表面上传播之后,得到的反射波和透射波是依旧以平面波形式传播,可以使用点频域监视器(即分析组中的折射率监视器)来记录电场分量,另外两个平面频域监视器用于测量传输功率(以及光栅投影近场数据)来计算超材料的S参数和传输效率。

对于平面结构定义的S参数中相关偏振参数的约定见下图。如果超材料上下方的介质具有不同的折射率, ∣ S 12 ∣ 2 |S12|^2 ∣S12∣2和 ∣ S 21 ∣ 2 |S21|^2 ∣S21∣2都大于1。Lumerical软件提供的S分析组还可以处理斜入射以及输入和输出s和p偏振光的情况。

S参数计算中关于s和p偏振光的约定

下面针对S-parameter分析组中具体参数的设置进行介绍。首先是分析组的属性设置(Setup),在分析组对象内部的脚本中有详细描述,下面详细介绍其中属性设置参数:

  • start wavelength and stop wavelength: 指定光源的波长范围。如果起始波长和终止波长不相同,可以在全局监视器属性中设置使用的频点数。
  • x/y/z span: 沿这入射轴方向表示的是R、T监视器间的距离,垂直入射轴方向则是两监视器的大小(长宽)。
  • propagation direction:+1/-1表示光源传播方向。
  • propagation axis: 表示光源传播轴。
  • angle theta/phi: 表示光源与轴之间的旋转角(仅使用光源中最大的 s 和 p 偏振分量)。
  • polarization angle:表示光源的偏振方向。
  • source offset: 光源和反射监视器R之间的距离。
  • source_type: 用于在两种类型的源之间进行选择:1用于Bloch/periodic,2 用于BFAST。仅将“source_type”= 2 用于斜入射的宽带模拟。

分析组的设置属性参数

完成基本属性设置参数后,需要再设置以下4个分析属性(Analysis)

  • metamaterial center and metamaterial span: 指定全局坐标中超材料区域。由于计算光源位置和远场半球,此信息用于减去S参数中的附加相位。
  • target_grating_order_out: 指定用于计算S参数的特定输出光栅顺序。
  • suppress_warnings:禁用(suppress_warnings = 1)或启用 (supress_warnings = 0) 带有警告消息的弹出窗口(参见下面的描述)。出现警告时的“warnings”结果为 1(以下情况将生成警告:1.光源的极化既不是 S 也不是 P;2.未找到某些频率点的所需顺序。当不支持目标光栅顺序时会发生这种情况。)。

分析组的分析属性参数

最后,Lumerical软件提供的S参数分析组会生成四个 S 参数分析结果。其中,“S”是主输入偏振和相同输出偏振的S参数(例如,如果光源是s偏振,它只计算s偏振透射和反射光的结果)。而 “S_polarization”是主输入偏振和两个方向输出偏振的S参数,在光线极化方向被超材料旋转时使用。而“T”和“R”分别是透射功率和反射功率

四、S参数设置脚本

下面提供一个设置S参数的脚本,可以配合上文截图中给出的设置参数,自己尝试着运行脚本在模型中添加S参数,看看官方的S参数分析组是如何设置的。关于各脚本指令的具体含义,不清楚的可以在Lumerical scripting language - Alphabetical list自行查找学习。

deleteall;
# 确保输入光源是有效的
if ( (%propagation axis%=="x") or (%propagation axis%=="y") or (%propagation axis%=="z") ) {# everything is okdo_nothing=0;
} else {message("Propagation axis incorrectly set. Using x direction.");%propagation axis% = "x";
}
if ( (%propagation direction%==1) or (%propagation direction%==-1) ) {# everything is okdo_nothing=0;
} else {message("Propagation direction incorrectly set. Using positive direction.");%propagation direction% = 1;
}

添加S参数的各个组件:光源、点监视器、平面监视器,并根据属性设置结果进行赋值(参数化模型)。

# 添加光源
addplane;
set("wavelength start",%start wavelength%);
set("wavelength stop",%stop wavelength%);
set("injection axis",%propagation axis%);
set("polarization angle",%polarization angle%);
set("angle theta",%angle theta%);
set("angle phi",%angle phi%);
set("x",0);
set("y",0);
set("z",0);
# 设置光源类型
if(source_type==1){
set("plane wave type", "Bloch/periodic");
}
else{
if(source_type==2){
set("plane wave type", "BFAST");
}
}
# 设置光源传播方向和传播轴
if(%propagation direction% == 1){set("direction","Forward");
} else{set("direction","Backward");
}
if (%propagation axis% == "x"){set("x",%propagation direction%*(%source offset%-0.5*%x span%));set("y span",%y span%);set("z span",%z span%);
}
if (%propagation axis% == "y"){set("y",%propagation direction%*(%source offset%-0.5*%y span%));set("x span",%x span%);set("z span",%z span%);
}
if (%propagation axis% == "z"){set("z",%propagation direction%*(%source offset%-0.5*%z span%));set("x span",%x span%);set("y span",%y span%);
}
#  添加点监视器
addindex;
set("name","R_index");
set("monitor type","3D");
set("spatial interpolation","nearest mesh cell");
set("x",0);      set("y",0);      set("z",0);
set("x span",0); set("y span",0); set("z span",0);
addindex;
set("name","T_index");
set("monitor type","3D");
set("spatial interpolation","nearest mesh cell");
set("x",0);      set("y",0);      set("z",0);
set("x span",0); set("y span",0); set("z span",0);
# 添加平面监视器
addpower;
set("name","T");
addpower;
set("name","R");
# 根据光源传播方向设置平面监视器
if (%propagation axis% == "x") {setnamed("T","monitor type","2D X-normal");setnamed("T","y",0);setnamed("T","z",0);setnamed("T","y span",%y span%);setnamed("T","z span",%z span%);setnamed("R","monitor type","2D X-normal");setnamed("R","y",0);setnamed("R","z",0);setnamed("R","y span",%y span%);setnamed("R","z span",%z span%);if (%propagation direction% == 1) {setnamed("T_index","x", %x span%/2);setnamed("R_index","x",-%x span%/2);setnamed("T","x", %x span%/2);setnamed("R","x",-%x span%/2 + 2*%source offset%);} else {setnamed("T_index","x",-%x span%/2);setnamed("R_index","x", %x span%/2);setnamed("T","x",-%x span%/2);setnamed("R","x", %x span%/2 - 2*%source offset%);}
}if (%propagation axis% == "y") {setnamed("T","monitor type","2D Y-normal");setnamed("T","x",0);setnamed("T","z",0);setnamed("T","x span",%x span%);setnamed("T","z span",%z span%);setnamed("R","monitor type","2D Y-normal");setnamed("R","x",0);setnamed("R","z",0);setnamed("R","x span",%x span%);setnamed("R","z span",%z span%);if (%propagation direction% == 1) {setnamed("T_index","y", %y span%/2);setnamed("R_index","y",-%y span%/2);setnamed("T","y", %y span%/2);setnamed("R","y",-%y span%/2 + 2*%source offset%);} else {setnamed("T_index","y",-%y span%/2);setnamed("R_index","y", %y span%/2);setnamed("T","y",-%y span%/2);setnamed("R","y", %y span%/2 - 2*%source offset%);}
}if (%propagation axis% == "z") {setnamed("T","monitor type","2D Z-normal");setnamed("T","y",0);setnamed("T","x",0);setnamed("T","y span",%y span%);setnamed("T","x span",%x span%);setnamed("R","monitor type","2D Z-normal");setnamed("R","y",0);setnamed("R","x",0);setnamed("R","y span",%y span%);setnamed("R","x span",%x span%);if (%propagation direction% == 1) {setnamed("T_index","z", %z span%/2);setnamed("R_index","z",-%z span%/2);setnamed("T","z", %z span%/2);setnamed("R","z",-%z span%/2 + 2*%source offset%);} else {setnamed("T_index","z",-%z span%/2);setnamed("R_index","z", %z span%/2);setnamed("T","z",-%z span%/2);setnamed("R","z", %z span%/2 - 2*%source offset%);}
}

【FDTD Lumerical超材料S参数提取】相关推荐

  1. 超材料 s参数反演 matlab,一种基于改进K‑K算法的超材料电磁参数反演方法与流程...

    本发明属于测试技术领域,具体涉及一种基于改进K-K算法的超材料电磁参数的反演方法. 背景技术: 超材料是一种新型的人工材料,对电磁波具有独特的物理特性,比如负折射率.负电磁参数等,这些独特的物理特性使 ...

  2. 超材料 s参数反演 matlab,基于SISL的高介电常数超材料设计

    1引言超材料(Metamaterials)是一种自然界中不存在的,由人工合成的具有超常物理性质的复合式材料.以相对介电常数和相对磁导率来描述其特性,其相对介电常数和相对磁导率可以为正也可以为负,因而被 ...

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

    FDTD Lumerical sweep扫描参数数据提取及可视化[以S参数为例] 一.背景介绍 二.各重要脚本指令的含义 三.S参数扫描结果提取 本文以Lumerical官方提供的超透镜例程中的单元结 ...

  4. FDTD 中石墨烯材料如何设置

    FDTD 中石墨烯材料如何设置 先看石墨烯graphene的表达式 石墨烯基本参数中scattering rate的量纲单位为eV,在众多文献关于graphene的电导率表示中,有两种表示方式,二者各 ...

  5. 电磁诱导透明matlab程序,一种实现类电磁诱导透明效应的超材料及方法与流程

    本发明涉及光电技术领域,具体涉及一种实现类电磁诱导透明效应的超材料及方法. 背景技术: 电磁诱导透明(eit)描述的是在宽吸收曲线中产生的尖锐透射窗口的一种实验现象,这种现象伴随着光的色散特性的改变, ...

  6. idft重建图像 matlab_不可见成为可见!超材料和 AI 融合,洛桑联邦理工破译了声音图像...

    无标记成像技术应用的新道路." 作者 | 付静 声音在空气中作了一幅我们看不见的画,人们需要用一些手段将其显现出来. 听上去有点玄幻,能做到吗? 能! 近日,瑞士洛桑联邦理工学院波工程实验室 ...

  7. 超材料常用的仿真软件CST COMSOL HFSS指导实际操作

    超材料常用的仿真软件 文章目录 超材料常用的仿真软件 CST HFSS COMSOL Multiphysics 续 在超材料超表面的仿真研究过程中特别是电磁光学领域,经常用到的软件有CST.HFSS和 ...

  8. 基于Comsol进行薄膜型声学超材料的低频降噪仿真分析

    研究背景: 随着社会的进步和制造业不断发展,各种类型的噪声对周边的人类生活带来不可逆转的破坏.尤其是低频噪声(声波频率低于 1000Hz),据有关低频噪声烦恼度研究表明,人类长期生活在低频声波环境周围 ...

  9. 薄膜声学超材料模态叠加法Matlab实现(Zhang Yuguang论文复现)

    1.理论分析 设超材料的一个周期单元的长度为Lx.Ly:薄膜密度为,薄膜张紧力为T:振子尺寸为lx.ly,振子密度为,振子位置为:板的横向位移为w 定义m.n分别为x.y方向的模态数,模态型函数为: ...

最新文章

  1. 百炼智百炼智能获5000万元Pre-A轮融资,深耕智能获客赛道
  2. MySQL外键设置中的的 Cascade、Restrict、SET NULL 、NO ACTION
  3. 让该死的恶意软件去死吧!!!!!!!
  4. Linux 还能这么玩,10 个非常有趣的命令!
  5. android绘制view的过程
  6. 计算机二级公共基础知识2020版电子版,2020年计算机二级考试公共基础知识背诵笔记...
  7. silverlight 读取wcf服务 读取宿主端的config 良好的方法
  8. VCL组件之重要的公用属性
  9. linux误删除 dev disk文件,误删除 linux 系统文件了?这个方法教你解决
  10. [转载] Python中的memoryview
  11. [译] 如何用 Android vitals 解决应用程序的质量问题
  12. 计算机技术基础的心得体会,计算机技术基础学习心得体会5篇范文.docx
  13. mysql做时间判断_mysql关于时间函数的判断
  14. 证件照尺寸修改、图片背景换色、照片大小压缩…几个在线图片编辑、处理网站推荐
  15. jpg怎么合成一份_怎么将多个jpg合并成一个pdf
  16. 协同级CRM能帮助企业带来哪些管理提升?
  17. 【二】如何用Python创建一个docx文档
  18. 汽车EE架构 发展过程
  19. 信息系统项目管理师必背整体核心考点
  20. Python 异步库 asyncio、aiohttp

热门文章

  1. 仿TeamViewer远程协助软件
  2. Excel中对比两列数据的不同并做特殊标记
  3. react-native消息推送
  4. QT QLabel控件(使用详解)
  5. 解决C盘空间不足问题
  6. web安全学习笔记--sql语句(sql注入基础上)
  7. RabbitMQ的消息模型
  8. ILSVRC 2015-VID数据集下载解压记录
  9. mina java c_Mina简介
  10. 【GStreamer 】3-6 gstreamer jpegenc 、jpegdec 插件说明