class PetzvalLens(optic.Optic):
"""Petzval lens f/1.4
Milton Laikin, Lens Design, 4th ed., CRC Press, 2007, p. 75
"""
def __init__(self):
super().__init__()
# add surfaces
self.surfaces.add(index=0, radius=np.inf, thickness=np.inf)
self.surfaces.add(index=1, radius=1.3265, thickness=0.4, material="N-LAK12")
self.surfaces.add(index=2, radius=-2.6919, thickness=0.06)
self.surfaces.add(
index=3,
radius=-2.0028,
thickness=0.16,
material=("SF4", "schott"),
)
self.surfaces.add(index=4, radius=5.4499, thickness=0.1)
self.surfaces.add(index=5, radius=np.inf, thickness=0.8999, is_stop=True)
self.surfaces.add(index=6, radius=1.1724, thickness=0.3, material="N-LAK12")
self.surfaces.add(index=7, radius=-2.4602, thickness=0.2221)
self.surfaces.add(
index=8,
radius=-0.8615,
thickness=0.08,
material=("LF5", "schott"),
)
self.surfaces.add(index=9, radius=3.0039, thickness=0.3921)
self.surfaces.add(index=10)
# add aperture
self.set_aperture(aperture_type="imageFNO", value=1.4)
# add field
self.fields.set_type(field_type="angle")
self.fields.add(y=0)
self.fields.add(y=3.5)
self.fields.add(y=7)
# add wavelength
self.wavelengths.add(value=0.48613270)
self.wavelengths.add(value=0.58756180, is_primary=True)
self.wavelengths.add(value=0.65627250)