新聞動(dòng)態(tài)

News Center

Lumerical FDTD仿真中的數(shù)據(jù)傳遞

發(fā)布日期:
2022-05-20

瀏覽次數(shù):

以下文章來(lái)源于微信公眾號(hào):硅光口袋?,作者李子正



Lumerical軟件具有較強(qiáng)的擴(kuò)展性,可以仿真波長(zhǎng)量級(jí)光電器件中的各種現(xiàn)象。軟件官網(wǎng)提供了各方向的基礎(chǔ)案例,利用自帶的腳本語(yǔ)言和數(shù)據(jù)傳遞流,將一部分功能打包以供調(diào)用。我們?cè)谶M(jìn)行自己領(lǐng)域內(nèi)的仿真時(shí),可以借鑒案例思路,使用腳本控制整個(gè)仿真過(guò)程。這方面的教程基本沒(méi)有,導(dǎo)致我自學(xué)軟件的時(shí)候浪費(fèi)了大量時(shí)間,這期借助一個(gè)簡(jiǎn)單的例子:彎曲波導(dǎo)插入損耗的掃描,總結(jié)FDTD仿真中數(shù)據(jù)傳遞的方式,以及腳本控制該過(guò)程的方法。



首先,用如下一張動(dòng)圖來(lái)表達(dá)軟件中指令和數(shù)據(jù)的關(guān)系。這里我用編程中常見(jiàn)的語(yǔ)言來(lái)類(lèi)比(如云朵中所示),黑色箭頭代表指令的傳遞方向,紅色箭頭代表結(jié)果數(shù)據(jù)的返回方向?!癝cript File Editor”是個(gè)編譯器,其語(yǔ)法類(lèi)似C和matlab的混合體,也支持python,用它可以控制仿真的整體運(yùn)行,這就像主函數(shù)調(diào)用各個(gè)自定義函數(shù)并對(duì)變量進(jìn)行操作的過(guò)程,結(jié)果各函數(shù)會(huì)將結(jié)果數(shù)據(jù)返回?!癘ptimizations and Sweeps'是用來(lái)實(shí)現(xiàn)參數(shù)化掃描和優(yōu)化的模塊,相當(dāng)于一個(gè)自定義函數(shù),可以被主函數(shù)調(diào)用。剩下的部分都在項(xiàng)目樹(shù)中,“model”代表整個(gè)仿真模型,是極大的父類(lèi),包含了仿真區(qū)、結(jié)構(gòu)組、分析組、光源等子類(lèi),而波導(dǎo)、微環(huán)、監(jiān)視器等則是子類(lèi)的子類(lèi),子子類(lèi)。這些子類(lèi)中包含了各種可調(diào)參數(shù),包括位置、尺寸、材料等,以及用于記錄有限時(shí)域差分結(jié)果的數(shù)組變量,包括電場(chǎng)、磁場(chǎng)、透射譜等。


Lumerical FDTD仿真中的數(shù)據(jù)傳遞


該流程圖以FDTD Solutions為基準(zhǔn),可以推廣至其他幾個(gè)孿生軟件。接下來(lái),用一個(gè)很簡(jiǎn)單的測(cè)彎曲損耗的例子說(shuō)明該過(guò)程,模型就是一個(gè)槽波導(dǎo),如下圖。我們要實(shí)現(xiàn)的是一鍵掃描在不同彎曲半徑條件下,波導(dǎo)的插入損耗,并將相應(yīng)的結(jié)果圖畫(huà)出來(lái)。


Lumerical FDTD仿真中的數(shù)據(jù)傳遞


接下來(lái)按照前面的流程圖,描述具體設(shè)置。在父類(lèi)model中,在設(shè)置頁(yè)面設(shè)置變量bending_radius記錄波導(dǎo)的彎曲半徑,該參數(shù)可以被傳遞到任何子類(lèi)內(nèi),只需在設(shè)置頁(yè)面用腳本設(shè)置即可,具體如圖中所示。與使用其他仿真軟件類(lèi)似,所有的設(shè)置盡量參數(shù)化(也就是盡量用自變量彎曲半徑來(lái)表達(dá)其他變量),這樣后續(xù)想要自變量時(shí),其他內(nèi)容都會(huì)隨之改變,可以省去很多麻煩。


Lumerical FDTD仿真中的數(shù)據(jù)傳遞

