Ansys Zemax|如何自定义优化操作数

虽然Zemax OpticStudio有300多个内建优化操作数,但是还是会有一些特殊情况是这300多个操作数无法涵盖的。这就要求使用者根据要求计算出某些特定的数值,将这些数值返回到某个操作数,再对此操作数进行优化。

Zemax OpticStudio支持用户编程,计算出特定的数据,再通过Merit Function Editor(MFE)中的操作数来定义该数据。这些数据可以是独立于Zemax OpticStudio计算的,也可以是由Zemax OpticStudio计算的但是没有具体的优化操作数表达的。当然,不管是上述哪种情况,使用者都可以用以下两种方法计算此数值:

  • 使用ZPL宏语言

  • 使用外部定义和汇编程序

ZPL宏具有容易编写、执行快速、以及和Zemax OpticStudio集成较好的特点。只要使用者具备一点点的编程经验就可以编程计算。

另外ZPLM优化操作数可以用于从评价函数中调用ZPL宏,这样使用者就可以直接使用宏计算出结果并返回到评价函数编辑器中从而实现优化。

本文我们将介绍如何使用宏计算并通过操作数ZPLM将数值返回给评价函数。

附件下载

联系工作人员获取附件

 

使用操作数ZPLM返回宏计算的数值

 

如果您不熟悉如何创建、编辑、保存和执行宏,推荐阅读“编程语言 (ZPL) 简介”,然后再继续本练习。

现在,假设我们需要计算并优化Working F/#。当然Zemax OpticStudio中操作数WFNO已经可以解决此问题,本文只是举一个例子。所以我们可以先假设操作数WFNO不存在,我们需要用宏计算该数值并返回到评价函数中进行优化。Working F/#的定义如下:

图片

其中n为像方空间的折射率, θ为实际边缘光线(Real Marginal Ray)在像空间的角度。根据这些定义,我们需要用宏追迹一条实际光线并计算Working F/#:

图片

注意OPTRETURN关键字的使用,此关键字记录了全局阵列位置0处“X”的结果值。我们在MFE的ZPLM操作数“Dat#”列中填入的就是这个全局阵列的位置数。

图片

上图中“Mac#”对应着宏数。

注意每个被ZPLM操作数调用的宏必须命名为:“ZPLxx.ZPL”的格式,宏数可以是0到99的任何数,因此ZPL17.ZPL是一个有效的文件名,可以通过在MFE中的“Mac#”填入17来调用执行。

本例中,命名该宏为ZPL10.ZPL并保存在合适的文件夹中。在MFE中,插入ZPLM操作数,分别在“Mac#”和“Dat#”中填入10和0。

图片

更新该MFE,执行宏并返回计算得到的数值。

图片

计算返回的Working F/#是4.9782。在MFE中插入操作数WFNO验证宏的正确性。由下图可以看出,两者计算得到的数值相同。

图片

这种方法也可以用于单个宏调用并返回多个数值(如果想了解更多,请参考前文所说的使用者手册),这些值可以用于优化或者仅仅提供一个值给MFE做进一步分析。ZPLM可以提供惊人的速度以及弹性,使用者可以用该操作数计算并优化一些特殊数值。

用户自定义操作数是否会使评价函数计算缓慢?

 

也许您会好奇,在评价函数中使用自定义的操作数时,是否会使得评价函数计算缓慢?其实,这很大程度依赖于您宏计算的复杂程度,一般情况下宏计算是非常快的。

作为演示,我们现在对Cooke Triplet执行两次优化:一次使用ZPLM操作数加上宏,一次使用内建操作数WFNO。

第一种情况,我们将ZPLM的目标值设置为5,权重设置为1。第二种情况,我们将WFNO的目标值设置为5,权重设置为1。按下图设置评价函数:

图片

我们使用DLS优化,可以看到执行的时间大约4.4s:

图片

点击F3撤销优化,将ZPLM操作数权重设置为0,WFNO目标值设置为5,权重设置为1,再次优化。

图片

可以看出两者计算的时间相差并不大。

因此,即使我们使用了自定义的宏,Zemax OpticStudio依旧可以高效的执行计算。

 

总结

 

在使用Zemax OpticStudio的过程中,我们有时会遇到内建的优化操作数不能满足我们要计算/返回的数值情况。这时我们需要利用ZPLM和宏结合或使用外部定义和汇编程序对这些数值进行计算和优化。两种方法,ZPLM和宏结合更为简单,与Zemax OpticStudio集成的更好,需要更少的编程技巧。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

plsql表格怎么显示中文 plsql如何导入表格数据

在Oracle数据库开发中,PL/SQL Developer是一款广泛使用的集成开发环境(IDE),它提供了丰富的功能来帮助开发人员高效地进行数据库开发和管理。在使用PL/SQL Developer时,许多用户会遇到表格显示中文的问题,以…

针孔相机模型(Pinhole Camera Model)详解:三维世界到二维图像的映射

针孔相机模型(Pinhole Camera Model)详解:三维世界到二维图像的映射 针孔相机模型(Pinhole Camera Model)是计算机视觉和计算机图形学中的一个基础且重要的概念,它描述了三维空间中的点与它们在理想针孔相…

