(这个案例感觉没怎么看懂,运行出来的结果也跟官方的对不上,过一段时间再来看看)
模拟波导中的非线性效应通常需要较长的模拟时间和传播长度。 2.5D FDTD Propagator 可以有效地模拟长距离的波传播,同时仍然能够准确捕捉线性和非线性效应之间的相互作用。
为了研究由于输入电信号引起的环形调制器的瞬态响应,我们使用 MODE 高级材料模型将环形的折射率作为时间的函数来改变。 对于这个例子,我们将使用一个非常简单的阶跃函数作为折射率,但是可以看到将其扩展到更复杂的时域函数是非常直接的。
一、线性环形谐振器
在 ring_resonator_step_index.lms 中,我们将从类似于 Ring resonator MODE(设计和初始仿真)(就是我的上一个帖子)示例的 SOI 环形谐振器开始。
打开官方案例,发现其把环形谐振器的上下两个矩形波导的材料设置为base
在材料库中:
我们首先在没有任何非线性材料的情况下运行宽带模拟,以找到该设备中共振峰的位置。 请注意,对象树中的“default”源应启用,其波长范围应为 1.545um 到 1.575um。 此外,应禁用“CW”源,并且“step_index”材料的参数 delta_eps=0 应为零(并没有找到这个设置在哪儿)。 仿真完成运行后,我们可以绘制through端口和drop端口的传输,如下图所示。
我们将使用 1.5507um 附近的共振峰,并在该波长处设置一个 CW 源。 在仿真文件中,启用 CW 源并禁用默认宽带源。模拟完成运行后,右键单击through端口的时间监视器,将电场可视化为时间的函数。 您应该看到,在初始瞬态部分之后,信号饱和到 ~0,正如该波长所预期的那样。 脚本 remove_high_f.lsf 可用于去除高频分量以获得更清晰的信号,如下所示。
二、调制
为了研究环形调制器在输入电信号突然失去共振时的响应,我们需要改变环形的折射率。 为此,我们必须建立一个插件材料模型来修改时域更新方程,以便在时间步长函数上应用介电常数的这种变化。 在示例文件 stepindex.cpp(在高级材料模型中可用)中,可以看到在计算函数中实现这一点很简单:
float StepIndexMaterialPlugin::calculate(int axis, float U, float V, float E, float* storage)
{
storage[0] += 1.f; // update time step
bool change_index = (storage[0] time_start) && (storage[0]
这将导致环的介电常数由“delta_eps”从“time_start”变为“time_stop”。
要使用此插件材料,您必须下载 .dll 文件(在高级材料模型中可用)并将其保存到 C:\Program Files\Lumerical\MODE\bin\plugins\materials 目录。 一旦 .dll 文件位于正确的目录中,您应该能够将此材料添加到材料数据库中并更改相关参数。
一旦仿真完成运行,您可以再次右键单击 time_through 监视器以绘制调制时间信号,或使用 remove_high_f.lsf 删除高频振荡。 调制后的时间信号如下图所示,可以看到由于折射率的突然变化而导致环脱离共振时,前缘处的“过冲”行为。