Lumerical FDTD仿真中的數(shù)據(jù)傳遞


槽波導(dǎo)結(jié)構(gòu)是用圖中的90 degree bend結(jié)構(gòu)組定義的,其下嵌套三個(gè)子結(jié)構(gòu)組,分別代表中間彎曲波導(dǎo)、左側(cè)直波導(dǎo)和右側(cè)直波導(dǎo)三部分。變量bending_radius由父類(lèi)定義,記錄波導(dǎo)的彎曲半徑。在設(shè)置頁(yè)面腳本內(nèi)定義波導(dǎo)的寬度為0.6um,槽寬度為0.3um,通過(guò)設(shè)置mesh order實(shí)現(xiàn)覆蓋開(kāi)槽。



Lumerical FDTD仿真中的數(shù)據(jù)傳遞

Lumerical FDTD仿真中的數(shù)據(jù)傳遞

Lumerical FDTD仿真中的數(shù)據(jù)傳遞


類(lèi)似地,在存放監(jiān)視器的分析組IL_cal中,父類(lèi)中定義過(guò)的變量bending radius可以直接調(diào)用,在設(shè)置頁(yè)面定義監(jiān)視器的參數(shù)。同時(shí),在分析頁(yè)面調(diào)用監(jiān)視器FDTD計(jì)算得到的結(jié)果,給出計(jì)算插入損耗的定義,設(shè)置分析組返回插入損耗和波長(zhǎng)兩個(gè)結(jié)果。這兩個(gè)返回值可以選擇返回到父類(lèi)model中,統(tǒng)一管理方便調(diào)用,這個(gè)例子很簡(jiǎn)單只有一個(gè)分析組,所以不返回。雖然在流程圖里沒(méi)有體現(xiàn),但分析頁(yè)面的作用也相當(dāng)于自定義函數(shù),對(duì)于監(jiān)視器有限時(shí)域差分得到的結(jié)果,包括電場(chǎng)、磁場(chǎng)、時(shí)域頻域譜等,可以進(jìn)行取相位,計(jì)算時(shí)延色散,以及很多對(duì)于計(jì)算結(jié)果的初步處理。



Lumerical FDTD仿真中的數(shù)據(jù)傳遞

Lumerical FDTD仿真中的數(shù)據(jù)傳遞

Lumerical FDTD仿真中的數(shù)據(jù)傳遞



這樣項(xiàng)目樹(shù)部分就設(shè)置好了,其他不發(fā)生改變的部分例如襯底、包覆層、光源波長(zhǎng)范圍、監(jiān)視器監(jiān)視內(nèi)容等,可以將其看成常量,直接設(shè)置即可。這里為了簡(jiǎn)便我沒(méi)有特別設(shè)置網(wǎng)格,可以將網(wǎng)格的參數(shù)定義在父類(lèi)model里隨其他參數(shù)變化,也可以直接手動(dòng)定義,是具體情況而定。軟件里有三種組,布局組只有定義位置坐標(biāo)的作用,結(jié)構(gòu)組可以實(shí)現(xiàn)繞xyz三個(gè)軸的任意角度旋轉(zhuǎn)。結(jié)構(gòu)組和分析組涉及到參數(shù)傳遞,可以進(jìn)行父類(lèi)到子類(lèi)的繼承,可以選擇將這兩類(lèi)的參數(shù)定義在父類(lèi)model中進(jìn)行統(tǒng)籌管理。只有分析組具有自定義函數(shù)的功能,通過(guò)在上面提到的在分析頁(yè)面中寫(xiě)腳本,可以實(shí)現(xiàn)各種功能。



相信有些朋友也有這樣的感受:在草稿紙上計(jì)算大量點(diǎn)坐標(biāo),構(gòu)建了一個(gè)非常復(fù)雜的模型,滿懷期待地點(diǎn)擊運(yùn)行之后,經(jīng)過(guò)長(zhǎng)達(dá)十幾小時(shí)的等待,發(fā)現(xiàn)結(jié)果不盡人意,這時(shí)看著自己的模型,發(fā)現(xiàn)有些結(jié)構(gòu)上的坐標(biāo)已經(jīng)忘記當(dāng)時(shí)是怎么算的,想起來(lái)之后開(kāi)始修改,發(fā)現(xiàn)牽一發(fā)而動(dòng)全身,又得把所有點(diǎn)的坐標(biāo)重新算一遍。所以,在整個(gè)設(shè)置過(guò)程中,能參數(shù)化的地方盡量參數(shù)化,包括comsol等類(lèi)似的軟件,這會(huì)使整個(gè)工程自動(dòng)化,后續(xù)不管是優(yōu)化掃描還是導(dǎo)出到python、matlab處理,都方便很多,修改參數(shù)的時(shí)候也非常省心。

