Ansys Lumerical | 帶2D輸出耦合器的出瞳擴(kuò)展器的優(yōu)化
附件下載
聯(lián)系工作人員獲取附件
本文提出并演示了一種以二維光柵為外耦合器的出瞳擴(kuò)展器(EPE)系統(tǒng)的仿真方法,并給出了優(yōu)化和公差分析的實(shí)例。
在此工作流程中,我們使用 Lumerical 構(gòu)建光柵模型,并使用 RCWA 求解器模擬其響應(yīng)。完整的EPE系統(tǒng)內(nèi)置于OpticStudio中,并動態(tài)鏈接到Lumerical,以集成精確的光柵模型。外耦合器(OC)是一種具有復(fù)雜結(jié)構(gòu)的二維光柵,其功能在局部進(jìn)行了優(yōu)化。最后,利用optiSLang通過修改光柵模型,對系統(tǒng)級優(yōu)化進(jìn)行整體控制,實(shí)現(xiàn)整個(gè)EPE系統(tǒng)所需的光學(xué)性能。

概述

設(shè)計(jì)具有EPE的AR系統(tǒng),可以增加眼盒的尺寸,這對系統(tǒng)級的優(yōu)化來說是一個(gè)挑戰(zhàn),因?yàn)樗枰罅康膮?shù)。一種解決方案是使用多個(gè)一維光柵來模擬瞳孔,有關(guān)詳細(xì)信息,請參閱《Ansys Lumerical | 采用一維光柵的出瞳擴(kuò)展器的優(yōu)化》。在本文中,波導(dǎo)由Lumerical設(shè)計(jì)的兩個(gè)光柵組成。內(nèi)耦合器(IC)是一維斜光柵,外耦合器(OC)是由平行四邊形柱組成的二維光柵。這些光柵通過動態(tài)鏈路在OpticStudio光學(xué)系統(tǒng)中使用。2D OC光柵被分成幾個(gè)部分,其中的光柵參數(shù)部分可以分別進(jìn)行調(diào)整。
然后,optiSLang 通過 Python 節(jié)點(diǎn)處理優(yōu)化。optiSLang 的使用帶來了很大的優(yōu)勢,例如能夠在每個(gè)優(yōu)化周期內(nèi)執(zhí)行預(yù)處理和后處理(例如,使用瞳孔函數(shù)對結(jié)果進(jìn)行卷積)。此外,可以通過在 python 代碼中定義函數(shù)來控制參數(shù),而不是直接使用不同區(qū)域中的所有單個(gè)光柵特性,從而減少變量總數(shù),從而縮短優(yōu)化時(shí)間。該過程由 Sensitivity 模塊啟動,以便系統(tǒng)在運(yùn)行優(yōu)化時(shí)可以識別影響最大的參數(shù)。在文章中《Ansys Lumerical | 采用一維光柵的出瞳擴(kuò)展器的優(yōu)化》 ,可以學(xué)習(xí)如何優(yōu)化一維光柵的最基本特性:高度、占空比和傾斜角度。在文章《Ansys Lumerical|帶 1D-2D 光柵的出瞳擴(kuò)展器》中,介紹了OpticStudio中2D光柵的設(shè)計(jì),但由于僅在OpticStudio中執(zhí)行,因此優(yōu)化受到限制。在這項(xiàng)工作中,我們演示了如何使用 optiSlang 通過使用 7 個(gè)不同的變量來局部控制平行四邊形柱子的形狀來執(zhí)行 2D 光柵的復(fù)雜優(yōu)化。
本文分為 4 個(gè)主要步驟,如下所示:
第 1 步:使用 Lumerical 設(shè)置光學(xué)系統(tǒng)
在本節(jié)中,我們提出了將被優(yōu)化的光學(xué)系統(tǒng)。我們可以在文章《Ansys Lumerical|帶 1D-2D 光柵的出瞳擴(kuò)展器》中找到同一類型的系統(tǒng)。請注意,在最初的設(shè)計(jì)中,能量不會分布在整個(gè)眼盒中,因?yàn)榇蟛糠止庠谂c折疊光柵和外耦合器進(jìn)行幾次交互后被外耦合。
第 2 步:在 optiSLang 中設(shè)置優(yōu)化
本文的目的是演示如何使用 optiSlang 來控制使用 Zemax 構(gòu)建的光學(xué)系統(tǒng)的優(yōu)化。本節(jié)介紹將用于優(yōu)化的參數(shù),以及用作優(yōu)化目標(biāo)的指標(biāo)。
第 3 步:查看優(yōu)化結(jié)果
優(yōu)化已經(jīng)設(shè)置,結(jié)果可用。在本節(jié)中,我們將提供有關(guān) optiSlang 文件結(jié)構(gòu)的信息,并解釋如何可視化來自多次優(yōu)化運(yùn)行的結(jié)果。
第 4 步:使用所需設(shè)計(jì)更新系統(tǒng)
最后一部分是分步指南,用于從不同的運(yùn)行中選擇特定設(shè)計(jì),并將相應(yīng)的參數(shù)推送到光學(xué)系統(tǒng)。
運(yùn)行和結(jié)果
第 1 步:使用 Zemax 和 Lumerical 設(shè)置光學(xué)系統(tǒng)
1.在Zemax OpticStudio中打開文件EPE_2D_out-coupler.zprj,查看系統(tǒng)設(shè)置。
IC是一個(gè)傾斜的光柵,被認(rèn)為已經(jīng)過優(yōu)化。該系統(tǒng)的核心是OC,它是一種二維光柵,由以六邊形周期結(jié)構(gòu)排列的平行四邊形柱組成。
在OpticStudio內(nèi)置的波導(dǎo)系統(tǒng)中,準(zhǔn)直光束入射到IC光柵上,并通過波導(dǎo)傳播到OC。二維光柵的六邊形周期結(jié)構(gòu)允許光束傳播并分布到波導(dǎo)中的大區(qū)域,如下圖所示。通過這種方式,光線通過OC傳播,并在多個(gè)位置被提取到眼盒,有效地模擬了瞳孔。

