ZEMAX | 使用 ZPL 宏进行优化:ZPLM 操作数

本文介绍了如何通过使用 ZPLM 优化操作数在评价函数编辑器 (Merit Function Editor )中使用 ZPL 宏定义复杂的优化目标。本文介绍了如何使用 ZPLM 约束系统的质心,以确保其能正确地平衡。(联系我们获取文章附件)

简介

OpticStudio 中有将近400个操作数,几乎可以将任何感兴趣的值作为目标,包括SINE,PROD,SQRT 等数学操作数,可以定义详尽的评价函数。有时所需的值需要进行复杂的计算,但是无法在评价函数编辑器中执行。在这种情况下,可以使用优化操作数 ZPLM 执行宏来确定操作数的值。运行宏,并使用 OPTRETURN 关键字将值返回给评价函数。

ZPLM 操作数

ZPLM 操作数包含六个参数: Mac#, Data, Hx, Hy, Px, Py

· Mac# 是 OpticStudio 应该执行的宏的编号。应将与 ZPLM 操作数一起使用的宏另存为 ZPLnn.zpl,其中,00 ≤ nn ≤ 99。

例如,ZPLM 调用宏 ZPL03.zpl 时,Mac# 应该为3。

· Data 是由宏计算出来的数据值。单个宏中最多可以计算51个数据值 (0 ≤ Data ≤ 50)。为了提高效率,仅当 Data = 0 时才执行宏;否则,将使用来自先前宏调用的数据(即 Data = 0,至少需要调用一次)。

· Hx, Hy, Px, 和 Py 是可以传递给宏以用于计算的值,它们不一定必须是归一化的视场/光瞳坐标:

下面的示例将说明与 ZPLM 优化操作数一起使用的宏的定义。

ZPLM 示例:质心约束

在某些光学系统(瞄准镜,双筒望远镜,安装在三脚架上的照相机等)中,质心是要考虑的重要的机械因素。假设我们正在设计瞄准镜,其中一个约束条件是使系统平衡。这意味着,质心(CM)应该位于前组元件和后组元件之间的中间位置。 加载示例文件:\Zemax\Samples\Sequential\Afocal\Afocal Riflescope.zmx

出于本示例的目的,将做出一些简化示例的假设:

· 所有透镜均旋转对称

· 所有材料为均匀介质

· 每个透镜的质心都位于顶点的中间(严格来说,这仅适用于曲率相等且符号相反的透镜)

表面1是全局坐标参考(GCRS)

要限制质心的位置需要有以下参数:

· 每个元件的全局位置

· 每个元件的质量

· 系统总长(前透镜至后透镜)

因此,将使用以下 ZPL 函数和关键字:

· GLCZ() 函数返回表面的全局 z 坐标

· OPEV() 函数使用 TMAS 优化操作数提取元件的质量

· GETSYSTEMDATA 关键字返回总光路长度(表面1到像面)

· OPTRETURN 关键字将数据返回到宏

ZPLM 宏代码

文章附件中“质心”宏,如下所示:(联系我们获取文章附件)

将宏另存为:ZPL01.ZPL,以便可以使用 Mac#= 1调用它。

评价函数中的 ZPLM

在评价函数中,添加 Mac#= 1,Data= 0 的 ZPLM 操作数,这将运行宏并返回系统的质心。

此处仅返回一个值,要返回其他值,只需在宏中添加额外的 OPTRETURN 行:

OPTRETURN data_number, value

在此示例中,不进行优化,但是,操作过程与其他操作数相同(即设置所需的目标值和非零权重)。请注意,宏返回的值的单位可以是任意的,因此需要考虑ZPLM操作数的权重,以准确地表达此目标值相对于评价函数中列出的其他目标值的重要性。特别是,此宏需要非常小的权重才能使ZPLM与其他针对系统性能的操作数保持平衡。

如前所述,ZPLM 可以使用最多四个值(Hx,Hy,Px,Py)将数据传递到宏。可以使用 PVHX(), PVHY(), PVPX(), PVPY() 数值函数在宏中访问传递的值。在此示例中,可以将镜筒质心的位置和质量传递给宏,以说明镜筒和透镜组合的质心。

· Hx = 镜筒质心到系统中心的距离

· Hy = 镜筒质量 按照下图修改宏,并将修改后的宏另存为ZPL02.zpl。

在评价函数中,将 Mac#设置为2,输入镜筒质心位置(Hx)和质量(Hy)的值,并注意报告的数据值的变化:

切记:仅当 Data = 0 时才执行宏,以提高评价函数的评估速度。