完成了項(xiàng)目樹(shù)部分的設(shè)置,接下來(lái)進(jìn)行器件設(shè)計(jì)中較常見(jiàn)的操作——參數(shù)掃描。軟件中將掃描、優(yōu)化、蒙特卡洛仿真和S參數(shù)提取放在了一個(gè)集合內(nèi),較常用的還是掃描。掃描可以多級(jí)嵌套,也可以作為子過(guò)程嵌套在優(yōu)化中?,F(xiàn)在有比較成熟的python的接口,做優(yōu)化或者基于優(yōu)化進(jìn)行逆設(shè)計(jì)都可以實(shí)現(xiàn)。這里只進(jìn)行對(duì)自變量彎曲半徑的掃描,直接用腳本編輯器完成,如下圖所示。


Lumerical FDTD仿真中的數(shù)據(jù)傳遞


當(dāng)然手動(dòng)設(shè)置也是可行的,掃描和優(yōu)化存在嵌套時(shí)可能手動(dòng)設(shè)置還更省心一點(diǎn)。如果先不運(yùn)行掃描,只執(zhí)行runsweep()函數(shù)之前的代碼,就在Optim-ization and Sweeps頁(yè)面得到掃描sweep_IL??梢钥吹?,參數(shù)和結(jié)果均符合腳本編輯器中的設(shè)置。


Lumerical FDTD仿真中的數(shù)據(jù)傳遞


執(zhí)行整個(gè)腳本,指令下達(dá)到Optimization and Sweeps,該函數(shù)循環(huán)十次,將父類(lèi)中的變量bending_radius從小到大設(shè)置為從1um到20um的長(zhǎng)度值,每次循環(huán)執(zhí)行一次FDTD仿真,計(jì)算當(dāng)前彎曲半徑下的結(jié)果,并將每次的兩個(gè)結(jié)果返回值記錄在數(shù)組IL和lamda中。整個(gè)流程遵循本文在前面的動(dòng)圖,實(shí)現(xiàn)對(duì)于不同彎曲半徑下波導(dǎo)插入損耗的計(jì)算,結(jié)尾處結(jié)果圖會(huì)直接彈出。這里再來(lái)看一下點(diǎn)擊運(yùn)行腳本后,仿真區(qū)的變化過(guò)程。


Lumerical FDTD仿真中的數(shù)據(jù)傳遞


除了FDTD以外,對(duì)于MODE,DEVICE,INTERCONNECT,本文提到的規(guī)律也有效,幾個(gè)軟件之間模型結(jié)構(gòu)是可以直接ctrl+c,ctrl+v的,處理數(shù)據(jù)的方式,寫(xiě)腳本的語(yǔ)法,也基本一致。在仿真更加復(fù)雜的目標(biāo)時(shí),變量和監(jiān)視器繁多,搞清楚數(shù)據(jù)的傳遞方式會(huì)顯得更加重要。


相關(guān)推薦

【2025 R1】Ansys CFD 2025R1版本Fluent電池模塊新功能
01簡(jiǎn)要說(shuō)明‐ 隨著電池仿真從模組級(jí)轉(zhuǎn)向電池包級(jí)甚至更大的集裝箱級(jí)別,電...
【Lumerical系列】基于LNOI平臺(tái)的低損耗高帶寬逆向設(shè)計(jì)光柵耦合器
本期文章將介紹一種基于X-cut絕緣體上鈮酸鋰(LNOI)的光柵耦合器結(jié)...
How to | LS-DYNA使用技巧(三)
本系列旨在探討在LS-DYNA仿真分析中若干問(wèn)題的解決方案和優(yōu)化策略,涵...
How to | LS-DYNA使用技巧(二)
本系列旨在探討在LS-DYNA仿真分析中若干問(wèn)題的解決方案和優(yōu)化策略,涵...