首页/文章/ 详情

Lumerical Python API (三) - 会话管理

2月前浏览2453

本文演示了 Lumerical 仿真软件与 Python 联合工作的具体流程,展示了开发复杂的自动化仿真计算和高级数据处理、绘图的可行性。使用 Python API(即上一篇文章中提到的lumapi库)即可实现仿真软件与Python的交互操作。用户可以用 Python 代码实现对于 Lumerical 软件仿真的初始化设置,运行和迭代,以及数据传递和处理。

1. 开启会话

连接到 lumapi.py 文件是启用 Lumerical-Python API 接口的关键。首先需要导入 lumapi 库并初始化会话 (初始化会话需要 GUI lisence),详细方法参考Lumerical Python API (二) - 初始配置,之后便可以对仿真对象进行访问,相关的开启会话函数在lumapi库中均有定义:




fdtd = lumapi.FDTD()  #开启会话mode = lumapi.MODE()device = lumapi.DEVICE()interconnect = lumapi.INTERCONNECT()
这种类似构造函数的命令中,带有以下两种可选参数:
  • hide”:可设置为“True”或“False”,默认为“False”,决定是否显示仿真软件的GUI/CAD界面;
  • filename”:默认为空,保持默认则创建一个新工程,如果提供了脚本文件,则会在新工程中运行该脚本;如果输入具体文件名则会打开相应文件名的工程。
如果要打开名为simple_high_Q_cavity.fsp的工程,只需运行:

shQc = lumapi.FDTD(filename="simple_high_Q_cavity.fsp", hide = False)

如果要在FDTD中直接运行名为simple_high_Q_cavity.lsf的脚本,且不显示仿真软件的GUI/CAD,只需运行:


run_script = lumapi.FDTD(filename="simple_high_Q_cavity.lsf", hide= True)
2. 导入方法
使用API接口进行编程时,可以用Python定义函数,也可以利用lumapi中的自动同步函数,从 .lsf 脚本文件中导入函数,具体方法是用eval( )函数执行脚本。例如,要导入脚本字符串中的函数,只需运行:




fdtd = lumapi.FDTD()fdtd.eval("function helloWorld(){return \"hello world\";}\nfunction addTest(a,b){return a+b;}")print(fdtd.helloWorld())print(fdtd.addTest(9.2,2))
便会输出结果“hello world”以及“11.2”。
要导入脚本文件“testScript.lsf”中的函数,只需运行:



fdtd = lumapi.FDTD()script = open('C:/desktop/testScript.lsf'.'r').read()fdtd.eval(code)
脚本也可以在构造函数中作为参数来定义方法:








def testAddingMethodsFromConstructor(self):app = self.appConstructor(script='testScript.lsf')expectedMethods = {'helloWorld'}expectedResults = ['hello world from script file']results = []results.append(app.helloWorld())self.assertEqual(results, expectedResults)app.close()

3. 仿真对象

从2019a版本开始,Python API支持使用构造函数添加对象和从构造函数设置仿真对象。构造函数可以添加仿真区,并设置相关的参数,如位置、大小等等:


fdtd.addfdtd(dimension="2D", x=0.0e-9, y=0.0e-9, x_span=3.0e-6, y_span=3.0e-6)

添加监视器:




props = OrderedDict([("name""power"),("override global monitor settings", True),("x", 0.),("y", 0.4e-6),                     ("monitor type", "linear x"),("frequency points", 10.0)])fdtd.addpower(properties=props)

如果对象的某一参数会受到其他参数影响,这时使用有顺序的字典设置,要用到OrderedDict( )函数,注意OrderedDict包只适用于Python 2,可以安装适用于Python 3的Collections包。如果参数独立,则可以直接用Python字典设置:






props = {"name": "power",         "x" : "0.0",         "y" : "0.0",          "monitor type" : "linear x"}fdtd.addpower(properties=props)

如果要给仿真对象修改或添加某些参数,lumapi中均有相应的函数来完成,也可以通过本文“2.导入方法”中提到的方式,用一些.lsf脚本命令实现,例如添加长方体:





