Infrared Triplet

[1]:
import numpy as np

from optiland import materials, optic
[ ]:
class InfraredTriplet(optic.Optic):
    """Infrared Air-Spaced Triplet

    Milton Laikin, Lens Design, 4th ed., CRC Press, 2007, p. 54
    """

    def __init__(self):
        super().__init__()

        germanium = materials.IdealMaterial(n=4.002)

        # https://www.spectral-systems.com/technical-data-sheet/znse-zinc-selenide
        ZnSe = materials.IdealMaterial(n=2.4028)

        self.surfaces.add(index=0, radius=np.inf, thickness=np.inf)
        self.surfaces.add(
            index=1,
            radius=10.4578,
            thickness=0.5901,
            material=germanium,
            is_stop=True,
        )
        self.surfaces.add(index=2, radius=14.1079, thickness=4.3909)
        self.surfaces.add(index=3, radius=-15.8842, thickness=0.59, material=ZnSe)
        self.surfaces.add(index=4, radius=-18.2105, thickness=5.6218)
        self.surfaces.add(index=5, radius=2.5319, thickness=0.3918, material=germanium)
        self.surfaces.add(index=6, radius=2.4308, thickness=1.3065)
        self.surfaces.add(index=7)

        self.set_aperture(aperture_type="imageFNO", value=2)

        self.fields.set_type(field_type="angle")
        self.fields.add(y=0)
        self.fields.add(y=2.8)
        self.fields.add(y=4)

        self.wavelengths.add(value=10.6, is_primary=True)
[4]:
lens = InfraredTriplet()
lens.draw()
../../_images/gallery_specialized_lenses_infrared_triplet_3_0.png