Version 1.18.35

Release of COPHASAL version 1.18.35.

ZERNIKE DOE Mode

The primary focus of this release is to add support for general phase profile based diffractive surface property. For this, a DOE mode called "ZERNIKE" has been added. It allows defining the phase profile of a diffractive surface using Zernike polynomials. A simple illustrative example follows.

Starting Blank

Let us start by realizing a simple plane parallel plate without the DOE property. We will then add the DOE property to it in the next step.

blank() -- Start with a blank system

-- Default wavelength is 0.5 microns
set("p_val", 2.0) -- Entrance pupil diameter in mm

set("THI S 1", 100000000000.0);  -- Object far away

set("GLS2 S 2", "N-BK7|SCHOTT"); -- Enter diffractive element
set_label("S 2", "in")

ins_surf("S 3", {type = "SPHERE", glass = "AIR", rdy = 0.0, thi = 10.0})
set_label("S 3", "out")          -- Exit diffractive element, 10 mm away

set_stop(2)

Starting blank lens element.

Adding DOE

Next, we will add the Zernike DOE property to surface 3, which is labeled “out”. The phase profile of the DOE is defined by the coefficients of the Zernike polynomials. In this example, we will set the coefficients such that the DOE focuses light to a point 10 mm away from the surface.

-- Set up the DOE to focus 10 mm away 
-- => Sag at 1 mm radius is 100 waves 
-- at the wavelength of 0.5 microns
s['out'].doe = "zernike"
s['out'].de0 = -1.0  -- order
s['out'].de1 =  1.0  -- normalization radius

s['out'].dp0 = 100 / 2                -- U0: 1, waves
s['out'].dp4 = 100 / (2*math.sqrt(3)) -- U4: sqrt(3)*(2*rho^2-1), waves
-- phi(rho, theta) = dp0*U0 + dp4*U4 = 100*rho^2 waves

Lens element with a Zernike DOE property added to the out surface.

Notes

Functional form of the first few Zernike polynomials, as implemented in COPHASAL, are listed in the appendix of the user manual.

Normalization factor is included in the definition of the Zernike polynomials.

The parameter names for the Zernike coefficients are DP0, DP1, DP2, etc. They have been intentionally made different from the DE0, DE1, DE2, etc. parameters.