Ray intensity sequential mode Apodization


How can I obtain the intensity of single rays (either using ZPL or API) when the apodization is part of a user-defined surface?

I used the “us_filt1.dll” example provided with the Zemax distribution and set G>0. The APOI(x,0) operand returns 1.0 for all positions of the pupil (0<x<1), despite the apodization applied in the dll.



Best answer by MichaelH 4 May 2022, 18:57

View original

2 replies

Hi Michael,

thank you very much. This was helpful.

Is this correct, that the transmission defined in the UDS is referring to the intensity and the aperture apodization applies an amplitude apodization?


Userlevel 6
Badge +2

Hi Simon,

The APOI(px, py) will return the intensity of the ray based on the System Explorer > Aperture > Apodization Factor setting, so if you have this set to Uniform (the Apodization Factor itself is hidden) or you have it set to Gaussian with an Apodization Factor set to 0, it will always return 1.0.  This calculation is done without a ray trace and is simply defined by the equations in the Apodization Type of the Help File.

To get the intensity of a ray in sequential mode (either in the ZPL or API), you will need to perform a polarization ray trace.  In the ZPL, this is done with the POLTRACE keyword.  The following ZPL code will report the on-axis field, mid-pupil ray intensity:

PRINT "us_filt1.dll with G=2.0"

PRINT "APOI value      : ", APOI(0, 0.707)

POLTRACE 0, 0, 0, 0.707, PWAV(), 1, NSUR()

PRINT "POLTRACE value  : ", VEC1(1)