Ansys Zemax | 大功率激光系统的 STOP 分析(五)

news2025/1/18 20:05:39

大功率激光器广泛用于各种领域当中,例如激光切割、焊接、钻孔等应用中。由于镜头材料的体吸收或表面膜层带来的吸收效应,将导致在光学系统中由于激光能量吸收所产生的影响也显而易见,大功率激光器系统带来的激光能量加热会降低此类光学系统的性能。为了确保焦距稳定性和激光光束的尺寸和质量,有必要对这种效应进行建模。在本系列的 5 篇文章中,我们将对激光加热效应进行仿真,包括由于镜头材料温度升高而引起的折射率变化,以及由机械应力和热弹性效应造成的结构形变。本篇是这个系列的最后一篇内容。(联系我们获取文章附件)

使用 STAR 模块分析 STOP 效应

在您的 FEA 软件中完成结构与热分析后,可将数据导出为一系列简单的文本文件,以便利用 STAR 模块导入到 OpticStudio 中。在这篇文章中,我们将演示如何执行完整的 OpticStudio 分析,以帮助您量化和了解系统光学性能的影响。有关所需 STAR 数据格式的完整详细信息,请参阅 OpticStudio 帮助文件 STAR 选项卡> FEA 数据组>加载 FEA 数据章节。对于 Ansys Mechanical,有 ACT 扩展可用于以正确格式自动输出数据。

在 OpticStudio 中加载和拟合 FEA 数据

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\n”,i)

end

if StarData.Deformations.FEAData.AreDeformationsImported

StarData.Deformations.FEAData.UnloadData()

fprintf(“Remove Deformation Data @ surface %d\n”,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=1:1:Nxfor y=1:1:Ny

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=1:1:Nx

for y=1:1:Ny

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 实现的工作流程能方便地评估这些设计增强功能,并通过快速迭代获得最优解决方案。

结论

在这篇文章中,我们使用 OpticStudio STAR 模块演示了结构、热和光学性能分析的端到端工作流程。我们从经过优化的序列模式系统开始,导出到 OpticsBuilder 开展光机设计,再导入回 OpticStudio 非序列模式,以执行光线追迹,并使用体探测器来捕获由于激光加热而导致的每个元件上的吸收通量。然后从 OpticStudio 非序列模式导出相关结果,共享给 FEA 工程师,以便开展 FEA 分析。在完成 FEA 分析后,我们使用 STAR 模块把结构 FEA 结果和热 FEA 结果导入回 OpticStudio 序列模式,以分析激光加热导致的性能下降。

面向 OpticStudio 的 STAR 模块提供的新功能可以将 FEA 结果直接集成到 OpticStudio 中。这有助于更全面地研究激光加热引起的热形变和结构形变所造成的影响。

通过结合使用 Zemax 工具套件、OpticStudio、OpticsBuilder 和 STAR 模块,设计团队能够在其光学和光机设计工作流程中无缝集成 FEA 数据。此外,STAR-API 还可帮助工程师简化和自动化完成整个流程。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/943863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

问道管理:逾4600股飘红!汽车板块爆了,多股冲击涨停!

A股商场今天上午全体低开,但其后逐级上行,创业板指数上午收盘大涨超越3%,北向资金也完成净买入38亿元。 别的,A股商场半年报成绩发表如火如荼进行中,多家公司发表半年报后股价应声大涨,部分公司股价冲击涨停…

Docker从认识到实践再到底层原理(一)|技术架构

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

数字孪生:重塑政府决策与公共服务

在之前的文章中为大家分享了数字孪生在很多行业的应用场景,本文和大家一起探讨一下数字孪生在政务管理方面能有哪些应用,以及其对公共服务提供的积极影响。 1)城市规划方面 数字孪生技术可用于模拟城市的发展和规划。政府可以建立城市的虚拟…

Promise构造函数,属性以及方法应用

&#xff08;一&#xff09;promise构造函数 <script type"text/javascript">const myPromise new Promise((resolve, reject) > {setTimeout(() > {resolve(foo)},300)})myPromise.then((value) > {console.log(value,value)}).catch((err) > {…

2023蓝帽杯初赛ctf部分题目

Web LovePHP 打开网站环境&#xff0c;发现显示出源码 来可以看到php版本是7.4.33 简单分析了下&#xff0c;主要是道反序列化的题其中发现get传入的参数里有_号是非法字符&#xff0c;如果直接传值传入my_secret.flag&#xff0c;会被php处理掉 绕过 _ 的方法 对于__可以…

蓝牙模块产品认证-国际市场准入准则之加拿大IC认证基础知识

蓝牙模块产品认证-国际市场准入准则之加拿大IC认证基础知识 一&#xff1a;前言加拿大IC介绍 1.1&#xff1a;IC更名 2016年3月加拿大工业部(IC, Industry Canada)正式更名为加拿大创新、科学和经济发展 部(ISED, Innovation, Science and Economic Development Canada) ISED…

客观-【2 线性表】

关键字&#xff1a; 求一阶导数、建立有序单链表时间复杂度、静态链表的指针、链表查找数据x的序号

五、升压电路boost

开关导通时&#xff1a;输入电压对电感充电&#xff0c;形成回路&#xff0c;vi—>电感L—>开关管q&#xff1b; 开关断开时&#xff1a;输入的能量和电感能量一起向负载提供能量&#xff0c;形成回路&#xff0c;Vi—>L—>D—>C—>RL&#xff0c;因此输出电…

