新聞動態(tài)

News Center

Lumerical Python API (三) - 會話管理

發(fā)布日期:
2022-07-18

瀏覽次數(shù):

本文演示了 Lumerical 仿真軟件與 Python 聯(lián)合工作的具體流程,展示了開發(fā)復(fù)雜的自動化仿真計(jì)算和高級數(shù)據(jù)處理、繪圖的可行性。使用 Python API(即上一篇文章中提到的lumapi庫)即可實(shí)現(xiàn)仿真軟件與Python的交互操作。用戶可以用 Python 代碼實(shí)現(xiàn)對于 Lumerical 軟件仿真的初始化設(shè)置,運(yùn)行和迭代,以及數(shù)據(jù)傳遞和處理。

1. 開啟會話

連接到 lumapi.py 文件是啟用 Lumerical-Python API 接口的關(guān)鍵。首先需要導(dǎo)入 lumapi 庫并初始化會話 (初始化會話需要 GUI lisence),詳細(xì)方法參考Lumerical Python API (二) - 初始配置,之后便可以對仿真對象進(jìn)行訪問,相關(guān)的開啟會話函數(shù)在lumapi庫中均有定義:
fdtd?=?lumapi.FDTD()??#開啟會話 mode?=?lumapi.MODE() device?=?lumapi.DEVICE() interconnect?=?lumapi.INTERCONNECT()
這種類似構(gòu)造函數(shù)的命令中,帶有以下兩種可選參數(shù):


  • hide”:可設(shè)置為“True”或“False”,默認(rèn)為“False”,決定是否顯示仿真軟件的GUI/CAD界面;
  • filename”:默認(rèn)為空,保持默認(rèn)則創(chuàng)建一個(gè)新工程,如果提供了腳本文件,則會在新工程中運(yùn)行該腳本;如果輸入具體文件名則會打開相應(yīng)文件名的工程。


如果要打開名為simple_high_Q_cavity.fsp的工程,只需運(yùn)行:
shQc?=?lumapi.FDTD(filename='simple_high_Q_cavity.fsp',?hide?=?False)


如果要在FDTD中直接運(yùn)行名為simple_high_Q_cavity.lsf的腳本,且不顯示仿真軟件的GUI/CAD,只需運(yùn)行:


run_script?=?lumapi.FDTD(filename='simple_high_Q_cavity.lsf',?hide=?True)
2. 導(dǎo)入方法
使用API接口進(jìn)行編程時(shí),可以用Python定義函數(shù),也可以利用lumapi中的自動同步函數(shù),從 .lsf 腳本文件中導(dǎo)入函數(shù),具體方法是用eval( )函數(shù)執(zhí)行腳本。例如,要導(dǎo)入腳本字符串中的函數(shù),只需運(yùn)行:
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))
便會輸出結(jié)果“hello world”以及“11.2”。
要導(dǎo)入腳本文件“testScript.lsf”中的函數(shù),只需運(yùn)行:
fdtd?=?lumapi.FDTD() script?=?open('C:/desktop/testScript.lsf'.'r').read() fdtd.eval(code)
腳本也可以在構(gòu)造函數(shù)中作為參數(shù)來定義方法:
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支持使用構(gòu)造函數(shù)添加對象和從構(gòu)造函數(shù)設(shè)置仿真對象。構(gòu)造函數(shù)可以添加仿真區(qū),并設(shè)置相關(guān)的參數(shù),如位置、大小等等:

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


添加監(jiān)視器:

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)


如果對象的某一參數(shù)會受到其他參數(shù)影響,這時(shí)使用有順序的字典設(shè)置,要用到OrderedDict( )函數(shù),注意OrderedDict包只適用于Python 2,可以安裝適用于Python 3的Collections包。如果參數(shù)獨(dú)立,則可以直接用Python字典設(shè)置:



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



如果要給仿真對象修改或添加某些參數(shù),lumapi中均有相應(yīng)的函數(shù)來完成,也可以通過本文“2.導(dǎo)入方法”中提到的方式,用一些.lsf腳本命令實(shí)現(xiàn),例如添加長方體:


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


Python會自動刪除作用域以外的變量,因此大多數(shù)時(shí)候不需要手動關(guān)閉會話。在pyCharm中,Python程序運(yùn)行結(jié)束也會自動關(guān)閉會話,即所打開的仿真軟件窗口在程序運(yùn)行結(jié)束時(shí)會自動關(guān)閉。也有一些其他編譯器,不自動關(guān)閉會話,如果想手動進(jìn)行關(guān)閉,可以使用close( )函數(shù):

fdtd.close()??#關(guān)閉會話


本節(jié)簡單介紹了lumapi的會話管理,可以初步實(shí)現(xiàn)Lumerical仿真軟件與Python腳本的交互。Lumerical腳本語言可以看作是Python代碼的子集,lumapi給用戶提供了更為豐富的創(chuàng)造空間,原先.lsf腳本難以實(shí)現(xiàn)的功能,現(xiàn)在都有希望借助Python腳本實(shí)現(xiàn)。之后我們將討論兩種腳本之間的關(guān)聯(lián),并闡述Python與Lumerical之間數(shù)據(jù)傳遞的規(guī)律。

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


// 聯(lián)系我們//




電話:15521163312(微信同號)

郵箱:wenye@mooreda.com.cn



相關(guān)推薦

【Lumerical系列】無源器件-復(fù)用器件(3)丨模式(解)復(fù)用器
本期是Lumerical系列中無源器件專題-復(fù)用器件的第三期,涉及的器件...
Ansys 2024 R2-Ansys 光學(xué)與光子學(xué)仿真新功能介紹——Speos
1. 光學(xué)設(shè)計(jì)交換增強(qiáng)功能1.1 在2024 R1版本中引入的光學(xué)設(shè)計(jì)交...
Ansys 2024 R2-Ansys 光學(xué)與光子學(xué)仿真新功能介紹——Zemax
1. 離軸孔徑和RSI的公差操作數(shù)OpticStudio 將添加Zern...
Ansys 2024 R2-Ansys 光學(xué)與光子學(xué)仿真新功能介紹——Lumerical
Lumerical 新功能介紹1. CMOS圖像傳感光子逆向設(shè)計(jì)的改進(jìn)1...