本示例演示了如何使用Ansys optiSLang 来驱动Lumerical 不同求解器实现微环调制器的仿真自动化以及使用 optiSLang 的多目标优化能力实现微环调制器 Q 因子和调制效率的最佳化仿真。
微环调制器是一个复杂且大尺寸的系统,其由一系列的子系统组成,包括如环形波导耦合,相位调制臂等。在本示例中,我们将使用 Lumerical FDTD 来仿真求解Throuph port 的transmission计算微环的 Q 因子,使用 Lumerical MODE 和 Charge 来计算有源部分的相位调制臂在不同偏压下的载流子浓度分布以及有效折射率,损耗和群折射率。最终我们借助以上不同求解器仿真求解的结果,使用 Lumerical *.lsf脚本后处理实现 Q 因子和调制效率的计算。以上工作流我们都将基于 optiSLang 平台实现仿真自动化,同时实现Q 因子和调制效率的优化,此示例中我们期望优化目标 Q 因子在 20000 左右且调制效率至少为 1.2e-11 m/V.
第一步:基础仿真模型搭建与optiSLang workflow 测试
关于Lumerical FDTD, Charge 和 MODE 针对微环调制器的仿真模型搭建和求解,本示例不再赘述,详细内容可参考官网案例:Ring Modulator
接下来将以 FDTD 为例,演示Lumerical 和 optiSLang 的集成自动化。
以下流程图为optiSLang 的parametric 系统,用于用户的初始化设置及 workflow 验证。
点击 FDTD 编辑界面,进入 setting 来定义 optiSLang 需要调用的Lumerical 求解器以及需要读取的脚本 coupling_coefficient_calc_FDTD.lsf 。如下图所示。
在Parametrization编辑界面,导入 FDTD 需要运行的工程文件 coupler_region.fsp并加载,在 Input 和 Output 界面下即可显示出 optiSLang 所读取的 *.fsp 文件和*.lsf 中所定义的变量,这些变量即可作为后期 optiSLang优化所需要的变参和响应结果,如下图所示我们将*.fsp 文件中 model 下定义的变量 coupling length 和 gap 作为输入变参 (use as parameter), 同时我们将 *.lsf 中定义的 transmission 定义成中间变量 trans (output slots)用于传输给后一步脚本后处理作为输入。
打开 FDTD 文件和脚本可以确认模型和脚本中所定义的变量在上一步中是被 optiSLang 正确读取的。
基于上述的定义方式,即可调用optiSLang 来呼叫 FDTD 并自动运行仿真文件coupler_region.fsp和脚本coupling_coefficient_calc_FDTD.lsf.,同时将仿真计算结束后的结果传输给下一步继续运行。
同样的逻辑,我们也需要在 optiSLang 中定义调用 Charge 和 MODE 求解器并仿真计算不同偏压下的载流子浓度分布以及有效折射率,损耗等必要结果,并最终通过*.lsf脚本后处理读取上述几个不同求解器的仿真结果实现 Q 因子和调制效率的计算。Script 模块的仿真设定如下图所示,可以看到其通过定义 Input slots 来自动读取前面步骤的计算结果,并将脚本计算的 Q, mod_eff和FSR 作为结果输出。
以下动图展示了整个 Parametric System 的工作流测试过程,可以看到我们的初始点设定和目标设定,点击运行即可观察到 optiSLang 分别去自动调用 Lumerical 的不同求解器去运算基于初始设计点的结果,得到 Q = 530.565, mod_eff = 2.24e-11, FSR = 1e-8, 距离我们的目标 Q ~ 20000 ,mod_eff > 1.2e-11 m/V 尚有差距。
点击图片即可跳转原文观看视频
第二步:参数敏感性分析与最佳元模型建立 (AMOP)
基于上述步骤,我们已经搭建完善的 optiSLang 与 Lumerical 的仿真自动化工作流。此步骤我们将演示如何进行参数敏感性分析以及 optiSLang 的最佳元模型搭建,optiSLang 最佳元模型是基于 optiSLang 特有的自适应采样建模,通过对样本空间的分析构建一套拟合Lumerical 求解器的数学模型,并用于后续快速的优化求解。我们只需要将 sensitivity wizard 拖拽入第一步测试的 Parametric System 即可生成 AMOP (Adaptive Metamodel of Optimal Prognosis) 模型,如下图所示。
此步骤中找到适当数量的样本空间很重要,增加采样数可以获得更好的元模型,同时也意味着增加完成仿真所需的时间(此步骤的每一步采样均需要调用 Lumerical 做仿真求解,以帮助 optiSLang 寻找最佳化拟合元模型)。这里我们做了 300 个采样点,可以看到每一个随机采样下的输入输出值,这里有一点需要强调,optiSLang 支持输入参数的多种采样方式,如连续采样,离散采样,高斯采样等。
300个采样仿真结束之后,我们在 post-processing中即可看到元模型的拟合结果以及各个输出对输入的依赖度,即 CoP (Coefficient of Prognosis) matrix,也就是我们所说的参数敏感性分析。如下图所示,我们发现元模型对 FSR 的拟合度可以达到 99.9% 且coupling_length 这一参数对 FSR 影响最大,同样的对 Q 的拟合度可以达到97.7%且 gap 和 coupling_length 对其影响较大,而 mod_eff的结果则更多和掺杂有关,这一结果也符合我们的经验预测。基于此元模型拟合,我们便可以进行接下来的优化求解,同时在优化过程中,我们仅仅针对此步骤分析出对优化目标影响最大的gap, coupling_length 还有掺杂等关键参数进行变参优化,其他参数保持常量。
第三步:优化和最佳设计验证
此步骤我们将演示如何进行大批量的数据优化和数据验证。我们只需要将 Optimization wizard 拖拽入第二步测试的 AMOP 即可生成 Evolutionary Algorithm模型,如下图所示。
在优化设定中,基于第二步参数敏感性分析的结果,我们只需要将gap, coupling_length 还有掺杂进行变参优化,其他参数保持常量。optiSLang 中有多种不同的优化算法以及设定,这里我们选择使用 Evolutionary Algorithm 优化算法并保持默认设定,同时定义执行10000 次采样的全局优化。如下图所示。
由于我们在第二步已经找到一个较好的元模型,因此这里的 10000 次优化将使用第二步所构建的元模型求解而非 Lumerical 求解器,计算速度也会大大提升,在本示例中我们执行 10000 次优化仅用 121 秒。
优化计算完成后,optiSLang默认会随机进行 20 个采样点的验证,即返回给 Lumerical 再进行这 20 个采样点的求解来得到Lumerical 求解器的仿真结果,由上图中 “Validator System” 执行。
下图展示的是采用元模型执行10000次的优化过程以及所有的输入和输出结果。
点击图片即可跳转原文观看视频
打开后处理,首先针对我们的优化目标:Q 因子在 20000 左右且调制效率至少为 1.2e-11 m/V,我们在 Parallel coordinates plot 中做初步筛选,如下图所示:
点击图片即可跳转原文观看视频
筛选后采样点的Pareto 结果如下图所示:
图中红色点所示的 Pareto front 即为我们在多目标优化过程中,optiSLang 寻找到的一组最优解,这里由于我们所做的是多目标优化,不同目标之间会需要有一些权衡取舍,因此非唯一解也是合理的结果。绿色点即为返回给 Lumerical 求解器验证后的结果。这里我们选取最佳设计点 #9032,可以看到Q 为 18478,调制效率为 2.6e-11 m/V,FSR 为 9.6 e-9 ,同时也可以看到其对应的输入参数。
基于此,我们便完成了使用 optiSLang 和 Lumerical针对环形调制器的自动化仿真和优化,此外 optiSLang 还支持定义参数的扰动和鲁棒性分析,这里我们不做重点介绍。
第四步:总结
1. optiSLang 当前完全集成 Lumerical 各类型求解器,包含 FDTD, RCWA, FDE, EME, varFDTD, CHARGE, HEAT, DGTD, FEEM, MQW, INTERCONNECT.
2. optiSLang 支持Lumerical 仿真自动化,支持各求解器之间的自动化数据交互,数据后处理以及全流程自动化求解。
3. optiSLang 特有的多目标优化能力和元模型理论可以帮助用户快速找到最佳优化设计,节省迭代时间。
4. 基于上述能力,Lumerical 用户可以实现各种不同应用下的仿真自动化和优化流程,实现更高效的仿真。