R语言APRIORI关联规则、K-MEANS均值聚类分析中药专利复方治疗用药规律网络可视化...

全文链接&#xff1a;http://tecdat.cn/?p30605 应用关联规则、聚类方法等数据挖掘技术分析治疗的中药专利复方组方配伍规律&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 方法检索治疗中药专利复方&#xff0c;排除外用中药及中西药物合用的复方。最近我们…

前端 -- 基础 VSCode 工具生成骨架标签新增代码 解释详解

目录 文档类型声明标签 Lang 语言种类 字符集 文档类型声明标签 <!DOCTYPE> 文档类型声明&#xff0c;作用就是告诉浏览器 当前的页面是 使用哪种 HTML 版本 来显示的网页 HTML 版本也很多呀 &#xff0c;比如 &#xff1a; HTML5 ,HTML4&#xff0c;XHTML 等…

Android 手游聚合SDK小知识(一)

前言 回头想想&#xff0c;在安卓游戏SDK这个领域&#xff0c;我也呆了4年了&#xff0c;从啥都不懂的小菜鸟&#xff0c;逐渐靠自己不断学习&#xff0c;对这个行业也算有了一些理解&#xff0c;趁着最近有空&#xff0c;我想了一下&#xff0c;还是把最近这几年对游戏SDK聚合…

.jar中没有主清单属性【已解决】

原因 对jar解压缩&#xff0c;可以看到有一个MANIFEST.MF文件&#xff0c;此文件就是jar运行时要查找的清单目录。 主清单数据&#xff0c;就是我们要运行的主类即程序入口&#xff0c;缺少主清单属性&#xff0c;就不知道从哪开始运行。 因此我们需要对项目进行配置&#xff…

华为数通方向HCIP-DataCom H12-821题库(单选题:161-180)

第161题 以下关于 URPF(Unicast Reverse Path Forwarding) 的描述&#xff0c; 正确的是哪一项 A、部署了严格模式的 URPF&#xff0c;也能够可以同时部署允许匹配缺省路由模式 B、如果部署松散模式的 URPF&#xff0c;默认情况下不需要匹配明细路由 C、如果部署松散模式的…

[java基础知识复习] Java基础知识总结分享一

写代码&#xff1a; 1&#xff0c;明确需求。我要做什么&#xff1f; 2&#xff0c;分析思路。我要怎么做&#xff1f;1,2,3。 3&#xff0c;确定步骤。每一个思路部分用到哪些语句&#xff0c;方法&#xff0c;和对象。 4&#xff0c;代码实现。用具体的java语言代码把思路…

蓝牙模块产品认证-国际市场准入准则之欧美CE认证基础知识

蓝牙模块产品认证-国际市场准入准则之欧美CE认证基础知识 一&#xff1a;前言欧盟市场准入介绍 1.1&#xff1a;CE适用范围 欧盟(EU : European Union)有27成员国、其中大家熟知的国家有法国、德国、意大利、奥地利匈牙利、荷兰、波兰、西班牙、葡萄牙、希腊、丹麦、瑞典、比利…

接地气的开源读书讨论会!KCC@广州首次活动圆满结束

前期推文链接&#xff1a;KCC广州开源读书会&广州开源建设讨论会 More 2023 年 8 月 20 日&#xff0c;KCC广州在暨南大学石牌校区成功举办了其首场读书会 & 开源讨论会。这标志着 KCC广州首次正式步入公众视野&#xff0c;开展开源交流活动。 开源社副执行长、KCC广州…

信驰达CC2340系列低功耗蓝牙模块选型指南

自信驰达发布基于TI最新一代芯片研发的CC2340系列低功耗蓝牙模块后&#xff0c;您可能需要了解该系列模块之间有何差异&#xff0c;对您的项目来说&#xff0c;哪个模块最匹配且最有竞争力&#xff1f;本篇我们将对信驰达科技CC2340家族无线模块作对比分析&#xff0c;希望可以…

Ubuntu下安装nginx服务,实现通过URL读取ubuntu下图片

1.安装nginx包 sudo apt update sudo apt install nginx 2.安装完成后系统自动启动nginx sudo systemctl status nginx 查看nginx服务的状态 3.开启防火墙上的HTTP服务端口80 sudo ufw allow ‘Nginx HTTP’ 4.在浏览器输入 http://localhost 看到nginx的欢迎界面&#xff0c;…

C语言 - 结构体、结构体数组、结构体指针和结构体嵌套

结构体的意义 问题&#xff1a;学籍管理需要每个学生的下列数据&#xff1a;学号、姓名、性别、年龄、分数&#xff0c;请用 C 语言程序存储并处理一组学生的学籍。 单个学生学籍的数据结构&#xff1a; 学号&#xff08;num&#xff09;&#xff1a; int 型姓名&#xff08;…

【Day-22慢就是快】代码随想录-栈与队列-前K个高频元素

给定一个非空的整数数组&#xff0c;返回其中出现频率前 k 高的元素。 示例 1: 输入: nums [1,1,1,2,2,3], k 2输出: [1,2] 示例 2: 输入: nums [1], k 1输出: [1] ———————————————————————————————————————— 这道题目主要涉…