Solved

Tolerancing irregularity of a zernike surface

  • 27 July 2022
  • 5 replies
  • 590 views

I am trying to tolerance a Zernike for irregularity. I noticed that for other rotationally symmetric shapes, you can use the TEZI operand to introduce irregularity tolerance. This converts the rotationally symmetric shape to a standard zernike surface and introduces the tolerances. But my design has a zernike surface already and I was wondering if there is a way to use the TEZI directly. If not, is there a work around to it?

 

Extension of the above question : How do you tolerance any freeform surface (extended polynomial, chebyshev etc..) for irregularity? Does zemax have any inbuilt tolerance operand to do the same?

Thanks in advance.

icon

Best answer by MichaelH 27 July 2022, 23:31

View original

5 replies

Userlevel 7
Badge +3

I don’t think there is a way to use TEZI for your Zernike surface.  Instead, can’t you just add tolerances to the Zernike parameters directly, say using a script?  For example, with ZPL you can use INSERTTOL and/or SETTOL for the TPAR operand. You can then loop through the different Zernike terms and add whatever Min/Max tolerance values you like -- e.g., either random values (appropriately scaled) that provide a desired rms sag variation (like what TEZI does), or better yet, values that mimic typical fabrication errors for your surface.  

Userlevel 6
Badge +2

As Jeff mentioned, you can tolerance orthogonal surfaces like Zernikes and Chebyshev directly on the coefficients.  Since each coefficient is independent of the other coefficients, for something like Zernikes, you can directly tolerance Z5/Z6 for 3rd order astigmatism and Z7/Z8 for 3rd order coma.  If you’re scripting it, then you can calculate the coefficients & scale them first before adding to the TDE so you can get the overall RMS as well as individual contributors. 

If you want to stick with TEZI and you don’t want to script anything, another option would be to use a dummy surface directly above the Zernike surface you have and then to have pickups on your Zernike surface to the surface directly above.  If you have current values for the Zernike terms, then you can put these into the Offset box for the Zernike terms.  At this point, the pickups will not have any affect but then when you use TEZI on the dummy surface, the dummy surface will be converted to a Zernike Standard Sag, the TEZI terms will be applied to the dummy surface and then your “real” surface will have these TEZI terms as a pickup:

 

Userlevel 7
Badge +3

Nice trick Michael!  It’s a little unusual to place the Zernike base terms in the Offset box, but it certainly works, and if one needs to retain the ability to run optimization on these terms then they can be accessed via the MCE and set up as variables…

 

Thanks Jeff and Michael. I did just that, by adding a dummy surface and it works pretty well. 

It might be good to have tolerance operands in zemax addressing other freeform descriptors as well (or some kind of conversion between descriptor types without a huge loss in fit!)

 

Userlevel 4
Badge +1

Hi, all.  You can now tolerance freeforms and off-axis optics easily using the Composite surface capability.!

 

Reply