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)