探測器設(shè)置為直接在超頻光柵的輸出端捕獲光線。優(yōu)化的目標(biāo)是增強(qiáng)朝向眼睛的輻照度圖輸出的均勻性,同時(shí)最大限度地提高總功率。
為了準(zhǔn)備優(yōu)化,OC光柵被分成幾個(gè)區(qū)域,在這些區(qū)域中,光柵特性將獨(dú)立優(yōu)化。
第 2 步:在 optiSLang 中設(shè)置優(yōu)化
2.在optiSLang中打開文件[[EPE_2D_out-coupler.opf]]以檢查優(yōu)化設(shè)置。
3.雙擊 Python 圖標(biāo)“EPE_2D_for_OptiSlang.py”以可視化代碼。
這種優(yōu)化不會只調(diào)整高度和占空比等最基本的參數(shù),而是會使用2D光柵提供的七個(gè)參數(shù)作為自變量,這些參數(shù)將用作變量,因此可以優(yōu)化柱子本身的形狀,如下圖所示。

為了進(jìn)行優(yōu)化,超頻光柵被劃分為幾個(gè)區(qū)域,在這些區(qū)域內(nèi),光柵特性將獨(dú)立優(yōu)化。不是在每個(gè)區(qū)域單獨(dú)設(shè)置所有這些參數(shù),而是通過定義如下的參數(shù)函數(shù)來控制跨 OC 多個(gè)區(qū)域的光柵參數(shù):

V代表這些變量

