本系列作者: Julia Zhang, Hui Chen, Steven La Cava & Chris Normanshire
大功率激光器廣泛用于各種領域當中,例如激光切割、焊接、鉆孔等應用中。由于鏡頭材料的體吸收或表面膜層帶來的吸收效應,將導致在光學系統中由于激光能量吸收所產生的影響也顯而易見,大功率激光器系統帶來的激光能量加熱會降低此類光學系統的性能。為了確保焦距穩定性和激光光束的尺寸和質量,有必要對這種效應進行建模。在本系列的 5 篇文章中,我們將對激光加熱效應進行仿真,包括由于鏡頭材料溫度升高而引起的折射率變化,以及由機械應力和熱彈性效應造成的結構形變。本篇是這個系列的最后一篇內容。
使用 STAR 模塊分析 STOP 效應
在您的 FEA 軟件中完成結構與熱分析后,可將數據導出為一系列簡單的文本文件,以便利用 STAR 模塊導入到 OpticStudio 中。在這篇文章中,我們將演示如何執行完整的 OpticStudio 分析,以幫助您量化和了解系統光學性能的影響。有關所需 STAR 數據格式的完整詳細信息,請參閱 OpticStudio 幫助文件 STAR 選項卡> FEA 數據組>加載 FEA 數據章節。對于 Ansys Mechanical,有 ACT 擴展可用于以正確格式自動輸出數據。詳情請查看:OpticStudio STAR 模塊:Ansys 數據導出擴展。https://support.zemax.com/hc/zh-cn/articles/4406536983315
在 OpticStudio 中加載和擬合 FEA 數據
注意:這些步驟操作需要您持有 STAR Module 以及 OpticStudio 授權。
1 首先,我們打開文章下載附件中的 'Lens-3P_D25.4_2022.zar' 文件,這是系列文章第一篇中介紹的原始序列模式光學系統。我們將在 STAR 模塊上應用來自 FEA 工具的結構和熱數據,并評估其對名義光學系統性能的相關影響。
2 如果要加載 FEA 數據,我們點擊STAR…FEA數據…加載FEA數據(STAR…FEA Data…Load FEA Data),瀏覽到對應數據文件位置,選擇全部相關文件,并點擊打開(Open)。這里有多個文件夾,其中包含了來自分析流程中不同時間點的數據。首先,我們使用來自 “FEA_Data_800W_0010s” 文件夾的數據。
下拉菜單可用于向正確的表面分配結構數據集和熱數據集。右側顯示的布局圖可幫助我們檢查數據集是否良好匹配至系統元件表面,然后選擇確定(OK),以擬合數據。
使用擬合評估(Fit Assessment)工具可以檢查每個數據集的擬合誤差。默認情況下,在擬合表面形變前會刪除每個數據集內部的剛體運動(RBM)。這通常可以提高擬合準確度,但用戶能夠完全控制該設置。
在結構數據摘要與熱數據摘要(Structural Data Summary and Thermal Data Summary)表格中,用戶可以啟用或禁用每個表面的FEA數據集。
當啟用STAR數據后,我們可以檢查分析窗口,以查看FEA數據對系統性能的影響,如波前圖(Wavefront Map)、點列圖(Spot Diagram)、矢高圖(Sag Map)等分析。
通過 ZOS-API 將 FEA 數據導入到 STAR,并開展光學性能分析
我們已經演示了如何方便地將 FEA 數據手動導入到 STAR。另一種方法是使用 STAR-API 的功能實現這個流程的自動化。當需要分析多個 FEA 數據集時,這種做法特別有用。在本節中,我們將演示如何使用 Matlab 腳本為 FEA 模擬的多個時步加載 FEA 數據。腳本 “TransientAnalysis.m” 將包含在文章附件中。
代碼中所包含的函數
將在代碼中創建以下六種函數,并且在下方提供了對應的講解。
ListFiles():將數據文件夾作為輸入字符串變量,該函數將讀取數據文件夾中的文件名,并根據命名規則識別表面編號以及數據文件是形變文件還是溫度文件。輸出項是一個結構 Data 和一個整數型文件數,即文件夾中的文件數量。
RemoveAllFEA():該函數將允許從當前系統中刪除所有導入的 FEA 數據。它將檢查是否為每個表面導入了溫度或形變數據集,然后卸載那些已導入的數據。
Surface = TheLDE.GetSurfaceAt(i);
StarData=Surface.STARData;
if StarData.Temperatures.FEAData.AreTemperaturesImported
StarData.Temperatures.FEAData.UnloadData()
fprintf("Remove Temperature Data @ surface %d ",i)
end
if StarData.Deformations.FEAData.AreDeformationsImported
StarData.Deformations.FEAData.UnloadData()
fprintf("Remove Deformation Data @ surface %d ",i)
end
FEALoad():用于從數據文件夾導入和加載變形和溫度數據集。必須先卸載先前導入的數據,然后導入并應用新的 FEA 數據,否則結果將不會按預期更新。可以將 FEA 數據集的坐標轉換為每個表面的全局或局部坐標。可以在擬合之前進行可選擬合設置配置,例如在擬合結構數據之前移除 RBM,并為熱數據設置 GRIN 步長等。請注意,函數 ImportDeformations()/ImportTemperatures() 不僅導入數據,還執行數據擬合,因此應在此方法之前配置所有擬合設置。
if StarData.Deformations.FEAData.AreDeformationsImported
StarData.Deformations.FEAData.UnloadData() ;
end
StarData.Deformations.SetDataIsLocal;
StarData.Deformations.RBMs.Enable;
StarData.Deformations.FEAData.ImportDeformations(DeformationFilename);
StarData.Deformations.Fits.ApplyDeformations();
if StarData.Temperatures.FEAData.AreTemperaturesImported
StarData.Temperatures.FEAData.UnloadData() ;
end
StarData.Temperatures.SetDataIsGlobal;
StarData.Temperatures.Fits.GRINStep=0.2; StarData.Temperatures.FEAData.ImportTemperatures(TemperatureFilename);
StarData.Temperatures.Fits.ApplyTemperatures();
SpotDiagram():使用 ZOS-API 語法示例 22_seq_spot_diagram 中的代碼段在系統像面繪制點列圖。代碼包括以下步驟:
打開批次化光線追跡工具:
raytrace = TheSystem.Tools.OpenBatchRayTrace();
執行不考慮偏振的批次化光線追跡,使用歸一化光瞳坐標進行定義:
normUnPolData = raytrace.CreateNormUnpol((max_rays + 1) * (max_rays + 1),ZOSAPI.Tools.RayTrace.RaysType.Real,nsur);
normUnPolData.ClearData();
使用 Loop 添加追跡光線數目:
normUnPolData.AddRay(waveNumber, hx, hy_ary(field), px, py, ZOSAPI.Tools.RayTrace.OPDMode.None);
運行光線追跡工具并開始讀取結果:
raytrace.RunAndWaitForCompletion();
normUnPolData.StartReadingResults();
使用條件 While Loop,并且讀取光線結果:
[success, rayNumber, errCode, vigCode, x, y, ~, L, M, N, ~, ~, ~, ~, ~] = normUnPolData.ReadNextResult();
WavefrontMap():用于獲取系統的波前圖數據并且繪制對應結果。上述代碼包含以下步驟。
創建新的波前圖,并獲取分析中的設置選項:
WavefrontMapAnlysis=TheSystem.Analyses.New_WavefrontMap();
WavefrontSettings=WavefrontMapAnlysis.GetSettings();
配置分析中的設置選項:
WavefrontSettings.Sampling=ZOSAPI.Analysis.SampleSizes.S_256x256;
WavefrontSettings.Field.SetFieldNumber(1);
WavefrontSettings.ShowAs=ZOSAPI.Analysis.ShowAs.FalseColor;
WavefrontSettings.STAREffects= ZOSAPI.Analysis.Settings.STAREffectsOptions.On;
應用設置并獲取分析結果:
WavefrontMapAnlysis.ApplyAndWaitForCompletion();
WavefrontMap_Results = WavefrontMapAnlysis.GetResults();
對于 2D 結果,使用 DataGrids 取回數據結果:
analysis_data =WavefrontMap_Results.DataGrids(1);
Nx=analysis_data.Nx;
Ny=analysis_data.Ny;
Z=zeros(Nx,Ny);
for x=1Nx
for y=1Ny
Z(x,y)=analysis_data.Values(x,y);
end
end
SagMap():用于獲取當前系統內的矢高圖數據并繪制對應結果。代碼將執行以下步驟。
創建新的矢高圖分析,并獲取分析中的設置選項:
SagMapAnlysis=TheSystem.Analyses.New_SurfaceSag();
SagSettings=SagMapAnlysis.GetSettings();
配置分析中的設置選項:
SagSettings.Sampling=ZOSAPI.Analysis.SampleSizes_Pow2Plus1_X.S_257x257;
SagSettings.ShowAs=ZOSAPI.Analysis.ShowAs.FalseColor;
SagSettings.Surface.SetSurfaceNumber(2);
應用設置選項并獲取分析結果:
SagMapAnlysis.ApplyAndWaitForCompletion();
SagMap_Results = SagMapAnlysis.GetResults();
對于 2D 結果,使用 DataGrids 取回數據結果:
analysis_data =SagMap_Results.DataGrids(1);
Nx=analysis_data.Nx;
Ny=analysis_data.Ny;
Z=zeros(Nx,Ny);
for x=1Nx
for y=1Ny
Z(x,y)=analysis_data.Values(x,y);
end
end
利用所創建的函數獲取光學性能分析結果
在這個示例中,從 FEA 軟件獲取不同表面在不同時間下的溫度和形變文件。本例中的時間分布包括 10 秒、60 秒、600 秒、1800 秒、3600 秒。
在主體函數中,已存在的 FEA 數據集將從系統中首先被移除,之后再將對應時步的溫度和形變數據載入至系統當中。我們可以使用 Matlab 將對應的點列圖以及波前圖分析結果進行展示和繪制。
RemoveAllFEA(TheSystem);
[Data,file_num]=ListFiles(Datafolder)
FEALoad(TheSystem,Data);
fig=SagMap(TheSystem,surf_num);
fig=SpotDiagram(TheSystem,[0]);
fig=WavefrontMap(TheSystem,field_num,STARoption);
保存 GIF 圖片
代碼的最后一個函數是把來自每個時間段文件夾的幀分析圖結合保存為 gif 格式圖形文件。
function SaveGif(figure,outputname,i)
Frame=getframe(figure);
nn=frame2im(Frame);
[nn,cm]=rgb2ind(nn,256);
if i==0
imwrite(nn,cm,outputname,'gif','LoopCount',inf,'DelayTime',1.5);
else
imwrite(nn,cm,outputname,'gif','WriteMode','append','DelayTime',1.5);
end
end
使用 SaveGif 與 For Loop,我們可以獲取連續的模擬分析結果。
使用 ZOS-API 代碼
該代碼為交互式代碼,需要確保在 Zemax License Manager 中已經安裝 STAR 模塊授權。
1.打開序列模式鏡頭文件。
2.在 Matlab下點擊交互式擴展(Interactive Extension),生成交互式鏈接模板代碼。
3.點擊編程…ZOP-API.NET應用…交互式擴展(Programming…ZOS-API.NET Applications…Interactive Extension)
4.在MATLAB中打開交互式代碼 TransientAnalysis.m,相應地調整下列部分,以自定義您的代碼:
5.運行此代碼,將生成下列gif文件。
通過下面的 outSpot.gif 示例,可以看到點列圖從名義性能在形變和溫度影響下,在 10 秒、60 秒、600 秒、1800 秒和 3600 秒時間間隔的變化情況。
這里給出了 outWavefront 的示例。這個 Gif 文件顯示了波前圖從名義系統到五個時步的變化情況。
結果與分析
當把結構 FEA 數據集和熱 FEA 數據集加載到系統中后,我們就可以檢查 FEA 數據對系統性能的影響。例如,我們可以看下系統照射 10 秒激光后的情況。正如下列離焦 RMS 光斑半徑曲線所示,我們的名義系統達到了衍射極限。
我們可以在這個曲線上,添加照射 10 秒激光后只顯示熱梯度效應以及同時顯示結構形變和熱梯度的離焦 RMS 光斑半徑曲線,正如您所看到的,10 秒高強度激光光束照射會顯著降低系統性能。RMS 光斑尺寸從幾微米增加至近 300 微米。
此外,在對照射 10 秒后的系統分析像面上的軸上主光線位置時,我們注意到主光線發生了顯著偏移。REAR 操作數返回了軸上主光線的徑向位置。它從名義位置移動了 109 微米。這樣就造成了用于描述成像角度偏差的瞄準誤差(BSER 操作數)。
如果我們使用快速聚焦(Quick Focus)工具重新為系統聚焦,像面移動近 4 毫米,而且性能會有所提高。現在,我們可以看到光斑尺寸縮小,波前差減少,但性能仍然遠未達到衍射極限。不過在刪除大量離焦后,我們現在能在波前圖中觀察到一些由于熱效應和結構效應導致的更精細結果。
接下來,我們將比較名義系統和系統在 5 個時步(即 10 秒、60 秒、600 秒、1800 秒和3600 秒)的波前差。
根據相關結果,從名義系統到 10 秒激光照射后的系統,我們觀察到 RMS 光斑半徑和 RMS 波前差顯著增加。這種性能下降是激光加熱的熱彈性效應和熱光學效應所導致的。隨著時間的推移,熱量可能會在系統上更加均勻地分布,從而導致光學元件的形狀和折射率梯度變化更加均勻/平滑。在較長的照射時間下,這可能導致光斑尺寸縮小以及 RMS 波前差減少。
此外,STAR 模塊還可提供系統查看器(System Viewer)工具,方便您查看鏡頭體內部的折射率梯度分布情況。下面所示的是 5 個時間間隔,即 10 秒、60 秒、600 秒、1800 秒、3600 秒時分別對應的折射率梯度分布。
在這個系統中,熱致效應導致聚焦光斑顯著增大,從而降低系統效率。如果改為使用更高透射率的光學膜層或修改系統外殼以改善冷卻,這些效應可以得到緩解。OpticStudio、OpticsBuilder 和 STAR 實現的工作流程能方便地評估這些設計增強功能,并通過快速迭代獲得ZUI優解決方案。
結論
在這篇文章中,我們使用 OpticStudio STAR 模塊演示了結構、熱和光學性能分析的端到端工作流程。我們從經過優化的序列模式系統開始,導出到 OpticsBuilder 開展光機設計,再導入回 OpticStudio 非序列模式,以執行光線追跡,并使用體探測器來捕獲由于激光加熱而導致的每個元件上的吸收通量。然后從 OpticStudio 非序列模式導出相關結果,共享給 FEA 工程師,以便開展 FEA 分析。在完成 FEA 分析后,我們使用 STAR 模塊把結構 FEA 結果和熱 FEA 結果導入回 OpticStudio 序列模式,以分析激光加熱導致的性能下降。
面向 OpticStudio 的 STAR 模塊提供的新功能可以將 FEA 結果直接集成到 OpticStudio 中。這有助于更全面地研究激光加熱引起的熱形變和結構形變所造成的影響。
通過結合使用 Zemax 工具套件、OpticStudio、OpticsBuilder 和 STAR 模塊,設計團隊能夠在其光學和光機設計工作流程中無縫集成 FEA 數據。此外,STAR-API 還可幫助工程師簡化和自動化完成整個流程。
-
激光器
+關注
關注
17文章
2485瀏覽量
60259 -
激光系統
+關注
關注
0文章
151瀏覽量
9389 -
STAR
+關注
關注
1文章
16瀏覽量
9153
原文標題:大功率激光系統的STOP分析5:OpticStudio STAR模塊工作流程
文章出處:【微信號:光電資訊,微信公眾號:光電資訊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論