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