Zemax & Lumerical | 二維光柵出瞳擴(kuò)展系統(tǒng)優(yōu)化
簡(jiǎn)介
?
本文提出并演示了一種以二維光柵耦出的光瞳擴(kuò)展(EPE)系統(tǒng)優(yōu)化和公差分析的仿真方法。
?
在這個(gè)工作流程中,我們將使用3個(gè)軟件進(jìn)行不同的工作 ,以實(shí)現(xiàn)優(yōu)化系統(tǒng)的大目標(biāo)。首先,我們使用 Lumerical 構(gòu)建光柵模型并使用 RCWA 進(jìn)行仿真。其次,我們?cè)?OpticStudio 中構(gòu)建完整的出瞳擴(kuò)展系統(tǒng),并動(dòng)態(tài)鏈接到 Lumerical 以集成精確的光柵模型。最后,optiSLang 用于通過(guò)修改光柵模型來(lái)全面控制系統(tǒng)級(jí)優(yōu)化,以實(shí)現(xiàn)整個(gè)出瞳擴(kuò)展系統(tǒng)所需的光學(xué)性能。
?
本篇文章將分為上下兩個(gè)部分。(聯(lián)系我們獲取文章附件)
?
概述
?
我們將首先在 Lumerical 和 OpticStudio 中構(gòu)建仿真系統(tǒng),它們是動(dòng)態(tài)鏈接的。
?
然后,OpticStudio 通過(guò) Python 節(jié)點(diǎn)鏈接到 optiSLang 進(jìn)行優(yōu)化,如圖1所示。
?

?
圖1 Lumerical 通過(guò)動(dòng)態(tài)鏈接到 OpticStudio,OpticStudio 通過(guò) Python 節(jié)點(diǎn)鏈接到 optiSLang,優(yōu)化由 optiSLang 控制。
?
如圖 2 所示,EPE 系統(tǒng)包括兩個(gè)用于耦入和耦出的光柵。耦出光柵分為幾個(gè)區(qū),如左側(cè)所示。每個(gè)區(qū)都將經(jīng)過(guò)優(yōu)化,以具有不同的光柵形狀。右圖顯示了光在 k 空間中的傳播的變化情況。
?

?
圖 2 光柵布局圖以及光線在K空間的傳播
?
第 1 步:系統(tǒng)設(shè)置 (Lumerical)
?
打開(kāi)附件中的 ZAR 文件時(shí),兩個(gè)光柵文件會(huì)被提取到設(shè)置的路徑中。第一個(gè)光柵如圖 3 所示,它是耦入光柵中使用的二元光柵。該光柵是固定的,在優(yōu)化過(guò)程中不會(huì)改變。
?

?
圖 3 耦入光柵結(jié)構(gòu)為二元光柵。
?
第二個(gè) .fsp 文件如圖? 4 所示,它是一個(gè)具有 7 個(gè)變量的平行四邊形柱體。在優(yōu)化期間,耦出中的每個(gè)區(qū)都將使用不同的變量組合集進(jìn)行優(yōu)化? 。有關(guān)優(yōu)化設(shè)置的更多信息將在優(yōu)化設(shè)置部分中進(jìn)行說(shuō)明。
?

?
圖 4 耦出光柵中的結(jié)構(gòu)為平行四邊形支柱。
?
這兩個(gè).fsp文件都是用動(dòng)態(tài)鏈接的形式在 OpticStudio 中用于模擬完整的EPE系統(tǒng)。
?
第 2 步:系統(tǒng)設(shè)置(OpticStudio)
?
如圖5所示,在該系統(tǒng)中,準(zhǔn)直光束入射到耦入光柵上,通過(guò)波導(dǎo)傳播,并與第二個(gè)光柵耦合。眼盒位于第二個(gè)光柵的較遠(yuǎn)部分。優(yōu)化的目標(biāo)是優(yōu)化眼盒接收的均勻性和總功率。
?

?
圖 5 初始EPE系統(tǒng)和眼盒輻照度。
?
在附件中有一個(gè) OpticStudio 中建立的整個(gè)EPE系統(tǒng)的 zar 文件。如圖? 6 所示,僅構(gòu)建了第二個(gè)光柵一半的區(qū)域。這是因?yàn)橄到y(tǒng)具有對(duì)稱性。從圖 7 可以看出,探測(cè)器的參數(shù)鏡像設(shè)置為? 1,這意味著在光線追跡期間,將始終對(duì)-x和+x部分進(jìn)行鏡像。這樣一來(lái),我們可以只用一半的光線獲得相同的模擬結(jié)果。
?

?
圖 6 OpticStudio 中的 EPE 系統(tǒng)設(shè)置。
?

?
圖7 探測(cè)器的鏡像參數(shù)設(shè)置為 1,這意味著該探測(cè)器在 x 方向上鏡像。
?
可以看出,? 系統(tǒng)中的所有光柵物體都已使用動(dòng)態(tài)鏈接 DLL 進(jìn)行設(shè)置,如圖? 8所示。?
?

