Laser Beam Expander with Off-axis Parabola

[1]:
import numpy as np

from optiland import optic
from optiland.physical_apertures import OffsetRadialAperture

We can define each component’s position (x, y, z) and orientation (rx, ry, rz) in the global coordinate system. This differs from the typical surface definition, in which only a “thickness” value (in z-axis) is provided. Note that the default value is zero for x, y, rx, ry, and rz.

[ ]:
lens = optic.Optic()

# define the physical aperture for the off-axis parabola
aperture = OffsetRadialAperture(r_max=17, offset_y=45)

lens.surfaces.add(index=0, radius=np.inf, z=-np.inf)
lens.surfaces.add(index=1, z=0)
lens.surfaces.add(
    index=2,
    z=10,
    radius=np.inf,
    is_stop=True,
    material="mirror",
    rx=np.pi / 4,
)
lens.surfaces.add(index=3, z=10, y=25, radius=np.inf, material="mirror", rx=np.pi / 4)
lens.surfaces.add(index=4, z=30, y=25, radius=-9.70685, material="N-BK7")
lens.surfaces.add(index=5, z=35, y=25, radius=np.inf)
lens.surfaces.add(index=6, z=85, y=25, radius=39.9205, material="N-BK7")
lens.surfaces.add(index=7, z=90, y=25, radius=np.inf)
lens.surfaces.add(
    index=8,
    radius=-40,
    y=-15,
    z=150,
    material="mirror",
    conic=-1,
    aperture=aperture,
)
lens.surfaces.add(index=9, y=-15, z=131, rx=np.pi / 2)

lens.set_aperture(aperture_type="EPD", value=5.0)

lens.fields.set_type(field_type="angle")
lens.fields.add(y=-0.3)
lens.fields.add(y=0)
lens.fields.add(y=0.3)

lens.wavelengths.add(value=0.633, is_primary=True)
[3]:
lens.draw()
../../_images/gallery_reflective_laser_system_4_0.png