ZEMAX | 使用 ZPL 宏进行优化:ZPLM 操作数相关推荐

  1. ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差

    ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差 本文介绍如何使用 Zemax 编程语言 (ZPL) 创建宏来计算和绘制用户自定义的性能指标.在本示例中,系统的环带垂轴色差 (Zonal Tra ...

  2. Zemax操作35--双高斯镜头优化

    要求: 双高斯镜头是传统的单反相机镜头 相对孔径:1/3 焦距:75mm 可见光 视场由一个圆定义,圆的直径是胶片的对角线,像高21.6mm 畸变小于1% 玻璃的边界条件最小边缘/中心2mm,最大12 ...

  3. 线上培训 第19期 | Zemax ZPL 线上培训 招生啦

    ZPL 是一种不区分大小写的"宏"或"脚本"语言,代表了扩展OpticStudio 计算范围的最简单的方法.它是以BASIC为蓝本的,是一种解释型语言.ZPL的 ...

  4. ZEMAX | ZOS-API、ZPL 和 DLL 之间的区别

    ZEMAX | ZOS-API.ZPL 和 DLL 之间的区别 本文对 ZOS-API.ZPL 和DLL 进行了比较.我们将会对与 OpticStudio 的互联.代码执行.语句和数据存取与处理这些方 ...

  5. ZEMAX | 如何使用ZOS-API创建自定义操作数

    本文将使用ZOS-API创建自定义操作数 (User Operand) 来计算各表面之间距离的绝对值之和,该操作数与TTHI操作数的功能相同.可以使用UDOC操作数将该自定义操作数添加到评价函数 (M ...

  6. zemax光学设计优化

    优化分三个步骤: 首先,输入基础的透镜参数,如正确的视场,波长,系统孔径,表面个数等.这个系统应当是可光线追迹的并且不会提示错误. 其次,在编辑器中有些参数需要被定义为变量variables.这就意味 ...

  7. Ansys Zemax | 如何设计单透镜 第三部分:优化

    本系列共三篇文章,旨在介绍如何使用OpticStudio序列模式界面进行操作.本文以单透镜为例,介绍了设计透镜的基本过程,包括第一部分:构建系统.第二部分:分析其性能,以及第三部分:根据所需的指标和设 ...

  8. Zemax学习笔记——实战案例之单镜头设计

    单镜头参数: F#:F/4 焦距:100mm wavelength:808 nm 材料:BK7 第一步:设置初始参数 F# = f/d 得到入瞳d为25mm 单镜头焦距为100,所以初始结构设定为: ...

  9. zemax设置 像方远心_在zemax光学设计软件布局图中显示光瞳

    概述 在OpticStudio的序列模式中,您可以在不影响其他面的情况下使用虚拟面 (dummy surface)和求解类型:拾取 (pickup)在透镜数据编辑器 (LDE)及布局图 (Layout ...

  10. C/C++ 如何构造出强悍的宏

    目录 前言 1.基础复习:表达式.语句和代码块 1.1 表达式 1.2 语句 1.3 代码块 2.语句表达式 2.1 什么是语句表达式? 2.2 语句表达式内使用 goto 跳转 3.在宏定义中使用语 ...

最新文章

  1. oracle-闪回技术2
  2. 对于初学者十条PCB元器件摆放小技巧
  3. camx模型_【推荐】基于CAMx的空气质量模拟及污染来源解析技术
  4. A good security site
  5. method=post 怎么让查看源代码看不到_网上文档无法复制怎么办?试试这几个方法!...
  6. safari使用canvas引入域外的图片
  7. flutter DateTime 日期时间详细解析 Dart语言基础
  8. spark视频-Spark on Yarn
  9. 【原创】不用封装jar包 直接引入工程使用的方法(类似android的 is Library功能)...
  10. 数据科学和人工智能技术笔记 十七、聚类
  11. python selenium--常用函数3
  12. python上下文管理器ContextLib及with语句
  13. 2020,我的年终总结(附优惠券)
  14. 《XHTML》pdf
  15. 64位java_java64位
  16. 计算机病毒能破坏u盘文件,[计算机病毒]快捷方式病毒(U盘文件变为快捷方式)...
  17. 二分插入排序(折半插入排序)--排序算法(六)
  18. css-图片旋转木马3D效果
  19. SoX使用手册(中文版)
  20. MySQL redo log 重做日志 原理 Oracle Redo Log 机制 小结

热门文章

  1. 1×pbs缓冲液配方_pbs配方_1xpbs配方_pbs缓冲液配制
  2. 苹果手机热点连上不能上网_iPhone手机开了热点,为什么电脑连不上?靠这三招即可轻松解决!...
  3. i.MX6ULL 开发板在Ubuntu系统下实现串口通信
  4. Python每天一个小程序——字典翻转输出和《沉默的羔羊》之最多单词
  5. hdu 1728 逃离迷宫
  6. 怎么将英文文件翻译成中文
  7. 微信二维码扫码登录思路
  8. visio增加连接点
  9. MySQL实战宝典 高可用架构篇 17 高可用设计三大高可用设计架构方案
  10. pppoe按需连接服务器无响应,pppoe服务器无响应怎么解决_pppoe拨号失败怎么办