Ansys Zemax | 公差的标准怎么计算的,如何确认计算细节?

简介

Zemax OpticStudio在公差分析方面有完整的功能,过程也有清楚的数学说明,但与公差分析的目标相比 (最终要知道良率或敏感度),其执行过程却有庞大的细节。

这篇文章将整理几个常用的确认细节的方法,不同的情境有不同的方法,共有以下主题:

1.当我们说 “计算标准标准” 时,Zemax OpticStudio做了什么

2.简介标准标准种类

3.说明衍射MTF平均/子午/弧矢.的计算方式

4.使用 “SAVE” 公差操作数纪录灵敏度灵敏度计算过程

5.利用蒙特卡罗蒙特卡罗存档了解公差扰动如何被执行

6.如何列出所有蒙特卡罗蒙特卡罗档案的随机数参数

当我们说 “计算标准” 时,OpticStudio做了什么


以下的叙述主要关乎标准的计算,不管我们是做灵敏度分析或是蒙特卡罗分析,都适用。

标准

首先我们要花一点时间说明标准本身,才说明优化等其他动作。在公差分析时,我们所做的事情,就是重复扰动指定参数 (例如组件偏心、倾斜),并计算在该条件下的 “标准” 是多少,并与原始设计或规格相比分析。

这个标准可以是易懂的物理参数,例如某个视场 (Field)、某个波长下的光斑半径或子午 MTF。也可以是多个相似的参数用某种方式平均,例如子午 MTF与弧矢 MTF的平均,或是多个视场下的MTF平均 (通常是RMS)。甚至标准可以是经由复杂计算而来,不具实际物理意义。OpticStudio中有许多内建的标准,也提供完整的自定义功能让用户设计自定义标准。 (请参考本文章下面的 “简介标准种类” )

视场

另一个公差分析中常被混淆的观念是视场 (Field)。当计算标准时,如果视场字段选用Y-对称或XY-对称,事实上OpticStudio并非读取使用者的Field设定。而是先找出最大视场,然后乘以-1.0、-0.7、0.0、+0.7以及+1.0。若是Y-对称,则共有Y方向的5个视场,若是XY-对称,则包含XY方向共有9个视场。

这样设计是因为一般来说加入公差后,系统经常就不再是轴对称了,因此正负视场都要考虑。如果使用者希望自己设定,只要在Field字段中选择用户自定义即可。

要注意的是,无论如何设定视场,由于标准只有一个,因此最后这些视场上的标准都会被平均成一个数值。若希望每个视场分开,表示你需要多个标准,这要用到公差脚本的功能。

补偿器

如果有补偿器的存在, “每次” 当OpticStudio要计算标准之前,都会先依指定变量以及评价函数优化过一次系统,然后才计算并输出标准。换句话说,原本的流程是:
原始系统 > 扰动参数 (ex. 偏心、倾斜) > 计算标准

加入补偿器后变成:
原始系统 > 扰动参数 (ex. 偏心、倾斜) > 优化系统 > 计算标准

为什么会有补偿器呢?事实上大部分成像系统都会有一个天生的补偿器,就是后焦距。举例来说,如果一台投影机的投影镜头中的一个镜片的曲率有误差,造成像距改变,进而影像模糊,我们就可以把投影机前后移动来做一定程度的补偿。这时公差分析就应该考虑补偿器才不会对于系统公差分析太过悲观。

注意上面的叙述隐含了一个很重要的观念,那就是「现实世界中的补偿器微调,在OpticStudio中的实作其实就是优化」。

补偿器可以是任何参数,但是必须能反应现实世界中真正的操作。

有时候一些高级光学系统可能有多个补偿过程,这时就会需要在不同时机点使用不同的变量以及评价函数,OpticStudio透过公差脚本支持这种复杂的补偿过程。

简介标准种类


前面我们提过,OpticStudio有许多标准可用,大致可分为三类,并简单介绍:系统内建、评价函数、自定义脚本。这些标准最终都可对应到一组评价函数评价函数的计算。

其中系统内建中的RMS 光斑半径/X向/Y向、RMS 角半径/X向/Y向、RMS 波前计算方式与利用优化向导设定出来的评价函数功能一样,取样方式使用高斯求积,采样的设定代表径向取样数。

而MTF的部分,则是通过MTFA/T/S或GMTA/T/S这些操作数计算,如果有多个视场,就会在评价函数评价函数中加入所有视场,并经过评价函数公式计算出评价函数评价函数值。但由于评价函数是计算 “差值” 的方均方根,因此最后的标准事实上是取(1 - 评价函数值)。这个部份请看下一个条目的说明。

