Lumerical各仿真软件 (如FDTD, DEVICE, INTERCONNECT) 与Python编程语言的交互,依靠仿真软件预留的接口Python API实现,这种接口具体而言就是一个叫做lumapi的Python库。导入lumapi库并初始化会话即可实现仿真软件与Python的交互,该过程需要GUI lisence。Lumerical的求解器附带了一个基本的Python 3发行版供用户使用[1],可以直接从软件安装路径中的\Lumerical\v221\python-3.6.8-embed-amd64\打开python.exe并导入lumapi库:python的开发工具很多,个人习惯用pyCharm写代码,接下来以pyCharm为例,介绍使用Lumerical自带的Python配置新工程的过程。新建pyCharm工程时,在图1中黄圈位置,选择Lumerical自带Python作为解释器,在安装路径'Lumerical\\v221\\python-3.6.8-embed-amd64\\'下选python.exe即可 (不同版本的路径可能略有不同)。这样建立的工程,可以用pip等工具安装和管理包。
图一 使用Lumerical自带Python配置pyCharm工程
如果不使用Lumerical自带的Python作为解释器,用户想用自己配置的anaconda环境来使用Python,那就需要将lumapi的父目录附在当前目录上。用append()函数添加带有接口包的路径,让import类可以成功检索到lumapi模块:1 import sys, os
2 sys.path.append('C:\\Lumerical\v221\\api\\python\\') #Win默认路径
3 sys.path.append(os.path.dirname(__file__))
4 import lumapi
5 fdtd = lumapi.FDTD() #开启FDTD会话
使用append( )函数添加的路径,只在程序运行时生效。如果想直接从其他路径导入lumapi.py文件,可以使用load_source( )函数:1 import imp
2 apipath = 'C:\\Lumerical\v221\\api\\python\\lumapi.py' #Win默认路径
3 imp.load_source('lumapi', apipath)
4 import lumapi
5 fdtd = lumapi.FDTD() #开启FDTD会话
这里需要注意的是,用anaconda搭建环境时,只能选择python的版本,不能具体指定使用哪个python解释器,如图2所示。
所以在用anaconda作为新建工程的环境时,推荐将python版本设置为相同的3.6,如图2红框所示。以Lumerical 2022 R1版本为例,在安装路径Lumerical\\v221\\python-3.6.8-embed-amd64\\python.exe下,有其自带python,版本为3.6.8。如果选用其他版本,例如3.7、3.8等,可能会出现缺乏依赖报错等问题,例如常见的一个情况就是找不到interopapi.dll:
FileNotFoundError: Could not find module 'interopapi.dll' (or one of its dependencies). Try using the full path with constructor syntax. |
如果只是简单地将该dll文件复制到anaconda环境的路径下,是无法和python关联起来的,运行依然会报错。这种由于版本不同导致的问题,解决起来比较麻烦,不如在配置的时候选用版本相同的python作为解释器,避免这类问题出现。当然,正如图1处介绍的,也可以不使用anaconda搭建环境,在新建工程时直接用Lumerical自带的python作为解释器。
本节总结了Python API的初始配置技巧,后续文章会继续介绍会话管理、数据传递等,最终用实际的例子展示该过程。
[1]https://support.lumerical.com/hc/en-us/articles/360041873053-Session-management-Python-API