• RSS订阅 加入收藏  设为首页
ZEMAX

ZPL宏语言高级优化方案

时间:2025/1/30 13:06:22   作者:Leslie   来源:正势利   阅读:114   评论:0
内容摘要:一、ZPLM使用的基本思路方案:1)在优化函数中加入ZPLM 操作数;2)ZEMAX遇到ZPLM后,调用相应的ZPLM宏程序计算;3)宏程序计算后将需要的数值返回到优化函数中;4)和正常操作数一样参与优化。二、ZPLM宏优化的基本语法:第一,ZPLM的输入。第二,ZPLM 的输出。

     宏语言高级优化方案适用于ZEMAX单个操作数无法实现某个边界设置需要的时候,或许可以利用多个操作数组合使用可以实现,但是同一需求在同一镜头中需要多次控制,使用组合操作数时候比较繁琐,其次当不同镜头光学设计都可能使用的时候,可以采用宏语言优化方案来实现。

     这时候需要利用一个操作数ZPLM将宏语言引入到评价函数中,从而可以利用评价函数来评判优化的进程,上文说的Z系数其实就是一个比较好的需求,同一个镜头设计过程中,不同镜片可能都需要设置,但是此时利用组合优化操作数方案,就非常繁琐,一个镜片就要14个优化操作数,要是有个7片镜子,就得编写操作数接近百。不同镜头设计过程也都需要进行Z系数的控制,此时用宏语言优化方案则可以相互通用。

ZPLM使用的基本思路方案:

1)在优化函数中加入ZPLM 操作数;

2)ZEMAX遇到ZPLM后,调用相应的ZPLM宏程序计算;

3)宏程序计算后将需要的数值返回到优化函数中;

4)和正常操作数一样参与优化。

ZPLM宏优化的基本语法,主要分为两部分:

第一,ZPLM的输入。在优化函数中输入优化操作数ZPLM,此时其有一个参数MAC#,其数字在0-99之间,该数字则是指导该操作数需要哪个宏程序。比如,此处输入的为1,则调用的是宏程序ZPL01.ZPL。当此处输入的是12时,则调用的宏程序为ZPL12.ZPL。注意,输入的MAC#参数是小于10时候的宏程序命名方法。

第二,ZPLM 的输出。ZPLM 利用对应的宏程序ZPLM.ZPL计算得到的结果如何输出到优化函数中,进行后续的计算。ZEMAX针对此,利用了一个缓存区间,这个区间分为了51份,分布用0-50进行命名。宏程序先将计算得到的结果放入到缓存区间中,然后优化函数在计算到ZPLM的时候,在ZPLM指定的位置取数。

     这一步中主要涉及到两个我们需要注意的参数,首先是宏程序怎么将计算结果放入缓存区间内,宏程序利用关键字0PTRETURN将计算得到的结果放入相应的缓存区间内,0-50就是缓存区间内的小标签;其次就是ZPLM如何从缓存区间内取数,ZPLM第二个参数DATA,在这里我们输入宏程序中利用OPTRETURN将数据打入到缓存区间的小标签,也就是0-50中的一个数字。

语法规则:OPTRETURN  0,X

     优化函数运行到 ZPLM 时,读取它的参数MAC#,知道是哪一个宏程序,从而进入运行宏程序。宏程序运行完之后,0PTRETURN将需要的计算的结果,分别放入不同小标签的缓存空间。回到优化操作数ZPLM,优化函数读取其第二个参数 DATA,通过该值,指导优化函数到指定的缓存空间提取数据,与ZPLM设置的目标 TARGET值对比,进行优化。

类型 宏# 数据 Hx Hy Px Py 目标 权重 评估 %献
1 ZPLM 11 0 0 0 0 0 0 0 0 0
2 ZPLM 11 1 0 0 0 0
     从上面的操作数可以看出两个问题,第一个ZPLM操作数除了MAC#,DATA之外,还有另外两个操作数,也是我们常用的HX,HY,PX,PY。第二个ZPLM操作数却没有了这四个操作数。

具体来讲解下这两个问题:

第一个,由于在利用宏语言计算的过程中,我们可能需要设置一些额外的参数,所以ZPLM也继承了传统操作数带的HX,HY,PX,PY,四个参数,但是并不是原有的四个参数的涵义,是自定义的。这些数据在宏语言中分别用 PVHX,PVHY,PVPX,PVPY函数进行提取,使得我们计算更为丰富。

语法规则:n=PVHX

第二个,这是一个约定的协议,当DATA是0的时候,除了提取0的这个小标签对应的缓存空间的数据之后,还表示需要调用宏计算。当DATA为非0时候,只是提取 DATA中数字对应的小标签的缓存空间的数据,并不调用宏程序。所以一般DATA不为0时,多放在DATA为0的后面,来提取前面宏程序计算过程中,存放了多个数据在不同小标签的缓存空间中的数据。

     ZPLM使用注意事项:在了解注意事项之前,我们先简单介绍下ZEMAX计算优化函数的流程。ZEMAX在计算一个镜头的优化函数的过程为:首先,ZEMAX将镜头数据复制到一个缓存空间;其次,ZEMAX对这个缓存空间的镜头进行优化函数计算;最后,计算完成后,将缓存空间释放。可以从这个流程看出,计算优化函数的过程中,并不改变光学系统的数据。

     所以要求我们在使用ZPLM调用宏程序的过程中,不要修改镜头系统的数据参数,如果实在需要进行修改,那么紧接着ZPLM后,需要再利用宏程序将修改的数据参数复原。

     另外,ZPLM 操作数不能放在默认的评价函数中间,只可以放在默认评价函数的前面或者后面。

     宏语言高级优化方案案例,上文采用操作数组合优化方案来控制透镜Z系数,虽然表面上可以实现,但是实际设计过程中,优化过程中透镜是双凸还是双凹,或者弯月,没办法去判断,所以Z系数公式中的十/-就无法确定,计算的Z系数就可能有问题,此时利用宏语言控制则可以进行判断。


标签:语言 高级 优化 方案 

逝者如斯,不舍昼夜作者QQ及微信:49922779 点击这里给我发消息

相关评论
QQ交流群:120100441    QQ客服:49922779 闽ICP备01008686号