标准的部分如果系统内建默认的选项不足以满足使用需求时,使用者可以考虑自行设计评价函数,然后在标准的字段中选择 “评价函数” 就可以了。

最后一个特殊选项就自定义脚本,可以让使用者进行更复杂的标准计算过程,例如前面说过的复数补偿器设定过程。

说明衍射 MTF 平均的计算方式

由于标准中MTF的计算方式是技术支持中最常见的问题,以下将说明其运作方式,这里用衍射 MTF说明,但是其他的MTF原则上是一样的,只是操作数的不同 (MTFA/T/S或GMTA/T/S)。

以下用Cooke 40 degree field这个系统内建范例说明,首先我们打开这个范例文件。

移除所有变量以及求解:


固定所有孔径:


现在执行公差分析,把标准字段设定如下,并点一下核对计算在现在的值:


可以看到目前的衍射MTF 平均值为0.40329094,这里我们利用文章下面叙述的蒙特卡罗存档技巧,来了解这个公差是如何计算的。

打开存好的蒙特卡罗档之后,我们检视他的评价函数,看到如下图:


因为视场选择是Y-对称,如同前面的说明,共有5个视场。而在评价函数中共有5个MTFA,代表衍射 MTF 平均值,这次代表一个视场。而上面的评价函数值是0.596709053761491,可以发现前面的标准的计算正好就是1减评价函数值。

评价函数的计算如下:


V是评估(Value),W是权重(Weight),T是目标(Target)。

使用 “SAVE” 公差操作数纪录灵敏度计算过程

在敏感度 (灵敏度) 分析时,OpticStudio会把每一个公差操作数的最大最小值代入,并且计算在这些公差的极限状态下,标准的变化如何,然后回报在文字报告中。而当使用者对于这个结果有疑问时,会需要知道OpticStudio实际上是如何调整系统,并得到这个结果的,此时便是用 “SAVE” 这个操作数的时候。

举例来说,假设我们有如下的公差设定以及灵敏度分析结果:


可以看到当公差TRAD = -0.2时,标准 = 0.04967675

而TRAD = 0.2时,标准 = 0.04875308

假设我们想知道TRAD=0.2时的标准是如何计算的,我们可以在TRAD的下面加上一行SAVE指令,如下图:


请注意在文件#(File#)字段代表档案编号,如果有多个SAVE指令,则需要把编号分开。此外编号等于0的话,这个指令将不运作,不会存档。

现在再执行一次公差分析,文字报表的结果应该相同,但是使用者可以发现在文件夹中多出两个档案,如下图:


其中TSAV_MAX_0001代表TRAD=-0.2时的系统状态,而TSAV_MIN_0001代表TRAD=0.2时的系统状态。

让我们打开TSAV_MAX_0001这个档案,并开启评价函数编辑器,可以看到如下图:


可以看出系统计算TRAD=0.2的标准时,是计算RMS 光斑半径,参考点为质心,使用GQ算法,取样是4个环以及8个臂。这反应到我们之前的标准以及采样设定。

此外评价函数值为0.0487530834843748,与公差报告吻合。

利用蒙特卡罗存档了解公差扰动如何被执行

前面我们介绍如何把灵敏度计算时用到的系统设定储存下来。而对于蒙特卡罗来说,则比较单纯,使用者只需要在蒙特卡罗保存数字段中填入要储存的档案数量即可,如下图:


有时候如果我们想要了解许多不同的公差同时被套用在系统中时的效果,则可以利用蒙特卡罗的这个存档功能。

我以用Cooke 40 degree field这个系统内建范例说明,首先我们打开这个范例文件,移除所有变量以及求解,然后把孔径固定住,如同文章前面的范例一样。

假设我们有如下的公差设定:


这里面包含了单透镜两边球面之间的倾斜 (TIRX/Y)、两两组件之间的位移与倾斜 (TETX/Y、TEDX/Y)、球面曲率 (TRAD)、球面不规则 (TIRR) 以及空气与玻璃厚度 (TTHI) 等公差。

注意我们把公差都设定为0。

接着我们执行公差,执行前设定蒙特卡罗 Runs以及蒙特卡罗保存数 都设为1,设定如下:


然后开启产生出来的唯一个蒙特卡罗档案。


可以看到组件位移的操作 (TETX/Y) 被解读为CB,而表面不规则以及曲面之间的位移用不规则面来模拟,此外可以看到后焦距被设为变量,因为我们有设定这个补偿器。

利用这样的技巧,可以检查一些我们认为可能有问题的蒙特卡罗档案。