
本文解釋了如何在 SPEOS 與 Zemax 之間轉換二進制光源文件。
下載聯系工作人員獲取附件簡介在本文中,為用戶提供了一組Python代碼,用于在Zemax和SPEOS之間轉換源文件。
【資料圖】
有些光源,如 .IES 文件,可在 SPEOS 和 Zemax 中進行載入和讀取。然而,IES 源文件只包含角數據,只有當光學系統位于光源遠場時才適用。如果我們想要在光源文件中包含位置數據,則對應的光源文件格式在 SPEOS 和 Zemax 中是不同的。在 SPEOS 中,對應文件為 .RAY 文件;在Zemax中,有兩種對應文件格式,即 .DAT(單色)和 .SDF(多色)。
在第一部分中,我們描述了 Zemax 與 SPEOS 分別使用的光源文件格式。
在第二部分中,我們描述了如何使用文章中所提供的的 Python 代碼將 Zemax 光源轉換為 SPEOS 光源,所使用的示例光學文件為 rayfile_LCB_G6SP_100k_20210701_Zemax.dat。
在第三部分中,我們描述了如何使用文章中所提供的的 Python 代碼將 SPEOS 光源轉換為 Zemax 光源,所使用的示例光學文件為 rayfile_LCB_G6SP_100k_20210701_Speos.ray。
SPEOS 以及ZEMAX 光源文件格式在本章節中,介紹了 Zemax 和 SPEOS 的光源文件格式。但這并不是本文的主要目的,但用戶可以按照這里描述的定義創建自己的 SPEOS 或 Zemax 光源文件。
.RAY、.SDF 和 .DAT 的文件格式都是以二進制形式定義的。二進制光源文件包含一個數據頭結構,然后是每條光線的數據。SPEOS 和 Zemax 光源文件包含不同的數據標題信息,光線數據也將按照不同的順序定義。
1.1 SPEOS 光源文件格式
SPEOS 光源文件數據標題結構將包含 28 字節,即 7 個雙精度數值,分別表示如下內容:
1:輻射功率
2、3、4、5、6:定義光線文件的版本
7:光度學功率
在文件數據標題之后定義了每條光線的數據,每條光線將包含 8 個雙精度數據:
XYZLMNWavelengthEnergyX, Y, Z 表示光線的位置
L, M, N 表示光線的方向
Wavelength 表示光線的波長
Energy 表示光線的能量,以 Watts 為單位
1.2 Zemax 光源文件格式
Zemax 光源文件的格式在 Zemax 幫助手冊中的如下章節中有詳細描述:
The Setup Tab > Editors Group (Setup Tab) > Non-sequential Component Editor > Non-sequential Sources > Source File
在本文章中,我們也將簡單進行說明。Zemax 二進制光源文件將具有 208 字節,其中對應為:
描述部分包含 100 字節,其他數據的大小為 4 字節,請在您創建自定義光源文件時對此謹慎。
ray_format_type 必須為 0(僅光通量格式)或 2(光譜顏色格式),不支持其他格式類型。當且僅當 ray_format_type 為 0 時,則 flux_type 為 0 Watts,以及 1 Lumens。對于光譜顏色格式,光通量必須以 Watts 為單位,波長必須以 μm 為單位。
在數據標題之后定義光線結構,光線結構格式取決于光線格式類型。
以下為單色光源的光線格式:
SPEOS 光線數據也相同,X、Y、Z 表示光線位置,L、M、N 表示光線方向。Zemax 光源文件中的光通量等效于 SPEOS 中的能量數據。
以下為復色光源的光線格式:
1.3 Speos 與 Zemax 光譜文件格式
有時我們可以找到與光源文件一起提供的光譜文件,所以我們添加了這一部分,以便光譜文件可以得到轉換和應用。兩個光譜文件都是文本格式定義的。
SPEOS 光譜文件以擴展名 *.spectrum 結束,將包含以下信息:數據標題、名稱、波長總數和它們的權重、具體波長和權重。
Zemax 光譜文件以擴展名 *.SPCD 結束,并且放置在 \Sources\Spectrum 文件夾中。文件將用于描述光源顏色模擬的用戶自定義光譜。文件格式為以下形式的成對數據:
# comment wavelength1 weight1wavelength2 weight2etc…
波長數據以 μm 為單位,并且需要以升序的形式排列。權重則表示為相對功率單位的無量綱形式。請注意定義的數據最少為 3 對,最多為 200 對。
將Zemax文件轉換至 SPEOS本章節解釋了如何使用 Python 代碼將 Zemax 光源文件轉換為 SPEOS 光源文件。
2.1 執行 Python 代碼
打開 Python IDLE 程序,注意本文中使用的 Python 版本為 3.9.2。
點擊 文件 > 打開:
選擇本文附件 ZIP 中名為 Convert_ZEMAX_to_SPEOS.py 的文件。在執行文件之前,請確保您已經將光源文件的路徑進行了對應修改:
如需要,修改 theZemaxSpectrumPath 至電腦內光源文件對應的路徑:
如果您傾向于在圖形用戶界面中選擇文件,您可以將后續三行的代碼取消 “注釋” 設置:
后續,點擊運行模塊:
在文章附件中,我們提供了后續使用的光源文件,用于介紹如何使用對應轉換器,文件為:
rayfile_LCB_G6SP_100K_20210701_Zemax.dat.
注意,通過 .DAT 的文件尾綴可以了解到該文件為單色光源文件,我們也支持 .SDF 文件的轉換。
在轉換過程中,將輸出一些重要的信息。轉換后得到的文件將保存至原光源文件相同的路徑當中。
2.2 Zemax 中的角向和位置分布結果
為了驗證光源文件轉換前后的一致性,我們將光源文件載入了 Zemax OpticStudio 后進行了光線追跡。
光源文件位于:\Document\Zemax\Objects\Sources\Source 文件夾,如此可以直接從光源文件列表中進行選擇。
下圖為光源文件和光源類型的選擇:
我們創建了一個極探測器 (Detector Polar) 用于觀察角向分布情況。最大的角度為 180 度,并且徑向和角向像素數量設置為 180。
同樣也創建了一個矩形探測器 (Detector Rectangle),參數為 Z = 1mm、X Half Width = Y Half Width = 10 mm 以及 #X Pixel = #Y Pixel = 100。也將使得我們可以在 1mm 之外查看光源發出的光斑情況。
以下為光源的角向和位置分布:
2.3 SPEOS 中的角向和位置分布結果
以下為 SPEOS 中的探測器參數:
以下為在 SPEOS 中查看到的光源角向和位置分布情況:
將 SPEOS 光源文件轉換至 Zemax本章節解釋了如何使用 Python 代碼將 SPEOS 光源文件轉換為 Zemax 光源文件。由于 SPEOS 光源文件將包含波長信息,轉換得到的 Zemax 文件將始終為 .SDF 文件。
我們將再次使用 IDLE Shell 3.9.2 運行對應代碼。使用的 Python 代碼文件名為:
Convert_SPEOS_to_ZEMAX.py
將文件路徑修改為電腦中存放以下光源文件的路徑:
rayfile_LCB_G6SP_100k_20210701_Speos.RAY
如需要,修改 SpeoSpectrumPath 至電腦中光源文件所處的路徑:
點擊執行模塊:
如果在 Python 窗口中未出現任何警告或錯誤,通常情況下表示轉換成功:
3.2 SPEOS 中的角向和位置分布結果
我們將使用與上述示例相同的探測器參數執行模擬,將得到與我們先前轉換完全相同的角向與位置分布結果:
3.3 Zemax 中的角向以及位置分布結果
生成的光源文件將位于:\Objects\Sources\Source 文件夾中,并且可以選擇成為光源文件。
轉換得到的光譜文件為:LCB_G6SP_20210701_spectrum.spcd,需要被放置在 \Objects\Sources\Spectrum 文件夾,并且可以選擇作為光源文件:
將使用與上述示例相同的探測器設置:
以下為最終得到的角向和位置分布結果:
3.4 其他注解
請注意 SPEOS 并不是唯一可以生成 .RAY 光源文件的軟件。
如果在轉換過程中收到 “Warning: File size is not 28 + 8 * 4 * N ? Please verify if it is a SPEOS .ray file.” 的錯誤提示,表示轉換得到的光源文件中將丟失部分光線數據。
標簽: 文件格式