Modeling a 3 mirror 5x afocal telescope
This article demonstrates how to model a three mirror 5x afocal telescope based on a prescription provided in “ Modern Lens Design: A Resource Manual” by Warren J. Smith, published by McGraw-Hill.
A script is used in this model's setup that traces the “gut ray” along the optical axis of the system and prints out the vertical position of the ray incident on the surface. This setup allows the user to quickly determine the required vertical position and aperture size of the 2 nd and 3rd mirrors in the system. Once the model is set up, an Analysis Surface is used to calculate a Position Spot Diagram at the image plane to check the performance of the system.
Here, the thickness parameter is defined as the distance between the vertices of the parabolas (for successive mirrors) along the common optical axis shown as the solid line above. This is shown below.
The sa parameter defines, for each mirror, the vertical distance from the parabola origin to the outermost part of the mirror. This is clarified below.
Adding the first mirror
These off-axis mirrors are not “standard mirror objects” in FRED and therefore need to be defined by a Custom Element with a custom Surface.
To define a parabolic surface shape, the surface Type needs to be set to be Conicoid with a radius and conic constant specified as per the prescription above.
The size and shape of the mirror surface is defined on the Aperture tab. The prescription defines a vertical decenter of 32mm, so the value for Y Center is 32mm.
(It might be worth stopping at this stage and reading a related article: Defining Off-Axis Parabolas.)
The sa value is prescribed to be 44mm which means that the Semi-aperture values in y and x will be 12. The values defining the aperture in the Z direction are chosen to be large enough not to trim the mirror in the horizontal direction.
The position of the first mirror is defined to be 43.84 mm from the source (which is assumed to have been already created) in the horizontal direction, and centered on a y value that is 32mm below.
The default Coating and Raytrace Controls for new surfaces are respectively Absorb and Halt All. To represent a mirror, these obviously need to be changed to Reflect and Reflect Specular on the Coating/Raytrace Control tab of the surface.
Adding the 2nd and 3rd mirrors
Another Custom Element with a Conicoid surface is used for defining each of the second and third mirrors. The position of each mirror is easily defined by first placing the mirror into the co-ordinate system of the previous mirror and then applying a shift in the Z direction as defined by the thickness parameter in the prescription.
Unlike the 1 st mirror, the position and size of the aperture for the subsequent mirrors is not explicitly defined.
The simplest way to determine the correct aperture is to start with an approximate size and then trace a single ray along the optical axis of the system to the surface of the 2 nd mirror. The vertical position of the ray at the point of incidence on the surface defines the Y Centervalue for the aperture, and because the sa value is already provided in the prescription the aperture size can also be set.
The following script does this by performing an Advanced Raytrace that stops the ray at the surface defined in line #26 and outputs the vertical position to the Output Window. Note that a source called “Single Ray Source” that traces only one ray is being used.
'The various options for stopping surfaces mirror_1 = FindFullName( "Geometry.Mirror01.Surf 1" ) mirror_2 = FindFullName( "Geometry.Mirror02.Surf 2" ) mirror_3 = FindFullName( "Geometry.Mirror03.Surf 3" ) image_plane = FindFullName( "Geometry.Image Plane.Surface" ) 'This initializes the T_ADVANCEDRAYTRACE structure InitAdvancedRaytrace adv 'This is where the stopping surface of the advanced raytrace is defined. adv.stopSurfID = mirror_2 'it is not necessary to print the raytrace info EnableTextPrinting (False) numTraced = AdvancedRaytrace ( adv ) EnableTextPrinting (True) 'This subroutine returns the data for the 1st (and only) ray GetRay ( 0, ray ) Print "" Print "Surface: " & GetFullName(ray.entity) Print "Y-pos of center ray: " & ray.y
Using this script we find that the y coordinate of the ray when incident on the 2 nd mirror surface is y = 11mm. Knowing also that the sa for this mirror is 17mm the aperture is set to be 6mm:
The shape and position of 3 rd mirror can be defined following the above process after changing line 26 in the script to adv.stopSurfID = mirror_3.
After adding a Plane Element Primitive and an Analysis Surface at the image plane the system model is complete.
The source for performing the raytrace is defined as a randomly positioned grid of 1000 rays spread over a 10mm semi-aperture in both x and y, with an equally distributed wavelength range of 420nm – 650nm.
Plotting the Positions Spot Diagram at the image plane shows a spread of +/- 2um therefore validating the claim that this is a 5x telescope system.
Associated FRED file: 3-Mirror-5x-afocal.frd