Ansys Zemax | 使用多重结构操作数控制单一结构系统中的参数

devtools/2024/11/24 15:24:11/

附件下载

联系工作人员获取附件

概述

这篇文章向您展示了如何使用多重结构编辑器来优化系统、调整公差以及对那些不能从其它编辑器中获取的数值设置跟随求解。

介绍

光学系统需要在不同状态或结构下进行建模时,OpticStudio中的多重结构 (Multiple Configuration, MC) 功能可用来支持这类系统的建模需求。它使得用户可以模拟例如变焦镜头、扫描镜或热变化(多温度)的光学系统。多重结构编辑器 (Multiple Configuration Editor, MCE) 用来定义不同结构下数值不同的系统参数。在变焦镜头中,镜头组之间的间距会发生变化。在热变化系统中,系统或元件所处的温度会改变。

在非多重结构的系统中,多重结构编辑器也有很多用处,它能够极大地拓展可以设为变量的参数的范围,从而用来优化系统。也可以设定公差来做扰动分析,或者利用求解功能与其它参数关联起来。本文将通过示例分别展示如何在这三种情况下的使用多重结构。

设置变量

优化是指系统性地改变一系列变量,使得系统的某个性能达到预期目标的过程。任何在镜头数据编辑器或者非序列元件编辑器中定义的数值都可以设为变量。但是还有许多系统和表面的参数不能直接在这些编辑器中定义,而是在其他的对话框中进行,这使得它们不能被直接设定成变量。例如系统的切趾因子 (Apodization factor)、系统波长 (System wavelength) 和表面孔径 (Surface Aperture) 都属于这样的参数

实际上除了在上述编辑器中定义的参数以外,任何能够在多重结构编辑器中定义的参数也都可以被设为变量。因此,即使您想要模拟的不是一个多重结构的系统,您也可以利用多重结构编辑器,把原本不可设为变量的参数设为变量。在OpticStudio的用户手册中的“多重结构”一章中包含了完整的多重结构操作数列表。其中,一些多重结构操作数控制的参数已经包含在编辑器中(例如操作数NPOS用来控制非序列物体的位置),另一些多重结构操作数则可以控制着本就无法设为变量的设置(例如操作数AFOC用来控制无焦像空间),但更多的多重结构操作数控制着那些原来不能进行优化的参数。请看如下示例。

打开示例文件中的Conic Interconnect.ZAR文件。该系统已经经过优化,实现了对数值孔径NA0.15入射的高斯光束有最大的耦合效率。目前的切趾因子是1,这意味着入瞳边缘处的光强为峰值处的1/e²。

图片

现在假设我们的目的是确定光源最理想的高斯光纤模式,以使耦合效率达到最大。这可以通过将最大耦合效率设为目标,优化切趾因子来实现。您可以使用多重结构操作数APDF来参数化地控制切趾因子的数值。打开多重结构编辑器(位于设置菜单最右边的编辑器 (MC Editor) 按钮),双击属性单元格,在操作数下拉菜单中选择APDF(或者在输入框中输入“APDF”),完成输入后您可以像在其它编辑器中一样将其设为变量。

图片

在添加了这个变量之后,与其他情况类似我们需要在评价函数中加入边界限制条件,以保证优化器不会得到一个不符合实际要求的解。添加多重结构操作数MCOG(多重结构操作数大于)并设为0以及多重结构操作数MCOL(多重结构操作数小于)并设为+5,确保它们的权重不为0,这会将切趾因子的变化限制在0到5之间。

图片

点击优化 (Optimize) 选项卡中的执行优化 (Optimize!) 按钮打开优化工具,设置迭代 (Cycles) 为自动 (Automatic),执行局部优化(算法为阻尼最小二乘法)。OpticStudio最终会将切趾因子优化到1.75。重复执行优化,可以看到该数值无法再进一步优化。需要注意的是,只有在光纤耦合计算的设置中勾选了“忽略源光纤 (Ignore Source)”时,光纤耦合效率的计算才会考虑切趾因子的影响。

同样的方法也适用于在通用绘图中把原本不可以设为变量的参数设为变量。在本例中,我们可以绘制优化操作数FICL与切趾因子之间的关系曲线图。打开一维通用绘图 (Universal Plot 1D),依次点击分析菜单中的通用绘图工具 (Universal Plot),1-维 (Universal Plot 1D),新建 (New)) 并如下图进行设置。

图片

图片

和预想的一样,我们可以清晰的看到耦合效率在1.75附近有一个峰值,并在偏离1.75后开始下降。当切趾因子为0时光线的分布是均匀的,从上图结果可以看出当光源光纤模式为均匀分布时耦合效率很差,这是因为OpticStudio在计算光纤耦合效率时默认接收光纤的模式是高斯型的。

公差分析

对于现有的公差操作数无法分析的参数,您也可以利用多重结构操作数来对其进行公差分析。多重结构操作数TMCO可以对任何可以在多重结构编辑器中定义的数值进行公差分析。我们接下来会查看一个具体的示例。有关公差分析的更多信息请查看“如何进行序列模式公差分析”文章:http://ueotek.com/solution_detail.php?solution_id=862

在本文提供的示例文件中打开Beam expander.ZAR文件。该系统为放大率是3倍的扩束系统,该系统已优化至能在波长为632.8nm的条件下输出准直的光束。假设在激光谐振腔中存在一些能够影响输出波长的不稳定因素,那么该系统对输入波长有多敏感呢?

图片