rectangle = fdtd.addrect(x = 2e-6, y = 0.0, z = 0.0)rectangle.x_span = 10.0e-6rectangle.y_span = 0.4e-6rectangle.z_span = 0.2e-6

Python会自动删除作用域以外的变量,因此大多数时候不需要手动关闭会话在pyCharm中,Python程序运行结束也会自动关闭会话,即所打开的仿真软件窗口在程序运行结束时会自动关闭。也有一些其他编译器,不自动关闭会话,如果想手动进行关闭,可以使用close( )函数:


fdtd.close()  #关闭会话

本节简单介绍了lumapi的会话管理,可以初步实现Lumerical仿真软件与Python脚本的交互。Lumerical脚本语言可以看作是Python代码的子集,lumapi给用户提供了更为丰富的创造空间,原先.lsf脚本难以实现的功能,现在都有希望借助Python脚本实现。之后我们将讨论两种脚本之间的关联,并阐述Python与Lumerical之间数据传递的规律。

[1]https://optics.ansys.com/hc/en-us/articles/360041873053




来源:摩尔芯创
pythonUMLumericalANSYS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-29
最近编辑:2月前
摩尔芯创
光学仿真、光学培训、硅基光电子
获赞 6粉丝 5文章 38课程 0
点赞
收藏
作者推荐

【案例】表面等离子体谐振纳米光刻

这个例子展示了如何创建表面等离子体共振纳米光刻接触掩模的FDTD模型[1]。在FDTD布局编辑器中显示了通过石英衬底(蓝色)、银色接触掩模(灰色)、光刻胶(粉色)和硅晶圆(红色)的二维截面,以及模拟中使用的源和监视器。步骤一:建立模型光刻胶选用rectangle structure,几何参数如图一,材料选择photoresist。 图一 石英衬底选用rectangle structure,几何参数如图二,材料选择quartz substrate。 图二硅晶圆选用rectangle structure,几何参数如图三,材料选择silicon wafer。 图三 银色接触掩模选用rectangle structure,几何参数如图四,材料选择silicon wafer。图四步骤二:建立光源模型建立完毕,接下来设置光源。光源选择平面光,无相位延迟,几何参数如图五所示。 图五 步骤三:建立仿真区域下一步设置仿真区域,几何参数如图六。 图六步骤四:创建监视器监视器1选用DFT监视器,几何参数如图七。 图七 监视器2选用时间监视器,几何参数如图八。 图八 监视器3选用电影监视器,几何参数如图九。 图九 监视器4选用DFT监视器,几何参数如图十。 图十步骤五:加载脚本语言Lumerical脚本语言代码:run;f=getdata("Monitor1","f");x=getdata("Monitor1","x");y=getdata("Monitor1","y");simf=f(1);E2=getelectric("Monitor1");# plot cross section of nearfieldimage(x*1e9,y*1e9,E2,"x (nm)","y (nm)","Nearfield intensity (logscale)","logplot");# plot y-slice of near field in middle of photoresist yslice=46;?y(yslice)*1e9;title="Near field intensity @"+num2str(c/simf*1e9)+" nm";plot(x*1e9,pinch(E2,2,yslice),"x (nm)",title);步骤六:结果分析运行脚本后得到如下结果。图十一结果分析:通过银掩模层(y = 0 ~ 60 nm)和光阻层(y = -50 ~ 0 nm)的横截面近场强度的图以对数刻度表示。在银掩膜/光刻胶界面上可以清楚地看到表面等离子体模。周期结构允许法向入射光束与反向传播的表面等离子体波耦合,从而引起光刻胶层内部近场强度的亚波长变化[2]。图十二结果分析:可以看出,在光阻层中间,距离接触掩模30 nm处的近场光强被绘制成位置的函数。所示的高对比度允许最小尺寸约80纳米的图案转移到光刻胶上。用表面等离子体实现的亚波长结果远远低于436 nm源的衍射极限,因此适合纳米光刻应用。参考文献:[1]葛伟豪. 基于表面等离子体共振腔的可调谐纳米光刻技术研究[D].苏州大学,2011.[2]刘洪超. 基于表面等离子体的超分辨干涉光刻原理和方法研究[D].中国科学院大学(中国科学院光电技术研究所),2018.来源:摩尔芯创

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