C/C++控制台贪吃蛇游戏的实现

🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 一、…

【Ansible】Ansible playbook

Ansible playbook简介 Ansible playbook是一种用于描述和自动化IT基础设施配置和管理的工具。它使用YAML格式来定义一系列任务和配置项,并利用Ansible的执行引擎自动执行这些任务。 Playbook包含一个或多个play,每个play定义了一组任务,这些…

基于STM32开发的智能家居安防系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化传感器数据采集与处理安防控制与报警机制Wi-Fi通信与远程监控应用场景 家庭安防系统办公室与商铺的安全监控常见问题及解决方案 常见问题解决方案结论 1. 引言 随着智能家居技术的…

WPF 动画 插值动画、关键帧动画、路径动画

WPF动画,分为三种:插值动画、关键帧动画、路径动画 2.1 插值动画:     1)定义:插值动画是指,属性值从某一个值,经过一段时间后,连续变化值另一个值的动画。         例…

Nginx服务器申请及配置免费SSL证书

免费SSL证书申请 背景: 我的情况是这样,域名解析是华为云的,然后免费证书在腾讯云申请。但是大致的配置流程都是一样的 在腾讯云平台申请免费的SSL证明(目前有效期是90天),申请步骤如下 主要步骤说明 申请免费SSL证书根据申请时说…

一码当鲜-001 这段代码是做什么?

一码当鲜 你能看出来吗? 1. 分页支持 2. RBC 权限申明 源自 ApiHug - API Design & Develop New Paradigm.ApiHug - API Design & Develop New Paradigm.https://apihug.com/

vue一键打不同环境的包

1.配置package.json 主要看的是 "build:all": "vue-cli-service build && vue-cli-service build --mode test && vue-cli-service build --mode development", "scripts": {"dev": "vue-cli-service serve"…

共享电动单车管理系统 ---附源码131016

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于共享电动单车管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了共享电动单车管理系统,它彻底…

网站怎么做敏感词过滤,敏感词过滤的思路和实践

敏感词过滤是一种在网站、应用程序或平台中实现内容审查的技术,用于阻止用户发布包含不适当、非法或不符合政策的内容。我们在实际的网站运营过程中,往往需要担心某些用户发布的内容中包含敏感词汇,这些词汇往往会导致我们的网站被用户举报&a…

Matlab2021b通过CNN、CNN-LSTM模型实现对声音信号的二分类与四分类

1、利用Matlab2021b训练CNN、CNN-LSTM模型,对采集的一维时序信号进行分类二分类与四分类 2. 声音信号每个样本数据长度3001个采样点,对其进行归一化处理 3、CNN时序信号多分类执行结果截图 3.1 二分类: CNN模型: 训练集损失值…

编译 onigmo 库

onigmo github: https://github.com/k-takata/Onigmo 测试环境:Windows 我编译库时习惯于在 vs code 下 git clone 文件后,再执行相应的编译操作 而 vs code 提供的终端一般是 git bash 和 powershell 在编译 windows 下运行的库》.lib 和 .dll 不能直接…

利用keepalived达成服务高可用

官方网站Keepalived for Linux 1.keepalived简介 vrrp 协议的软件实现,原生设计目的为了 高可用 ipvs 服务 功能: 基于 vrrp 协议完成地址流动 为 vip 地址所在的节点生成 ipvs 规则 ( 在配置文件中预先定义 ) 为 ipvs 集群的各 RS 做健康状态检测 …

从零开始学cv-5: 图像的仿射变换

文章目录 一,简介:二,图像仿射变换详解2.1,图像平移:2.2 ,图像旋转:2.3,仿射变换: 一,简介: 仿射变换(Affine Transformation 或 Aff…

校园综合服务小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,卖家管理,发布信息管理,订单信息管理,类型管理,系统管理 微信端账号功能包括:系统首页,发布信息&#xff0…

webm格式怎么转换成mp4?7个有效方法将webm转mp4

在数字媒体的浩瀚宇宙中,视频格式的多样性犹如繁星点点,既点亮了创意的火花,也铺设了内容分享的广阔道路。每一种视频格式都承载着其独特的技术优势与设计初衷,WebM便是其中一颗璀璨的新星,专为优化网络传输而生。它凭…

【C++从练气到飞升】14---深入浅出继承

🎈个人主页:库库的里昂 ✨收录专栏:C从练气到飞升 🎉鸟欲高飞先振翅,人求上进先读书🎉 目录 ⛳️推荐 一、继承的概念及定义 1.1 继承的概念 1.2 继承定义 1.2.1 定义格式 1.2.2 继承方式和访问限定符…

C语言—指针(2)

目录 一、数组名的理解 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、字符指针变量 八、数组指针变量 (8.1)什么是数组指针变量 (8.2)数组指针变量的初始化 九、二维数组传…

【工业机器人】工业异常检测大模型AnomalyGPT

AnomalyGPT 工业异常检测视觉大模型AnomalyGPT AnomalyGPT: Detecting Industrial Anomalies using Large Vision-Language Models AnomalyGPT是一种基于大视觉语言模型(LVLM)的新型工业异常检测(IAD)方法。它利用LVLM的能力来理…