在不使用多重结构编辑器时,我们是无法对系统波长进行公差分析的。尽管存在公差操作数TWAV,但它只是用于把检测中的条纹公差转换算成实际物理尺寸的公差。然而我们可以利用多重结构操作数WAVE来分析当波长改变时系统的性能是如何变化的。首先,请在多重结构编辑器中定义一个单独的多重结构操作数WAVE。

图片

然后在公差菜单中打开公差数据编辑器 (Tolerance Data Editor),如下图所示定义一个公差操作数TMCO。在本例中,我们只关注系统对波长的灵敏度,假设波长的变动范围是±50nm。

图片

设置RMS波前为评价标准,采样数为5并且将补偿器设置为无,进行灵敏度分析 (Sensitive Analysis)。和预想中的一样,系统性能产生了显著的变化。系统设计上在波长为632.8nm时的名义波前差为0。计算显示系统在582.8nm波长下的波前差为0.39个波长,在682.8nm波长下的波前差为0.26个波长。

 Type

 Value

 Criterion

 Change

 TMCO 1 1

-0.05

 0.38769077

 0.38702420

TMCO 1 1

 -0.05

 0.26392698

 0.26326040

该方法同样可以在蒙特卡洛或反灵敏度分析中使用。

求解功能

多重结构操作数的另外一个重要应用是通过求解功能将参数与另一个数值联系起来。多重结构编辑器极大地拓展了可以通过求解功能联系起来的数值的范围。同样我们来看一个具体的示例。

在本文提供的示例文件中打开Schmidt-Cassegrain Telescope.ZAR文件。该文件模拟了一个包含校正透镜的双反望远镜系统。在序列模式中,我们在校正透镜后面设置一个单独的表面,来模拟系统中次级反射镜造成的孔径遮阑。理想状态下,遮阑的大小应该和次级镜面的大小一致。我们可以手动设置它的大小,但如果希望对其进行优化和公差分析,则将其设为求解值是更好的选择。

图片

在多重结构编辑器中定义两个多重结构操作数APMX(最大孔径)来控制表面3和5的最大孔径。表面3上有一个圆形的遮阑,所以它的最大孔径定义了遮阑的大小。表面5有一个圆形孔径,所以最大孔径即定义了该表面孔径的大小。

图片

在多重结构编辑器中同时定义这两个量,我们可以用一个拾取求解将它们联系起来。求解设置如下图所示。

图片

这样一来两个量就被联系到了一起,在系统被修改或者优化的时候,它们之间的相对关系将保持不变。

小结

这篇文章展示了多重结构操作数在优化、公差分析和求解设置方面可以发挥的作用。即使在单一结构的系统设计中,这些功能也能够被用来控制那些无法在其他编辑器中定义的参数。在原本就是多重结构的系统设计中,也可以通过设置拾取类型的求解值,保证不同的结构中同一参数的数值一致。


http://www.ppmy.cn/devtools/136575.html

相关文章

蓝桥杯每日真题 - 第22天

题目:(卡片) 题目描述(12届 C&C B组B题) 解题思路: 该问题要求用数字卡片从 1 开始拼出整数,直到某一时刻不能拼出时停止。要确定拼到哪个最大整数,需要统计 每个数字“1”被用…

电子应用设计方案-19:智能云饭锅系统方案设计

智能云饭锅系统方案设计 一、系统概述 本智能云饭锅系统旨在提供便捷、个性化和智能化的烹饪体验,结合云服务实现远程控制、食谱推荐和烹饪数据管理等功能。 二、系统组成 1. 锅体 - 采用高品质的不粘涂层内胆,确保米饭受热均匀且易于清洁。 - 具备良好…

大模型本地部署实践:Ollama+Open-WebUI(MacOS)

目录 什么是Ollama Ollama安装 对话界面可视化?Open-WebUI! 安装Open-WebUI 什么是Ollama Ollama是一个为简化大语言模型本地部署与交互的开源框架。它提供了用户友好的接口,帮助开发者和模型爱好者在没有依赖外部API的基础上高效地运行、…

【Python】selenium获取定位元素大小、电脑屏幕的像素、屏幕尺寸信息、以及网页尺寸的方法

我们在使用selenium 进行自动化测试的时候,有时候会使用获取网页的大小做一些计算,例如测试进行滑动验证码时,需要计算滑块在屏幕的相对大小,就要用到以上这些部分的内容。 1.1 获取某个的位置信息: button_ driver…

蓝桥杯某C语言算法题解决方案(质因数分解)

蓝桥杯原题:将一个正整数分解质因数例如:输入90,打印出90 2 * 3 * 3 * 5。 声明:该题目是否为蓝桥杯原题未知,我是从CSDN上面查到的,仅对该题目进行解决。 这个题与我之前发表过的一些关于检验一个数字是…

软件世界中的超级bug有哪些?

软件世界中的超级bug有很多,以下是一些历史上著名的案例: 1. Mars Climate Orbiter 1998:由于代码中的一个简单错误,导致火星气候轨道器发送了错误的导航信号,最终导致任务失败,损失超过1800万美元。 2. M…

鸿蒙开发:ForEach中为什么键值生成函数很重要

前言 在列表组件使用的时候,如List、Grid、WaterFlow等,循环渲染时都会使用到ForEach或者LazyForEach,当然了,也有单独使用的场景,如下,一个很简单的列表组件使用,这种使用方式,在官…

接上一主题,C++14中如何设计类似于std::any,使集合在C++中与Python一样支持任意数据?

这篇文章的重点是C多态的应用,但是如果你是C新手, 你需要了解以下C知识: 类 构造函数 拷贝构造函数 虚拟函数 纯虚拟函数 析构函数 类的继承 运算符重写 模板类 模板参数 数组 数组的传递 指针与动态内存分配 Python: s …