中的任意一個(gè)。n代表1,2,3,4中的任意一個(gè)數(shù)字,對應(yīng)于 4 個(gè)角的部分。由這個(gè)方程可知,每個(gè)部分的 7 個(gè)光柵參數(shù)可以通過 4 個(gè)角的參數(shù)和Wn和非線性功率p來進(jìn)行一些加權(quán)來控制。請注意,對稱性也被用于減少系統(tǒng)的大小和變量的數(shù)量。
在隨附的文件夾中,準(zhǔn)備了一個(gè)python文件EPE_2D_for_OptiSlang.py,用于將optiSLang鏈接到OpticStudio。有關(guān)如何設(shè)置此類文件的更多詳細(xì)信息,請參閱文章《Ansys Lumerical | 采用一維光柵的出瞳擴(kuò)展器的優(yōu)化》的附錄。
光柵參數(shù)按照預(yù)定義的優(yōu)化算法(例如進(jìn)化算法)通過optiSlang進(jìn)行變化。不同的參數(shù)值被設(shè)置到python代碼中,并將其向下傳輸?shù)絆pticStudio中的每個(gè)光柵部分。在這個(gè)過程中,Python代碼在OpticStudio中將這些變量轉(zhuǎn)換為確切的參數(shù)。只有當(dāng)我們使用optiSLang而不是OpticStudio中的內(nèi)置優(yōu)化器來優(yōu)化系統(tǒng)時(shí),才能使用Python中定義的函數(shù)進(jìn)行這種預(yù)數(shù)據(jù)處理。通過這種方式,optiSLang可以基于一些在OpticStudio UI中沒有直接公開的虛擬或高級變量來優(yōu)化系統(tǒng)。
設(shè)置好參數(shù)后,代碼的其余部分包括調(diào)用OpticStudio來追蹤光線并從探測器收集結(jié)果。使用 optiSLang 優(yōu)化系統(tǒng)的另一個(gè)好處是后數(shù)據(jù)處理。在這個(gè)優(yōu)化過程中,我們不直接優(yōu)化眼盒上的輻照度分布。取而代之的是,我們首先使用瞳孔函數(shù)對輻照度分布進(jìn)行卷積,然后根據(jù)這個(gè)卷積結(jié)果設(shè)置優(yōu)化目標(biāo)。在此示例中,優(yōu)化目標(biāo)是對比度、總功率和均勻性,定義如下:

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

第 3 步:查看優(yōu)化結(jié)果
4.雙擊后處理 (1) 圖標(biāo)以可視化優(yōu)化結(jié)果。
優(yōu)化開始時(shí),首先執(zhí)行靈敏度分析以確定最重要的參數(shù)。使用此輸入,進(jìn)化算法運(yùn)行并生成一系列結(jié)果。這些結(jié)果可以直接在帕累托圖中的optiSLang中可視化。
下圖中紅色標(biāo)記的設(shè)計(jì)稱為帕累托前。帕累托前沿說明了多個(gè)目標(biāo)之間的權(quán)衡,其中沒有一個(gè)設(shè)計(jì)在性能方面主導(dǎo)另一個(gè)目標(biāo)。這意味著所有這些設(shè)計(jì)都顯示了多個(gè)標(biāo)準(zhǔn)(例如均勻性與總功率)的不同平衡。我們收集了 3 個(gè)結(jié)果并在下面顯示它們。對于每個(gè)設(shè)計(jì)點(diǎn),對應(yīng)一對圖,分別顯示眼框內(nèi)的對比度和均勻性。

