本文提出并演示了一種以二維光柵耦出的光瞳擴(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)行仿真。其次,我們在OpticStudio中構(gòu)建完整的出瞳擴(kuò)展系統(tǒng),并動(dòng)態(tài)鏈接到Lumerical以集成精確的光柵模型。然后,optiSLang用于通過修改光柵模型來全面控制系統(tǒng)級優(yōu)化,以實(shí)現(xiàn)整個(gè)出瞳擴(kuò)展系統(tǒng)所需的光學(xué)性能。
本篇文章分為上下兩個(gè)部分,下將詳細(xì)描述“第3步:優(yōu)化設(shè)置的內(nèi)容”,附件可通過”點(diǎn)擊此處“跳轉(zhuǎn)原公眾號文章獲取。
我們將首先在Lumerical和OpticStudio中構(gòu)建仿真系統(tǒng),它們是動(dòng)態(tài)鏈接的。參見Dynamic workflow between Lumerical RCWA and Zemax OpticStudio:https://support.zemax.com/hc/en-us/articles/6367505128979-Dynamic-workflow-between-Lumerical-RCWA-and-Zemax-OpticStudio。
然后,OpticStudio通過Python節(jié)點(diǎn)鏈接到optiSLang進(jìn)行優(yōu)化,如圖1所示。
圖1 Lumerical通過動(dòng)態(tài)鏈接到OpticStudio,OpticStudio 通過 Python 節(jié)點(diǎn)鏈接到 optiSLang,優(yōu)化由optiSLang控制。
如圖2所示,EPE系統(tǒng)包括兩個(gè)用于耦入和耦出的光柵。耦出光柵分為幾個(gè)區(qū),如左側(cè)所示。每個(gè)區(qū)都將經(jīng)過優(yōu)化,以具有不同的光柵形狀。右圖顯示了光在 k 空間中的傳播的變化情況。
有關(guān) k 空間的更多信息,請參閱以下文章:How to simulate exit pupil expander (EPE) with diffractive optics for augmented reality (AR) system in OpticStudio: part 1:https://support.zemax.com/hc/en-us/articles/1500005491081
圖 2 光柵布局圖以及光線在K空間的傳播
第3步:優(yōu)化設(shè)置(optiSLang)
3-2.參數(shù)系統(tǒng)
準(zhǔn)備好 Python 代碼后,我們就可以開始在 optiSLang 中進(jìn)行優(yōu)化了。第 一步是在 optiSLang中打開一個(gè)空文件,拖動(dòng)求解器向?qū)?,放入scenery中,然后選擇Python集成。
如下所示,會(huì)彈出向?qū)Т翱?,顯示Python代碼。我們將首先通過右鍵單擊變量(如 clen1)來設(shè)置參數(shù),然后選擇用作參數(shù)。我們將對從 clen1 到 power 的所有變量執(zhí)行此操作。如下所示,所選變量將顯示為左列“參數(shù)”。
設(shè)置完參數(shù)后,我們應(yīng)該測試 Python 代碼是否可以成功運(yùn)行。為此,我們應(yīng)該打開OpticStudio并打開交互式擴(kuò)展模式,如下所示。然后在求解器向?qū)е?,我們可以單擊向下箭頭并選擇“Test run with inputs”,如下所示。如果它運(yùn)行良好,您應(yīng)該看到,在OpticStudio窗口中,交互式擴(kuò)展的對話框?qū)@示為“已連接”。
如果測試運(yùn)行失敗,其中一個(gè)可能的原因是 Python 環(huán)境不對。用戶可以更改設(shè)置,如下所示,以查看是否可以解決問題。
計(jì)算完成后(在我們的測試中大概需要 13 分鐘),我們應(yīng)該在日志中看到消息“Manual test run successfully processed”,如下所示?,F(xiàn)在,如果我們轉(zhuǎn)到***.opd文件夾(可以通過右鍵單擊系統(tǒng)頭并選擇“show working directory”輕松訪問),我們可以找到輻照分布被導(dǎo)出到文件夾“\Parametric_solver_system\design_data”中,這是Python代碼中指定的路徑。
類似于對參數(shù)的設(shè)置,我們可以對結(jié)果做相同的操作。在這里,我們將右鍵單擊 Python 代碼中的變量““Uniformity”, “Contrast”, 和 “TotalPower”然后選擇“Use as response”。然后,這 3 個(gè)變量將在Responses的右側(cè)列中顯示。
向?qū)У南乱豁撘笥脩舳x每個(gè)參數(shù)的參考值和范圍。參考值將只遵循我們在上一步中設(shè)置參數(shù)時(shí)的定義。范圍由設(shè)計(jì)師決定,沒有標(biāo)準(zhǔn)參考值。用戶可以在下載鏈接中查看隨附的optiSLang文件,作為在優(yōu)化過程中確定范圍的參考。請注意,此范圍是絕 對的。在優(yōu)化過程中,參數(shù)不會(huì)突破邊界。這與Zemax OpticStudio優(yōu)化的設(shè)置不同。
在向?qū)У南乱豁撝?,我們需要根?jù)給定的響應(yīng)設(shè)置條件。如下圖所示,我們可以將響應(yīng)拖到底部以設(shè)置約束或目標(biāo)。在這種情況下,我們設(shè)置了 3 個(gè)目標(biāo),以極小化對比度、均勻性以及極大化總功率。我們還可以為對比度和總功率設(shè)置 2 個(gè)約束來告訴 optiSLang,避免一些極端情況,即結(jié)果是均勻的,而總功率極低,或者相反的情況。
結(jié)果一頁不需要操作。單擊“完成”按鈕后,工作區(qū)中將顯示參數(shù)系統(tǒng)。
3-3.(可選)設(shè)置并行計(jì)算
本節(jié)中的操作不是必須的。在這里,我們將展示如何在optiSLang端設(shè)置并行計(jì)算以加快優(yōu)化速度。如果用戶擁有多個(gè) Lumerical FDTD 求解器許可證,則可以考慮這樣做。要進(jìn)行此設(shè)置,第 一步是右鍵單擊參數(shù)化系統(tǒng)塊,選擇“編輯”,然后將極限極大值并行設(shè)置為6或任何不大于 8的數(shù)字或Lumerical FDTD求解器許可證的總數(shù)量,如下所示。
注意我們需要做同樣的事情來右鍵單擊 Python 節(jié)點(diǎn)并選擇“編輯”。要設(shè)置詳細(xì)信息,我們需要首先單擊右上角的漢堡標(biāo)記,檢查屬性和占位符,然后單擊“確定”按鈕。然后我們可以將極大并行設(shè)置為6,如下所示。請注意,我們還需要在窗口的下部將極大值并行設(shè)置為6。如果先設(shè)置此參數(shù),上面的 MaxParallel 也會(huì)自動(dòng)更改,但仔細(xì)檢查它是否按預(yù)期設(shè)置更安全。
然后,建議檢查“Retry execution”,將重試次數(shù)設(shè)置為 20,并將嘗試間隔延遲設(shè)置為 1000 毫秒。此設(shè)置可避免 optiSLang 嘗試訪問具有 1 個(gè)以上線程的同一 OpticStudio 實(shí)例的爭用條件。
如果并行設(shè)置是多個(gè),在運(yùn)行optiSLang時(shí),我們還需要打開相同數(shù)量的OpticStudio實(shí)例,那么optiSLang可以為每個(gè)實(shí)例創(chuàng)建一個(gè)線程。
3-4.靈敏度以及優(yōu)化設(shè)置
下一步是設(shè)置靈敏度分析。一般來說,靈敏度分析是一種找出對響應(yīng)影響極大的極其重要參數(shù)的方法,并生成顯示響應(yīng)和參數(shù)變化之間關(guān)系的理想元模型,以更好地了解系統(tǒng)行為。
靈敏度系統(tǒng)可以通過將向?qū)蟿?dòng)到參數(shù)化系統(tǒng)塊來設(shè)置,如下所示。參數(shù)和條件將被復(fù)制,我們不需要再次設(shè)置。默認(rèn)情況下,它將建議AMOP模型,我們可以保留此設(shè)置。AMOP是一種迭代抽樣方法,將設(shè)計(jì)采樣到設(shè)計(jì)空間中,直到達(dá)到目標(biāo)標(biāo)準(zhǔn) - 極大設(shè)計(jì)或模型質(zhì)量。因?yàn)楸灸P途哂懈叨确蔷€性,無法達(dá)到足夠的模型質(zhì)量,因此在下一階段將進(jìn)行實(shí)際運(yùn)行優(yōu)化。
類似地,我們將優(yōu)化向?qū)系?AMOP 模塊中以進(jìn)行優(yōu)化。請注意,當(dāng)它詢問優(yōu)化方法時(shí),我們應(yīng)該選擇Real Run,因?yàn)樵撓到y(tǒng)永遠(yuǎn)不會(huì)有高質(zhì)量的理想預(yù)后元模型(MOP)。MOP是在(Most and Will 2008)中提出的,它基于對理想輸入變量集和理想的近似模型(多項(xiàng)式或具有線性或二次基的MLS)的搜索。對于優(yōu)化算法,建議使用進(jìn)化算法,它適用于非常不均勻和不連續(xù)的解空間。
3-5.開始優(yōu)化
用戶只需打開一個(gè)OpticStudio并在交互式擴(kuò)展模式下準(zhǔn)備就緒即可。注意必須取消選中斷開連接時(shí)自動(dòng)關(guān)閉,如下所示。請注意,如果并行計(jì)算已設(shè)置為6,如上所述,用戶將需要在此處打開相同數(shù)量的實(shí)例(例如6個(gè)),optiSLang將同時(shí)訪問所有實(shí)例。
當(dāng)一切準(zhǔn)備就緒后,我們可以單擊按鈕進(jìn)行優(yōu)化。
在這個(gè)示例系統(tǒng)中,我們花了大約 2~3 天的時(shí)間在普通臺式 PC 上運(yùn)行此優(yōu)化。
3-6.優(yōu)化結(jié)果
通過雙擊進(jìn)化算法塊擴(kuò)展的后處理可以找到優(yōu)化結(jié)果,如下所示。
下圖中的紅色標(biāo)記設(shè)計(jì)稱為帕累托邊界。一般來說,帕累托邊界顯示了多個(gè)目標(biāo)之間的權(quán)衡,即不存在一個(gè)設(shè)計(jì)在各項(xiàng)指標(biāo)上均優(yōu)于另一個(gè)的情況。這意味著所有這些設(shè)計(jì)都顯示了多個(gè)標(biāo)準(zhǔn)的不同平衡。我們選擇了 3 個(gè)結(jié)果,如下所示 。986號的對比度比946號高,同時(shí)看起來更均勻。這意味著這里使用的標(biāo)準(zhǔn)可以改進(jìn),以更好地匹配人類視覺。
以下是本文未涵蓋的一些注意事項(xiàng),但用戶在嘗試為其系統(tǒng)遵循此過程時(shí)可能需要留意。
在本演示中,我們只考慮中心視場,即通常入射在波導(dǎo)上的準(zhǔn)直光束。為了更全面的優(yōu)化,可以添加更多視場以覆蓋全視野下的均勻性。
實(shí)際上,該系統(tǒng)僅設(shè)計(jì)用于單個(gè)波長。根據(jù)系統(tǒng)設(shè)計(jì),優(yōu)化可以包括多個(gè)波長。
一些輻照度分布看起來更均勻,但對比度更高。可以通過修改 Python 代碼來改進(jìn)標(biāo)準(zhǔn)。
相關(guān)閱讀
聯(lián)合方案 | Ansys二維光柵出瞳擴(kuò)展系統(tǒng)優(yōu)化(上)
Zemax Lumerical Speos 聯(lián)合實(shí)現(xiàn)衍射光波導(dǎo)AR系統(tǒng)設(shè)計(jì)仿真
Ansys Speos 聯(lián)合 optiSLang 背光板設(shè)計(jì)優(yōu)化方案
Ansys Zemax 與 Speos 關(guān)于汽車投影燈解決方案
聯(lián)合方案 | Speos 和 Lumerical 聯(lián)合 optiSLang 的顯示屏優(yōu)化設(shè)計(jì)
聯(lián)合方案 | Zemax + Speos 助力HUD抬頭顯示器設(shè)計(jì)