表面浮雕光柵(SRG)廣泛應用于各種傳統光學系統,如光譜儀、分束器、三維掃描系統、衍射透鏡和脈沖放大系統等。近年來,表面浮雕光柵在平視顯示器(HUD)、增強現實(AR)、虛擬現實(VR)頭戴顯示器(HMD)等現代設備中得到廣泛應用。它們能夠以任意角度衍射光線,綜合其波長和角度選擇性,使得光學系統比傳統設計更緊湊、更輕,而傳統設計通常需要使用棱鏡和自由曲面來達到同樣的性能,會導致系統更復雜,體積更龐大。 OpticStudio一直可以模擬光柵,但沒有考慮衍射效率。為了準確地反映衍射光線的衍射效率和偏振態,就必須在模擬時考慮光柵的微觀結構等特性。 本文將討論兩個用來模擬梯形和階梯光柵的DLL。承接上周的內容,下篇將包含DLL參數等。
DLL 參數
在OpticStudio 20.3中,共有5個RCWA DL用于模擬不同形狀的1D光柵:
srg_trapezoid_RCWA.dll
srg_step_RCWA.dll
srg_blaze_RCWA.dll
srg_GridWirePolarizer_RCWA.dll
srg_user_defined_RCWA.dll
本節描述了這些DLL的參數,從所有DLL相同的參數開始,然后解釋每個DLL的特定參數。
相同的參數
以下參數在所有 RCWA DLL 中具有相同的含義。 +周期/頻率(μm)和深度(μm) 這些凹槽周期單位為μm,光柵的剖面深度單位為μm。
當“+周期/-頻率(μm)”是正值,它對應于凹槽周期(μm);
當它是負值,對應于凹槽頻率(1 /μm)。周期和頻率是互為倒數的。圖10顯示了光柵的凹槽周期和深度。
圖10. 梯形和階梯光柵的槽深和凹槽周期。 建議周期不要太大,例如波長的100 倍。這意味著所需的?ZUI大級次非常大,以至于不能有一個準確的結果。有關ZUI大級次初始值的建議,請參閱"諧波(級次)的概念"部分。 ZUI大級次 請參閱"諧波(級次)的概念"部分。 這目前限制為10(共 21 個諧波)。當數字大于10時,在DLL中將其修改為 10。聯系支持團隊以增加限制。 旋轉光柵(°) 此參數允許用戶旋轉光柵線的方向。
當它設置為零時,光柵線沿著Y方向,這意味著光線在X方向彎曲。
當它設置為非零時,正值則光柵線以逆時針方向旋轉(+X +Y),負值則順時針向旋轉。請注意,此處描述的X和Y方向基于對象的本地坐標系統。
圖11. 光柵旋轉 135 度。 使用鍍膜文件 此參數是一個標志。如果是非零正整數,則表示分散數據(指數與波長)在文本文件中定義。文本文件必須保存在 {Zemax}CoatingsCOATING_xx.dat中,其中 xx 是"使用涂料文件"參數中指定的正整數。 例如,如果將"使用涂層文件"設置為 7,則將COATING_7.dat讀取分散數據。 在COATING_xx.dat文件中,散射數據的定義可用參考“The Libraries Tab > Coatings Group > Defining Coatings > The MATE Data Section"下的幫助文件。材料名稱應始終從RCWAxx開始,其中xx是兩位數的整數。所有文本依次排布。 例如,我們可以定義RCWA01TIO2。DLL將讀取 RCWA 材料1,并將忽略隨后的TIO2文本。圖12顯示了一個涂層文件與幾個材料散射數據的例子。
圖12. 如何在COATING_xx.dat中定義分散數據的示例。 材料編號可以指定光柵折射率(R)、環境折射率(R)或膜層折射率(R)。使用等于材料數乘以-1的負整數。 例如,如果我們要將RCWA02設置為Grate區域的索引數據,則只需將光柵折射率(R)設置為 -2。 查看”光柵折射率(R)、光柵折射率(I)、環境折射率(R)、環境折射率(I)“和”膜層折射率(R)、膜層折射率(I)、膜層頂部厚度(μm)、膜層側面厚度(μm)“小節獲取更多信息 插值 這個參數需是一個整數。
如果為零,DLL 將不使用插值模式。
如果設置為非零值,DLL將在插值模式下工作,這意味著DLL在計算時將在RAM中緩存RCWA數據。然后,這些數據用于插值以進行進一步的光線追跡。這可以顯著提高系統中許多光線追跡的速度,例如,跟蹤超過一百萬條光線。
當插值設置為1時,將使用201*201采樣網格。
當它大于1時,它代表采樣網格的大小。換句話說,用戶可以通過將插值設置為大于1的數字來定義采樣網格的大小。但請注意,ZUI低采樣網格大小為21。
當插值設置為負整數時,DLL將采取絕對值來查找采樣網格,但會使用不同的方法進行插值。這種插值方法更準確,但速度較慢。
設置插值參數是為了速度和精度之間的正確平衡。
圖13. 當參數插值為非零整數時,插值模式將打開。當它是負數的時,使用不同的插值方法。這種方法較慢,但更準確。 插值模式(Interpolation Mode)是如何工作的? 首先,在LM空間中定義一個采樣網格。當光線入射到光柵上時,光線的方向可以用單位矢量(L,M,N)表示。LMN也被稱為光線的方向余弦。當光線擊中光柵時,它在x和y方向上的方向余弦L和M被映射到LM空間。然后檢查ZUI近的四個采樣點,如果在這四個點中沒有任何一個點已經計算出RCWA數據,則計算這些點的數據并將其保存在RAM中。然后用這四個點對入射光的RCWA數據進行線性插值。注意,插值不僅是為了提高衍射效率,也是為了實現電場。換句話說,在緩存數據和插值的過程中,要充分考慮相位、偏振態和振幅的變化。 如果光柵數據或光的波長發生變化,DLL將創建另一個采樣網格來保存RCWA數據。因此,將光柵參數或波長設置為變量時,用戶不應在優化過程中打開插值功能。這意味著追蹤許多光線(>1000)時,插值會起到加速優化的作用。但是,如果在優化過程中僅通過光柵跟蹤幾條光線(如<10),建議關閉插值。 關于進一步的討論,請參閱“優化(Optimization)”一節。
圖14. 在插值模式下,衍射數據的計算如圖所示。 僅這些級次(Only these order) 當參數"僅這些級次"為0或負時,DLL將照常工作。所有級次都將追蹤。當該參數為正整數時,允許用戶指定用戶想要跟蹤的傳輸和反射中的衍射級次。 "僅這些級次"只是一個整數,所以下表是它的定義。下表將級次映射為唯一的正整數。
"僅這些級次"是2的冪級數的總和。 舉個例子,如果用戶想要追跡0級反射光線(R0)和+1級透射光線(T+1)。”僅這些級次“參數應該被設置為2^0 + 2^5 = 1 + 32 = 33。
圖.15 ”僅這些級次“ 允許用戶指定用戶想要跟蹤的傳輸和反射中的衍射級次 注意在使用這個參數的時候,開始級次和結束級次需要包含指定的追跡級次。 此參數也可以使用可視化工具設置。這是一種更容易的方法,因為不需要計算。
圖.16 可視化工具中可用直接設置該參數。 隨機模式
這也可以稱為蒙特卡羅方法或者概率分裂
當參數設置為0時,DLL正常工作
當設置為1,2或3時,隨機模式將會生效。當隨機模式工作時,DLL會讓光線隨機衍射,如圖17所示。跟蹤每個衍射級次的概率基于衍射級次之間的能量比。
圖17. 隨機模式下,任意入射光線會隨機衍射,產生衍射的級次的概率取決于每個級次的能量比。這張圖片顯示了只有1條光線隨機衍射的情況。
對于每條入射光線,可能有任意數量的出射光。要衍射的光線數量由計算決定(截至級次-初始級次+1)。換句話說,用戶可以設置參數"初始級次"和"截至級次"來定義出射的光線數量。同樣,在光線追跡過程中,隨機決定每一條光線的衍射級次。每個出射光線都攜帶Pi/n的功率,其中Pi是入射光線功率,n是出射線的數量。
圖18. 在隨機模式下,一條入射光線可用對應多條衍射出射光線。 注意,如果”僅這些級次“不為零,則隨機模式按照如下規則運行。
當隨機模式為1時,”僅這些級次“被忽略。
當隨機模式為2時,隨機模式先于”僅這些級次“生效,一條光線可能由隨機模式隨機化,但被"僅限這些命令"設置的規則阻止。
當隨機模式為3時,”僅這些級次“先于隨機模式生效,光柵仍然以隨機方式衍射光線,但衍射光線始終在"僅這些級次"指定的一組級次中隨機化。
錯誤日志 如果這個參數不為0,則會生成一個報告計算錯誤的txt文件。該日志文件會保存在{Zemax}DLLDiffractive中,并且與指定的衍射DLL同名。這一參數通常應該設置為0,除非出現了未知的錯誤。 查看”幾何錯誤“小節獲取更多相關信息。
梯形光柵參數(Trapezoid parameters)
以下是梯形光柵 (srg_trapezoid_RCWA.dll) 的參數: 深度,Alpha (度),Beta (度)和填充因子。 這四個參數按照如下規則控制光柵的形狀:
深度決定了光柵的高度,如圖19所示。
從-z旋轉到+x方向時,Alpha和Beta是正的,從+x旋轉到-z方向時,Alpha和Beta是負的。例如,在圖19中Alpha是正的,Beta是負的。
填充因子是0到1之間的數字,表示底面與凹槽周期的比值。
圖19. 梯形光柵的4個參數定義了光柵形狀。 膜層折射率(R)、膜層折射率(I)、膜層頂部厚度(μm)、膜層側面厚度(μm) 這4個參數用于模擬光柵的膜層。DLL可以使用戶定義頂部厚度(膜層頂部厚度(μm))和側面厚度(膜層側面厚度(μm))。 注意,膜層的厚度不包括在深度參數中。例如,如果深度是5 μm,膜層頂部厚度為200 nm,則光柵的總厚度為5.2μm。
圖11. 梯形光柵膜層的頂部厚度。 由于膜層材料可以是金屬,DLL提供了另外兩個參數來定義膜層材料的復折射率;實部為膜層折射率(R),虛部為膜層折射率(I)。在OpticStudio中,對于吸收材料來說,折射率的虛部通常是負的。例如,鋁的復折射率為0.7-7.0i。 膜層折射率(R)不能為零,但可以是負整數。當它是負整數時,意味著它由文本文件中的數據單獨定義。有關詳細信息,請參閱"使用鍍膜文件"部分。 光柵折射率(R)、光柵折射率(I)、環境折射率(R)、環境折射率(I) 光柵結構可分為兩個部分,如圖 21所示:由”Grate”和“Env“指示的2個不同區域,表示光柵及其環境。光柵被外部區域(Outside)和基板區域(Substrate)包圍。基板和外部區域的折射率由光學系統定義。光柵和環境的折射率由DLL中的參數定義。 DLL中包含了4個參數來定義光柵和環境的折射率。
光柵和環境的折射率均由復數定義。
對于光柵區域,折射率的實數部分和虛數部分由光柵折射率(R)和光柵折射率(I)指定。
對于環境區域,折射率的實數部分和虛數部分由環境折射率(R)和環境折射率(I)指定。
當光柵和環境的折射率的實數部分被設為0時,有一項特殊的定義。如果光柵折射率設為0,則表示光柵的折射率與基板的折射率一致。基板折射率由光學系統定義。同樣的,如果環境折射率設為0,則表示環境的折射率和外部區域的折射率一致。
光柵和環境的折射率的實數部分(R)可以是負數,意味著它由文本文件中的數據單獨定義
有關詳細信息,請參閱"使用鍍膜文件"部分。
圖21. 梯形光柵可用分為兩個區域,光柵(Grate)和環境(Env)。兩個區域的折射率可用分別定義。
層數
這個參數是用來建模梯形形狀的層數。有關更多信息,請查看“層的概念”一節。
鋸齒光柵參數(Blaze parameters)
鋸齒光柵的參數 (“srg_blze_RCWA.dll”) 與梯形光柵的參數(“srg_trapezoid_RCWA.dll”)一致,除了”深度“。 對于鋸齒光柵,深度可以由給定的Alpha和Beta參數計算得來,如圖22所示。
圖22. 鋸齒光柵的形狀由三個參數定義:Alpha,Beta和填充因子。
階梯光柵參數(Step parameters)
以下參數用于定義階梯光柵(“srg_step_RCWA.dll”)。 深度,階梯數和Alpha (度)。
深度決定了光柵的高度或厚度,如圖23所示。
階梯數定義了每個周期中階梯形狀的數量,如圖23所示。實際上,這通常與制造過程有關。請注意,光柵的形狀正在"向下"朝+x方向移動,如下圖所示。要反轉方向,用戶應將光柵繞z軸旋轉180度。
圖23.參數 “階梯數”定義了每個周期中階梯形狀的數量。
參數Alpha定義另一側的斜角,如下圖所示。當從+z旋轉到-x時,Alpha的符號是正的。圖24顯示了 Alpha為正的示例.
圖24. 參數 Alpha 定義了另一側的斜角。 每階梯層數(Layers per step) 這個參數定義了每個階梯中的層數,此參數只能在參數 Alpha 不為零的情況下使用。否則就是無效的,因為計算結果不會改變。下圖顯示了該參數如何影響斜面的采樣。
圖25. 參數Lays of 1 stp定義了每個階梯中的層數。 膜層折射率(R)、膜層折射率(I)、膜層頂部厚度(μm)、膜層側面厚度(μm) 這四個參數的定義與梯形光柵一致。參照梯形光柵中的解釋。
圖26. 階梯光柵膜層的頂部和側面的厚度。 光柵折射率(R)、光柵折射率(I)、環境折射率(R)、環境折射率(I) 這四個參數的定義與梯形光柵一致。參照梯形光柵中的解釋。
圖21. 階梯型光柵可用分為兩個區域,光柵(Grate)和環境(Env)。兩個區域的折射率可用分別定義。
網格偏振線柵參數(Grid Wire Polarizer parameters)
以下是網格偏振線柵參數(“srg_GridWirePolarizer_RCWA.dll”)的參數。 這種光柵基本上是二進制光柵。此DLL可用于建模網格線偏振器。 深度 (μm) 和填充因數
深度時光柵的高度。
填充因子是0到1之間的數字,表示柵格區域的寬度與周期的比值。如圖28所示。
折射率(R)和折射率(I) 與梯形光柵,鋸齒光柵和階梯光柵類似,網格偏振線柵可以分為四個區域,這兩個參數用于定義光柵區域的折射率,如圖28所示。 環境區域的折射率不能在DLL中定義,因為它總是與外部區域的數值保持一致。外部區域和基板區域的折射率都在OpticStudio中定義,它們不能在DLL中更改。
圖28. 網格偏振線柵可以分為四個區域:外部區域,光柵區域,環境區域和基板區域。光柵形狀由深度和填充因子決定。
用戶自定義光柵參數(User Defined Grating parameters)
用戶自定義光柵(“srg_user_defined_RCWA.dll”)只有一個參數。 文件編號 該參數必須是1-99內的正整數。DLL會從位于DocumentsemaxDLLDiffractive的名為“user_grating_data_xx.txt”的txt文件內讀取光柵數據,其中xx就是”文件編號“參數。 DLL將僅讀取用戶自定義的光柵文本一次,并將數據保存在內存中。如果文本被修改并且需要重新載入,則將"文件編號"參數設置為負數。確保通過系統中的光柵跟蹤至少一條光線以觸發重新加載:更新布局圖或使用射線跟蹤控制運行射線跟蹤。更新形狀數據后,請記住將"文件編號"參數設置為正值,讓DLL不會一直重新加載文本文件以更新光柵數據。
圖29. 用戶自定義的光柵數據寫在文本文件"user_grating_data_xx.txt"中,其中 xx 是正整數,可以通過使用 DLL"srg_user_defined_RCWA.dll"進行讀取。 用戶自定義光柵的文件格式 光柵形狀由多個層定義。每層由背景材料定義,并可選包含其他材料的幾個部分。有關層的更多信息,請參閱"層的概念"部分。 用戶定義的光柵文本文件包含3個關鍵字:"層數"、"層"和"節"。當 DLL 讀取文件時,它會逐行掃描文本以查找這些關鍵字。找到關鍵字后,它會讀取下一行上的數據。關鍵字行和以下行必須遵循下面所述的文件格式。其他部分可以添加任何文本使閱讀更加方便。 層數 "層數"關鍵字下的行應包含一個表示文本中定義的層數的整數。 層 "層"關鍵字下的行包括 4 個數字:
本節中要添加的節數
層的厚度(微米)
折射率的實數部分
折射率的虛數部分。
這里的折射率是"背景材料折射率"。 節 "節"關鍵字下的行包括4個數字:
該節的移位量
該節的寬度
折射率的實數部分
折射率的虛數部分
請注意,移位和寬度都沒有單位。它們表示與該光柵周期的比率。折射率是覆蓋背景材料折射率的"節折射率"。位移參數定義了相對于單個周期框左邊緣的中心位置。如圖30的例子中,位移量=0.5,寬度=0.5,它們定義了一個從0.25開始到0.75結束的節。 用戶自定義光柵數據的例子 圖30展示了一個由用戶自定義光柵文件定義的光柵,右側是數據文件,左側是光柵示意圖。在這個例子中,所有的層都只有一個節,但是每一層可以包含0個或多個節。同時也請注意,同一層中包含兩種不同材料時,其中一種需要被定義為”背景材料參數“,另一種則被定為節參數。哪一個作為背景材料取決于用戶自身。
圖30. 用戶自定義光柵的一個例子。移位量相對于單個周期框的左邊緣。寬度以位移量所定義的位置為中心。 編輯用戶自定義光柵的工具 雖然用戶定義的光柵數據可以在文本編輯器(如記事本)中直接編輯,但也可以在可視化工具中進行編輯,如圖31所示。用戶需要設置一個帶有"srg_user_defined_RCWA.dll"DLL的虛擬系統來讀取此文本文件。可視化工具還可以讀取其他RCWA DLL定義的光柵數據。 當然,在編輯后,數據只能輸出為用戶自定義光柵數據。
圖31. 可視化工具可以讀取,編輯保存用戶自定義光柵數據。
審核編輯:郭婷
-
顯示器
+關注
關注
21文章
4947瀏覽量
139820 -
vr
+關注
關注
34文章
9633瀏覽量
150058 -
HMD
+關注
關注
0文章
99瀏覽量
21111
原文標題:ZEMAX軟件技術應用專題:利用RCWA方法模擬表面浮雕光柵的衍射效率(下)
文章出處:【微信號:光電資訊,微信公眾號:光電資訊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論