?
圖 8 為? EPE 系統(tǒng)中的光柵加載動(dòng)態(tài)鏈接 DLL。
?
第3步:優(yōu)化設(shè)置(optiSLang)
?
3-1.Python 用于評(píng)估系統(tǒng)
?
附件中包含了一個(gè) python 文件 EPE_2D_for_optiSLang.py,用于將 optiSLang 鏈接到OpticStudio。使用python代碼將? Ansys optiSLang 附帶的優(yōu)化器與求解器Ansys Zemax OpticStudio + Ansys Lumerical 鏈接非常有用。優(yōu)勢(shì)在于可以在每個(gè)優(yōu)化周期中進(jìn)行數(shù)據(jù)的預(yù)處理跟后處理,靈活性非常高。本章節(jié)會(huì)對(duì)代碼結(jié)構(gòu)進(jìn)行解釋。
?
代碼的基本結(jié)構(gòu)首先由 OpticStudio 中的按鈕生成,如圖? 9 所示。?
?
圖 9 生成 Python 交互式擴(kuò)展代碼的樣板。
?

?
另外幾個(gè)模塊被導(dǎo)入到樣板中。模塊 numpy,scipy 用于對(duì)來(lái)自眼盒的輻照度數(shù)據(jù)進(jìn)行后數(shù)據(jù)處理。模塊matplotlib用于在眼盒上繪制和導(dǎo)出輻照度以供以后查看。導(dǎo)入 time 和 random 模塊,以便計(jì)時(shí)器跟蹤計(jì)算時(shí)間。
?

通過(guò)嘗試讀取變量 OSL_WORKING_DIR,我們可以知道這個(gè) Python 代碼是由? optiSLang 調(diào)用還是手動(dòng)調(diào)用。當(dāng) optiSLang 調(diào)用 Python代碼時(shí),將創(chuàng)建一些稱為環(huán)境變量的變量來(lái)傳遞一些 optiSLang 信息。即使這些變量未在 Python 文件中定義,當(dāng) optiSLang 調(diào)用代碼時(shí),它們是可用的。?
?

?
在這個(gè) Python 代碼中,有32個(gè)變量,如 clen1、h2、rot4、w1 和 power,用于優(yōu)化,需要由 optiSLang 定義。我們會(huì)將這些變量設(shè)置為 optiSLang 中的參數(shù),在靈敏度分析或優(yōu)化時(shí),optiSLang將自動(dòng)改變它們的值。如果我們不是從 optiSLang 直接運(yùn)行這個(gè) Python 代碼,那么這些變量的值將是常量,如下面的代碼所示。
?

?
如圖10所示,每個(gè)區(qū)的光柵參數(shù)是通過(guò)預(yù)設(shè)的4個(gè)角的數(shù)據(jù)通過(guò)插值來(lái)確定的。其中 ν 是 dC、dR、dL、θC、θR、θL 、h ,n 是 1,2,3,4,對(duì)應(yīng)于 4 個(gè)角。通過(guò)這個(gè)公式,每個(gè)區(qū)上的7個(gè)光柵參數(shù)可以通過(guò)具有一定權(quán)重(wn)和非線性值(p)的4個(gè)角的參數(shù)來(lái)控制。
?

?

?
圖 10? 從 4 個(gè)角插值的各個(gè)區(qū)的參數(shù)計(jì)算。
?
optiSLang 按照預(yù)定義的優(yōu)化算法改變這些參數(shù)。不同的參數(shù)值被設(shè)置到 python 代碼中,這將進(jìn)一步設(shè)置 OpticStudio 中每個(gè)光柵塊的參數(shù)。在這個(gè)過(guò)程中,Python代碼扮演著將這些變量轉(zhuǎn)換為 OpticStudio 中精確參數(shù)的工作。只有當(dāng)我們使用 optiSLang 而不是 OpticStudio 中的內(nèi)置優(yōu)化器優(yōu)化系統(tǒng)時(shí),這種預(yù)數(shù)據(jù)處理才有可能。通過(guò)這種方式,optiSLang 可以根據(jù)一些未直接暴露在OpticStudio UI中的虛擬或高級(jí)變量來(lái)優(yōu)化系統(tǒng)。
?
設(shè)置參數(shù)后,我們使用以下代碼段追跡光線。
?

?
使用 optiSLang 優(yōu)化系統(tǒng)的另一個(gè)好處是數(shù)據(jù)后處理。在這個(gè)優(yōu)化過(guò)程中,我們不會(huì)直接優(yōu)化眼盒上的輻照度分布。我們首先使用瞳孔函數(shù)對(duì)輻照度分布進(jìn)行卷積,如圖11所示,然后將優(yōu)化目標(biāo)設(shè)置為該卷積結(jié)果的均勻性。這個(gè)結(jié)果的x和y軸可以解釋為人眼在眼盒中的偏移。z軸是人眼看到的平均輻照度。
?

?

?
圖 11 使用瞳孔函數(shù)對(duì)輻照度分布進(jìn)行卷積.
?
根據(jù)卷積結(jié)果,我們可以計(jì)算對(duì)比度 、總功率和均勻性,如下所示。
?

?
這些標(biāo)準(zhǔn)的代碼定義如下。在這種情況下,我們主要希望針對(duì) Contrast 和 Total Power 進(jìn)行優(yōu)化。均勻性的功能類似于對(duì)比度,兩者都希望眼盒上的輻照度均勻。盡管它們用于相同的目標(biāo),但它們使用不同的定義,在這里我們考慮兩者。
?

?
Python 代碼的最后一部分,如下所示,繪制了眼盒輻照度的結(jié)果及其卷積結(jié)果。然后導(dǎo)出圖片。這對(duì)于用戶直接在 optiSLang 后處理中檢查每個(gè)優(yōu)化系統(tǒng)的輻照度分布非常有用。
?

?
進(jìn)一步的設(shè)置詳解我們會(huì)在后續(xù)的文章中,進(jìn)行介紹。