【FDTD Lumerical超材料S参数提取】
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官方分析组库中各监视器及超材料的摆放位置):
- 要测量近场的S参数,若测量区域如监视器位置存在瞬逝场的影响(见物理光学)可能会导致测量出错,因此要确保监视器离结构足够远;
- 模拟光源和监视器要与超材料表面保持一定距离,监视器必须与超材料保持足够远来避免瞬逝场的影响)。
当场从光源传播到超材料再到监视器时会积累额外的相位差(见下图)。而仅需要超材料的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参数提取】相关推荐
- 超材料 s参数反演 matlab,一种基于改进K‑K算法的超材料电磁参数反演方法与流程...
本发明属于测试技术领域,具体涉及一种基于改进K-K算法的超材料电磁参数的反演方法. 背景技术: 超材料是一种新型的人工材料,对电磁波具有独特的物理特性,比如负折射率.负电磁参数等,这些独特的物理特性使 ...
- 超材料 s参数反演 matlab,基于SISL的高介电常数超材料设计
1引言超材料(Metamaterials)是一种自然界中不存在的,由人工合成的具有超常物理性质的复合式材料.以相对介电常数和相对磁导率来描述其特性,其相对介电常数和相对磁导率可以为正也可以为负,因而被 ...
- 【FDTD Lumerical sweep扫描参数数据提取及可视化【以S参数为例】】
FDTD Lumerical sweep扫描参数数据提取及可视化[以S参数为例] 一.背景介绍 二.各重要脚本指令的含义 三.S参数扫描结果提取 本文以Lumerical官方提供的超透镜例程中的单元结 ...
- FDTD 中石墨烯材料如何设置
FDTD 中石墨烯材料如何设置 先看石墨烯graphene的表达式 石墨烯基本参数中scattering rate的量纲单位为eV,在众多文献关于graphene的电导率表示中,有两种表示方式,二者各 ...
- 电磁诱导透明matlab程序,一种实现类电磁诱导透明效应的超材料及方法与流程
本发明涉及光电技术领域,具体涉及一种实现类电磁诱导透明效应的超材料及方法. 背景技术: 电磁诱导透明(eit)描述的是在宽吸收曲线中产生的尖锐透射窗口的一种实验现象,这种现象伴随着光的色散特性的改变, ...
- idft重建图像 matlab_不可见成为可见!超材料和 AI 融合,洛桑联邦理工破译了声音图像...
无标记成像技术应用的新道路." 作者 | 付静 声音在空气中作了一幅我们看不见的画,人们需要用一些手段将其显现出来. 听上去有点玄幻,能做到吗? 能! 近日,瑞士洛桑联邦理工学院波工程实验室 ...
- 超材料常用的仿真软件CST COMSOL HFSS指导实际操作
超材料常用的仿真软件 文章目录 超材料常用的仿真软件 CST HFSS COMSOL Multiphysics 续 在超材料超表面的仿真研究过程中特别是电磁光学领域,经常用到的软件有CST.HFSS和 ...
- 基于Comsol进行薄膜型声学超材料的低频降噪仿真分析
研究背景: 随着社会的进步和制造业不断发展,各种类型的噪声对周边的人类生活带来不可逆转的破坏.尤其是低频噪声(声波频率低于 1000Hz),据有关低频噪声烦恼度研究表明,人类长期生活在低频声波环境周围 ...
- 薄膜声学超材料模态叠加法Matlab实现(Zhang Yuguang论文复现)
1.理论分析 设超材料的一个周期单元的长度为Lx.Ly:薄膜密度为,薄膜张紧力为T:振子尺寸为lx.ly,振子密度为,振子位置为:板的横向位移为w 定义m.n分别为x.y方向的模态数,模态型函数为: ...
最新文章
- 百炼智百炼智能获5000万元Pre-A轮融资,深耕智能获客赛道
- MySQL外键设置中的的 Cascade、Restrict、SET NULL 、NO ACTION
- 让该死的恶意软件去死吧!!!!!!!
- Linux 还能这么玩,10 个非常有趣的命令!
- android绘制view的过程
- 计算机二级公共基础知识2020版电子版,2020年计算机二级考试公共基础知识背诵笔记...
- silverlight 读取wcf服务 读取宿主端的config 良好的方法
- VCL组件之重要的公用属性
- linux误删除 dev disk文件,误删除 linux 系统文件了?这个方法教你解决
- [转载] Python中的memoryview
- [译] 如何用 Android vitals 解决应用程序的质量问题
- 计算机技术基础的心得体会,计算机技术基础学习心得体会5篇范文.docx
- mysql做时间判断_mysql关于时间函数的判断
- 证件照尺寸修改、图片背景换色、照片大小压缩…几个在线图片编辑、处理网站推荐
- jpg怎么合成一份_怎么将多个jpg合并成一个pdf
- 协同级CRM能帮助企业带来哪些管理提升?
- 【二】如何用Python创建一个docx文档
- 汽车EE架构 发展过程
- 信息系统项目管理师必背整体核心考点
- Python 异步库 asyncio、aiohttp