簡介
本文提出并演示了一種以二維光柵耦出的光瞳擴展(EPE)系統優化和公差分析的仿真方法。
在這個工作流程中,我們將使用3個軟件進行不同的工作 ,以實現優化系統的大目標。首先,我們使用Lumerical構建光柵模型并使用RCWA進行仿真。其次,我們在OpticStudio中構建完整的出瞳擴展系統,并動態鏈接到Lumerical以集成精確的光柵模型。最后,optiSLang用于通過修改光柵模型來全面控制系統級優化,以實現整個出瞳擴展系統所需的光學性能。
本篇文章分為上下兩個部分,下將詳細描述“第3步:優化設置的內容”,附件可通過文末”閱讀原文“中的原文地址獲取。
概述
我們將首先在Lumerical和OpticStudio中構建仿真系統,它們是動態鏈接的。參見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節點鏈接到optiSLang進行優化,如圖1所示。
圖1 Lumerical通過動態鏈接到OpticStudio,OpticStudio 通過 Python 節點鏈接到 optiSLang,優化由optiSLang控制。
如圖2所示,EPE系統包括兩個用于耦入和耦出的光柵。耦出光柵分為幾個區,如左側所示。每個區都將經過優化,以具有不同的光柵形狀。右圖顯示了光在 k 空間中的傳播的變化情況。
有關 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步:優化設置(optiSLang)
3-2.參數系統
準備好 Python 代碼后,我們就可以開始在 optiSLang 中進行優化了。第一步是在 optiSLang中打開一個空文件,拖動求解器向導,放入scenery中,然后選擇Python集成。
如下所示,會彈出向導窗口 ,顯示Python代碼。我們將首先通過右鍵單擊變量(如 clen1)來設置參數,然后選擇用作參數。我們將對從 clen1 到 power 的所有變量執行此操作。如下所示,所選變量將顯示為左列“參數”。
設置完參數后,我們應該測試 Python 代碼是否可以成功運行。為此,我們應該打開OpticStudio并打開交互式擴展模式,如下所示。然后在求解器向導中,我們可以單擊向下箭頭并選擇“Test run with inputs”,如下所示。如果它運行良好,您應該看到,在OpticStudio窗口中,交互式擴展的對話框將顯示為“已連接”。
如果測試運行失敗,其中一個可能的原因是 Python 環境不對。用戶可以更改設置,如下所示,以查看是否可以解決問題。
計算完成后(在我們的測試中大概需要 13 分鐘),我們應該在日志中看到消息“Manual test run successfully processed”,如下所示?,F在,如果我們轉到***.opd文件夾(可以通過右鍵單擊系統頭并選擇“show working directory”輕松訪問),我們可以找到輻照分布被導出到文件夾“Parametric_solver_systemdesign_data”中,這是Python代碼中指定的路徑。
類似于對參數的設置,我們可以對結果做相同的操作。在這里,我們將右鍵單擊 Python 代碼中的變量““Uniformity”, “Contrast”, 和 “TotalPower”然后選擇“Use as response”。然后,這 3 個變量將在Responses的右側列中顯示。
向導的下一頁要求用戶定義每個參數的參考值和范圍。參考值將只遵循我們在上一步中設置參數時的定義。范圍由設計師決定,沒有標準參考值。用戶可以在下載鏈接中查看隨附的optiSLang文件,作為在優化過程中確定范圍的參考。請注意,此范圍是絕對的。在優化過程中,參數不會突破邊界。這與Zemax OpticStudio優化的設置不同。
在向導的下一頁中,我們需要根據給定的響應設置條件。如下圖所示,我們可以將響應拖到底部以設置約束或目標。在這種情況下,我們設置了 3 個目標,以最小化對比度、均勻性以及最大化總功率。我們還可以為對比度和總功率設置 2 個約束來告訴 optiSLang,避免一些極端情況,即結果是均勻的,而總功率極低,或者相反的情況。
最后一頁不需要操作。單擊“完成”按鈕后,工作區中將顯示參數系統。
3-3.(可選)設置并行計算
本節中的操作不是必須的。在這里,我們將展示如何在optiSLang端設置并行計算以加快優化速度。如果用戶擁有多個 Lumerical FDTD 求解器許可證,則可以考慮這樣做。要進行此設置,第一步是右鍵單擊參數化系統塊,選擇“編輯”,然后將極限最大值并行設置為6或任何不大于 8的數字或Lumerical FDTD求解器許可證的總數量,如下所示。
注意我們需要做同樣的事情來右鍵單擊 Python 節點并選擇“編輯”。要設置詳細信息,我們需要首先單擊右上角的漢堡標記,檢查屬性和占位符,然后單擊“確定”按鈕。然后我們可以將最大并行設置為6,如下所示。請注意,我們還需要在窗口的下部將最大值并行設置為6。如果先設置此參數,上面的 MaxParallel 也會自動更改,但仔細檢查它是否按預期設置更安全。
最后,建議檢查“Retry execution”,將重試次數設置為 20,并將嘗試間隔延遲設置為 1000 毫秒。此設置可避免 optiSLang 嘗試訪問具有 1 個以上線程的同一 OpticStudio 實例的爭用條件。
如果并行設置是多個,在運行optiSLang時,我們還需要打開相同數量的OpticStudio實例,那么optiSLang可以為每個實例創建一個線程。
3-4.靈敏度以及優化設置
下一步是設置靈敏度分析。一般來說,靈敏度分析是一種找出對響應影響最大的最重要參數的方法,并生成顯示響應和參數變化之間關系的最佳元模型,以更好地了解系統行為。
靈敏度系統可以通過將向導拖動到參數化系統塊來設置,如下所示。參數和條件將被復制,我們不需要再次設置。默認情況下,它將建議AMOP模型,我們可以保留此設置。AMOP是一種迭代抽樣方法,將設計采樣到設計空間中,直到達到目標標準 - 最大設計或模型質量。因為本模型具有高度非線性,無法達到足夠的模型質量,因此在下一階段將進行實際運行優化。
類似地,我們將優化向導拖到 AMOP 模塊中以進行優化。請注意,當它詢問優化方法時,我們應該選擇Real Run,因為該系統永遠不會有高質量的最佳預后元模型(MOP)。MOP是在(Most and Will 2008)中提出的,它基于對最佳輸入變量集和最合適的近似模型(多項式或具有線性或二次基的MLS)的搜索。對于優化算法,建議使用進化算法,它適用于非常不均勻和不連續的解空間。
3-5.開始優化
用戶只需打開一個OpticStudio并在交互式擴展模式下準備就緒即可。注意必須取消選中斷開連接時自動關閉,如下所示。請注意,如果并行計算已設置為6,如上所述,用戶將需要在此處打開相同數量的實例(例如6個),optiSLang將同時訪問所有實例。
當一切準備就緒后,我們可以單擊按鈕進行優化。
在這個示例系統中,我們花了大約 2~3 天的時間在普通臺式 PC 上運行此優化。
3-6.優化結果
通過雙擊進化算法塊擴展的后處理可以找到優化結果,如下所示。
下圖中的紅色標記設計稱為帕累托邊界。一般來說,帕累托邊界顯示了多個目標之間的權衡,即不存在一個設計在各項指標上均優于另一個的情況。這意味著所有這些設計都顯示了多個標準的不同平衡。我們選擇了 3 個結果,如下所示 。986號的對比度比946號高,同時看起來更均勻。這意味著這里使用的標準可以改進,以更好地匹配人類視覺。
后續
以下是本文未涵蓋的一些注意事項,但用戶在嘗試為其系統遵循此過程時可能需要留意。
在本演示中,我們只考慮中心視場,即通常入射在波導上的準直光束。為了更全面的優化,可以添加更多視場以覆蓋全視野下的均勻性。
實際上,該系統僅設計用于單個波長。根據系統設計,優化可以包括多個波長。
一些輻照度分布看起來更均勻,但對比度更高??梢酝ㄟ^修改 Python 代碼來改進標準。
審核編輯:劉清
-
FDTD算法
+關注
關注
0文章
12瀏覽量
7001 -
python
+關注
關注
53文章
4753瀏覽量
84078 -
求解器
+關注
關注
0文章
77瀏覽量
4472
原文標題:聯合方案 | Ansys二維光柵出瞳擴展系統優化(下)
文章出處:【微信號:光電資訊,微信公眾號:光電資訊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論