ZEMAX的基本像差控制与优化
公安部第一研究所 许正光
ZEMAX已经成为光学设计人员最常用的工具软件了。光学设计中,描述和控制一个光学系统的初级像差结构,通常使用轴上球差、轴向色差、彗差、场曲、畸变、垂轴色差、像散等像差参数。当我们企图更为详细的描述和控制轴外指定视场、指定光束的像差结构时,常常会使用轴外宽光束球差、彗差和细光束场曲等三个像差参数。然而,ZEMAX并不能像SOD88那样直接引用相对应的像差操作数来指定像差目标大小,更没有描述高级像差数的像差操作数,这些通常都需要设计者自行分析和定义。
描述和控制系统光束结构的方法因习惯而有一定的差异,由于某些像差变量之间有某种相关性,而设置的优化权重又可以不同,因此常常都能够达到相同的效果,只是所计算的数学步骤不同而已。到底选择多少个参数来描述一个系统,虽无统一规定,但是还是要因系统像差特性不同而区别选择。经验表明,最少最准确的参数描述量,能够尽可能的提高优化的效率,并且减少掉入效果较差的局部优化的次数。经验丰富的工程师,轻车熟路,在这个环节上少走了很多的弯路,从而其设计效率和设计出来的产品品质要比通常的设计人员有些得多,成功率高的多。
笔者撰写本文的目的就是企图浅显的探讨光学设计中,ZEMAX中光学结构的描述方法以及权重选择的问题。这些都是笔者在设计当中积累的经验,可能这个文章的论断会由于经验的多寡有一定的局限性,所以希望读者当作参考,不要照搬。
一 基本像差描述和控制
1、轴上球差LONA 和 SPHA
LONA表示的是轴上物点指定波长,指定光束尺寸(光线对)的轴上成像交点到近轴焦平面之间轴向距离。这个定义和我们定义的轴向球差相同。光瞳尺寸(光束尺寸)在0~1之间,那么将追迹实际的光束汇交点计算轴向球差。
SPHA常用于指定面产生的像差数值。若不指定特殊面(取值为0),则计算所有面产生球差总和。注意这个总合不是像差计算公式中的经过各面逐个放大之后的加权和,而是代数和(有待读者进一步验证)。
经验:当选择LONA控制不住球差时,同时加入SPHA操作数,设置合理的权重,可以将轴向球差进一步改善。
2、轴向色差AXCL
定义为两个指定波长的近轴焦平面轴向距离。若光瞳尺寸(光束尺寸)定义为0,那么使用近轴焦平面进行色差计算,定义不为0,则使用实际的光线与轴交点位置进行色差计算。
3、垂轴色差(倍率色差)
在ZEMAX中没有直接定义垂轴色差的操作数,但是从垂轴色差的定义可以知道,它是指某视场、某指定光束尺寸的、两指定波长光束在像面上所成的理想像的垂向距离差。
在ZEMAX中有REAY(wav,Hy,Py)操作数。其定义为指定波长、指定视场、指定光束尺寸光在理想像面上的实际高度。
那么在同一视场选择两个不同波长的光束,其操作数数值之差就表明了理想像面上的垂轴色差大小。
Oprand #1 REAY(wav=1,Hy=a,Py=b);
Oprand #2 REAY(wav,Hy,Py);
DIFF(oprand #1,oprand #2);
DIFF操作数指两个操作数结果的差值。
4、 彗差
彗差描述的是某视场、某尺寸的光线对对主光线的偏离情况,即描述光束失对称的情况。光线对彗差与视场和孔径均有关系,是两者的函数,因此全面描述系统的彗差情况需要选择若干个不同视场和不同孔径。
在ZEMAX中提供了一个操作数TRAY。TRAY定义为在像平面上,光线与像面交点到主光线的垂轴距离。
首先定义一个光线对:
oprand #1 TRAY(wav=2,Hy=a,Py= b);
oprand #2 TRAY(wav=2,Hy=a,Py= -b);
SUMM(oprand #1,oprand #2)
其中SUMM描述的是上述两个操作数的代数和,表征彗差的大小。虽然这个定义和彗差的定义有一定的区别(光线对交点到主光线上细光束交点之间的垂向距离),但是本质上是一样的。这也说明了在Ray图上将某波长曲线首尾两端连线起来,其连线和纵轴的交点大小可以表征彗差大小是同一个道理。
5、细光束场曲FCGS和FCGT
场曲定义为轴外细光束交点和焦平面之间的距离。细光束FCGS和FCGT可以用来描述人以视场、任意波长的弧矢和子午场曲数值。对于非对称系统也能够适用。给出的操作数不能够定义宽光束的场曲。
6、像散ASTI 和(FCGT – FCGS)
像散定义为子午细光束场曲和弧矢细光束场曲之差。可以使用ZEMAX提供的操作数ASTI进行描述也可以使用(FCGT – FCGS)进行描述。
ASTI可以用来计算指定镜面上的像散贡献量,若指定面为0,那么计算两位各面的像散贡献量代数和。三级像散从seidal系数中求得。
而DIFF(FCGT,FCGS )也能够计算出指定视场、波长的像散值。在很多情况下,同时采用两种方式进行像散控制,能够取得更好优化控制效果。
7、畸变控制DIMX 和DISG
DIMX定义了某视场下畸变的上限,而DISG指定了该视场下畸变的目标值。
由于畸变一般不影响像质的清晰度,因此一般不做严格的矫正,通常的系统只需要在一定范围即可。
二、其它常用于控制像差的操作数
很多时候,我们将以上七种基本像差用于像差控制中仍旧会遇到一些困难,那么在一开始或者操作进行当中会需要增加一些操作数,以对整个像质空间进行控制和描述。
第一类需要的操作数是:镜面的几何形状,从工艺上我们必须保证镜面的最小曲率半径适合生产,并且在尽可能的情况下选择较大的曲率半径,因为能否加工的出来、加工误差的影响率、产生的高级像差等等因素,都有制约作用,因此镜面曲率半径是我们要控制的参数,尤其是小光学系统的某些镜面。有效的控制也防止ZEMAX程序走火入魔。
这类操作书还有:镜面边缘最小厚度控制,空气间距控制。当然,如果一个镜面被矫正过程计算成了一个薄薄的玻璃泡,它的加工是困难的。无必要的无光焦度玻璃片的出现也要引起我们的注意:我们是否用它来仅仅校正场曲。
第二类需要提到的操作数:镜面入射和出射光线的入射角控制,每一个镜组能够承受的相对孔径和偏折角是有限度的,大的入射高度和角度以及出射角度都是我们设计当中要避免的,有的时候在校正过程中需要加入这样的操作数RAID/OPLT/RAED对光线进行控制。不加控制的光线,将可能因为某个面上的入射角或者高度太大而产生高级像差,而以后的优化工作陷入为了平衡这个高级像差而努力。很遗憾的,但多数情况下,ZEMAX又走火入魔了。通常的系统,设计初始结构的时候,高级像差产生位置,如何产生的都是我们要考虑的。对于特殊光学系统例如广角、大相对孔径系统尤其如此。
第三类操作数:有些时候,将MTF参数,光斑尺寸作为一个操作数加入优化序列中也能够起到一定的作用,当然我们不是很常用。然而,事情总是相对的。
ZEMAX提供的优化计算方法基于最小二乘法,其对于我们的优化变量并没有严格的控制,实际上往往许多的变量是一定程度的相关的。相关的多少还与权重有关。我们总是尽可能的不把矛盾的相关量引入最小二乘法中,这样效率会更高些。
三、关于操作数权重
操作数全重的作用,笼统地说,可以起到引导优化方向、控制操作数的作用。上一节中提到的使用权重减弱负相关的两个操作数的矛盾。实际上,权重的修改和优化过程是同时进行的。一开始就选用全局优化进行设计成功的例子几乎是没有的。
理由有以下几个:
首先这个系统他的极限在那里,设计人员是不清楚的,因此选用操作数描述系统就有一些困难;
其次在优化的过程中,通过调整优化结构的权重,增减优化操作数,引导和建立一个更为优秀的优化目标结构,从而指导计算过程朝这个更为优秀的结构进行。不断的进行调整和修改,这已证明是目前最为有效的方法了。
因此,一开始就抱着逐步修改权重和增减操作数、同时监控优化情况的方法是笔者向初学者推荐的。
也许有一天真正的高效率的全局计算已经找了出来,并且计算机能够满足计算速度要求,但是我还是怀疑如果一开始就偏差较大的初始结构和初始优化结构,能否在有生之年把想要的符合实用的结果计算出来。那一天,就是我们光学设计人员的末日。在此之前,我们都应当充满自信。
************
上个世纪80年代末,北京理工大学两代光学大师举群力开发的SOD88,简洁而直接地描述了各个像差、以及像差分布的状态,其在数学上的厚重和成熟的程序结构令人叹服,然而近十余年来年来逐渐的隐迹遁形了。笔者陋以为绝对不是因为ZEMAX以及其他的光学软件占据了如何的高端,只能归咎于开发伟大的SOD88软件的后继者,有限的眼光认识不到软件的商品价值以及前景,不能够在windows界面出现之际及时跟进,与时俱进。