FDTD快速入门之Lumerical脚本语言Pickup(六)监视器(Monitor)


前言

我们接着上篇文章,继续讲一讲监视器的设置。


Note

虽然各个监视器的功能各不相同,但是按监视器的几何形状划分,可以分为点监视器、面监视器、体监视器三类,这些种类由参数 “monitor type” 控制。“monitor type” 通常可以用两种方法设置,一种是该类型的名称,如

set("monitor type","2D Z-normal");#xy面监视器

一种是用对应的数字序号,如

set("monitor type",1);#点监视器

由于不同的监视器可设置的类型和对应序号有差异,在下面的监视器介绍中,我们会部分地列出可供选择的(几何)类型和对应的数字序号。

一、时间监视器(Field time)

时间监视器通常为点监视器。一般来说,一个仿真里面至少要有一个时间监视器,以便确认仿真结果是否充分收敛,进而确定仿真结果的可靠性。设置代码如下:

nm=1e-9;

addtime;
set("name","time");
set("x",10*nm);
set("y",-5*nm);
set("z",20*nm);

二、折射率监视器(Refractive index)

折射率监视器也是一种常用的监视器,设置方法如下:

nm=1e-9;
um=1e-6;

addindex;
set("name","index");
set("monitor type","2D Y-normal");#xz平面
set("x",0);
set("y",0);
set("x span",200*nm);
set("z max",1.5*um);
set("z min",-10*nm);

几何结构上,折射率监视器有二维的和三维的一共4种,见下表:

名称序号
2D X-normal1
2D Y-normal2
2D Z-normal3
3D4

三、电影监视器(Movie)

电影监视器的设置代码如下:

addmovie;
set("name","movie");
set("monitor type","2D Y-normal");#xz平面
set("x",0);
set("y",0);
set("x span",400*nm);
set("z max",1.5*um);
set("z min",-10*nm);

几何结构上,电影监视器只有二维的三种,见下表:

名称序号
2D X-normal1
2D Y-normal2
2D Z-normal3

四、场分布监视器(Frequency-domain field profile)

场分布监视器的设置代码如下:

addprofile;
set("name","R");
set("monitor type","2D Z-normal");#xy面监视器
set("x",0);
set("x span",0.4*um);
set("y",0);
set("y span",0.4*um);
set("z",1*um);

几何结构上,场分布监视器有点、一维、二维和三维共8种,见下表:

名称序号
Point1
Linear X2
Linear Y3
Linear Z4
2D X-normal5
2D Y-normal6
2D Z-normal7
3D8

五、功率监视器(Frequency-domain field and power)

功率监视器的设置代码如下:

addpower;
set("name","T");
set("monitor type",1);#点监视器
set("x",0);
set("y",0);
set("z",0.1*um);

功率监视器和场分布监视器都属于DFT Monitor,所以二者的几何结构设置也是一样的,这里不再额外列表。


设置效果

以下是设置了各个监视器后的效果:
在这里插入图片描述

  • 32
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
以下是一个简单的Lumerical脚本,可用于计算波导光限制因子: ``` # 设置仿真参数 central_wavelength = 1550e-9 # 中心波长 n_eff = 2.5 # 有效折射率 wg_width = 500e-9 # 波导宽度 wg_height = 220e-9 # 波导高度 # 定义波导 wg = fdtd.addrect() wg['name'] = 'waveguide' wg['x span'] = wg_width wg['y span'] = wg_height wg['z span'] = fdtd.getglobal('simulation time') wg['x'] = -wg_width / 2 wg['y'] = 0 wg['z'] = 0 wg['material'] = 'silicon' # 定义光源 source = fdtd.addplane() source['name'] = 'source' source['x span'] = fdtd.getglobal('simulation region x span') source['y span'] = fdtd.getglobal('simulation region y span') source['z'] = 0 source['wavelength start'] = central_wavelength source['wavelength stop'] = central_wavelength source['polarization angle'] = 0 source['angle theta'] = 0 source['angle phi'] = 0 # 定义探测器 detector = fdtd.addpower() detector['name'] = 'detector' detector['monitor type'] = 'linear x' detector['x span'] = fdtd.getglobal('simulation region x span') detector['y'] = 0 detector['z'] = fdtd.getglobal('simulation time') detector['wavelength start'] = central_wavelength detector['wavelength stop'] = central_wavelength # 运行仿真 fdtd.run() # 计算波导光限制因子 F = detector.getpower() / source.getpower() * (central_wavelength / (2 * n_eff * wg_width)) print('波导光限制因子:', F) ``` 该脚本创建了一个矩形波导、一个光源和一个探测器,并运行了FDTD仿真。在仿真结束后,脚本从探测器和光源的监视器数据中计算波导光限制因子,并输出结果。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ArcSight

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

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

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

打赏作者

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

抵扣说明:

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

余额充值