第 4 步:使用所需設(shè)計(jì)更新系統(tǒng)
5.將“敏感度”塊復(fù)制/粘貼到頁面中,然后雙擊塊標(biāo)題“AMOP (1)”進(jìn)行編輯。
a.在“適配”選項(xiàng)卡中,選中“顯示高級設(shè)置”選項(xiàng),然后選中“僅使用啟動設(shè)計(jì)”。
b.在“其他”選項(xiàng)卡中,選中“評估設(shè)置”菜單中的“再次求解開始設(shè)計(jì)”選項(xiàng)。
c.在“開始設(shè)計(jì)”選項(xiàng)卡中,選擇“從系統(tǒng)導(dǎo)入起始值”選項(xiàng),然后選擇在帕累托圖上確定的所需設(shè)計(jì)(例如#986)。
6.在OpticsStudio中,點(diǎn)擊編程選項(xiàng)卡中的“交互式擴(kuò)展”按鈕,然后運(yùn)行OptiSlang仿真。
優(yōu)化已經(jīng)在附件中完成,打開文件時(shí)可以可視化優(yōu)化結(jié)果。有時(shí),我們可能想選擇一個(gè)優(yōu)化的設(shè)計(jì),并在OpticStudio中進(jìn)行研究。但是,optiSLang 僅將輸入?yún)?shù)保存在表格中。我們不保留OpticStudio系統(tǒng)。為了在optiSLang中選擇特定的設(shè)計(jì),并將參數(shù)推送到OpticStudio的光學(xué)系統(tǒng)中,我們可以復(fù)制靈敏度模塊,并將其起點(diǎn)定義為所需的設(shè)計(jì)。通過禁用動態(tài)采樣,運(yùn)行該模塊將簡單地從所選設(shè)計(jì)中讀取參數(shù)值,并將相應(yīng)的數(shù)據(jù)推送到OpticStudio中。然后,用戶可以手動將新系統(tǒng)保存為其他名稱。在optiSLang中獲取具有任何設(shè)計(jì)設(shè)計(jì)的OpticStudio系統(tǒng)的另一種選擇是在python代碼中添加一個(gè)命令,以便在optiSLang中運(yùn)行優(yōu)化時(shí)直接將系統(tǒng)保存為.zmx文件(例如TheSystem.SaveAs('design_optimized.zmx)。請注意,第二種方法僅在我們在 optiSLang 中運(yùn)行優(yōu)化之前在 Python 中進(jìn)行更改時(shí)才有效。
重要模型設(shè)置
·由于系統(tǒng)依賴于 Python 代碼,因此假定已安裝 Python 以及腳本中調(diào)用的所有其他模塊。
·確保為所有光柵表面選擇了正確版本的動態(tài)鏈接。
·在optiSLang中運(yùn)行任何內(nèi)容之前,確保“交互式擴(kuò)展”在OpticStudio(編程選項(xiàng)卡)中處于活動狀態(tài)非常重要。
·在本文中,我們演示了optiSlang可用于處理具有許多參數(shù)的復(fù)雜優(yōu)化問題,但需要注意的是,在可能的情況下,依靠系統(tǒng)的對稱性始終是簡化優(yōu)化的最佳方法。
使用參數(shù)更新模型
·本例中的光學(xué)系統(tǒng)呈現(xiàn)的是具有兩個(gè)一維光柵的 EPE,這些光柵分為幾個(gè)部分。由用戶自定義光柵的形狀、性質(zhì)和位置。這些部分的形狀和數(shù)量也可以直接在光學(xué)系統(tǒng)中定制。
·變量和優(yōu)化目標(biāo)在設(shè)置 optiSLang 時(shí)定義,并且可以自定義。有關(guān)如何在optiSLang中設(shè)置優(yōu)化模型的更多詳細(xì)信息,請參閱文章《Ansys Lumerical | 采用一維光柵的出瞳擴(kuò)展器的優(yōu)化》一文的附錄。
·在本文中,變量是使用函數(shù)間接定義的。在示例的 Python 代碼中,它的名稱為“l(fā)insp”。任何自定義函數(shù)也可以由用戶使用,定義可以簡單地在Python代碼中更新。
進(jìn)一步發(fā)展模型
·在這個(gè)演示中,我們只考慮中心場,即通常入射到波導(dǎo)上的準(zhǔn)直光束。為了進(jìn)行更全面的優(yōu)化,可以添加更多視場以覆蓋全視場的均勻性。
·同樣,該系統(tǒng)僅針對單個(gè)波長而設(shè)計(jì)。根據(jù)系統(tǒng)設(shè)計(jì),優(yōu)化可以包括多個(gè)波長。
·一些輻照度分布看起來更均勻,但會導(dǎo)致更高的對比度。可以通過修改 Python 代碼來改進(jìn)標(biāo)準(zhǔn)。
·另一個(gè)需要優(yōu)化的維度是晶格角。在所展示的系統(tǒng)中,柱子以六邊形結(jié)構(gòu)排列,但Lumerical支持不同的排列,可以帶來更多的可能性。