FDTD快速入门之Lumerical脚本语言Pickup(五)光源(Source)


前言

这篇文章里,我们接着前一篇文章,讲讲光源的设置。


一、平面波(Plane wave)

下面是一段平面波的设置代码:

addplane;
set("injection axis","z");#基准轴
set("direction","backward");#入射方向
set("x",0);
set("x span",0.4*um);
set("y",0);
set("y span",0.4*um);
set("z",1*um);
set("wavelength start",1.5*um);#起始波长
set("wavelength stop",1.5*um);#截止波长
set("amplitude",1);#振幅,默认为1,无特殊需要可不设置
set("phase",0);#初始相位,角度制,默认为0,无特殊需要可不设置
set("angle theta",30);#入射角theta
set("angle phi",0);#入射角phi
set("polarization angle",90);#偏振角

效果见图
在这里插入图片描述
关于几个参数的说明:
"injection axis":基准轴,可选“x”、“y”、“z”三种,作为其他参数设置的参考轴。
"direction":入射方向,可选“forward”、“backward”两种,控制波沿z轴的正向或反向传播。
"wavelength start"和"wavelength stop":波长范围,这两个参数分别控制平面波的最短波长和最长波长。
"polarization angle":偏振角,角度制,从z轴入射时默认为x方向偏振,设定该角度值即设定xy平面上偏振方向与x轴的夹角。
"angle theta"和"angle phi":空间方位角,角度制。这两个角可控制光波入射的角度,例如本例中,入射基准轴为z轴,theta角为30°,所以入射方向相对z轴顺时针转过30°。

二、高斯光源(Gaussian)

高斯光源和平面波的设置方法十分相似,代码如下:

addgaussian;
set("injection axis","z");
set("direction","backward");
set("x",0);
set("x span",0.4*um);
set("y",0);
set("y span",0.4*um);
set("z",1*um);
set("wavelength start",1.5*um);
set("wavelength stop",1.5*um);
set("angle theta",0);
set("angle phi",0);
set("polarization angle",30);

效果如下:
在这里插入图片描述

三、全场散射场光源(TFSF)

全场散射场(TFSF)是平面波的一种,关于TFSF与平面波的区别和详细说明可以在kx论坛上找到,这里只列出一段参考代码:

addtfsf;
set("injection axis","z");
set("direction","backward");
set("x",0);
set("x span",0.4*um);
set("y",0);
set("y span",0.4*um);
set("z",1*um);
set("wavelength start",1.5*um);
set("wavelength stop",1.5*um);
set("amplitude",1);
set("angle theta",0);
set("angle phi",0);
set("polarization angle",30);

四、偶极子(Dipole)

震荡的偶极子(Dipole)常常作为产生电磁波的源,它十分适合用于点光源的模拟,这里列出典型的偶极子设置代码如下:

adddipole;
set("dipole type","Electric dipole");#偶极子类型,可选"Electric dipole","Magnetic dipole"两种
set("x",0);#设置中心坐标
set("y",0);
set("z",1*um);
set("wavelength start",1.5*um);
set("wavelength stop",1.5*um);
set("amplitude",1);
set("theta",0);#方位角
set("phi",0);#方位角
set("phase",90);#相位
  • 23
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 54
    评论
以下是一个简单的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仿真。在仿真结束后,脚本从探测器和光源的监视器数据中计算波导光限制因子,并输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ArcSight

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

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

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

打赏作者

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

抵扣说明:

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

余额充值