Aberrations
1st & 3rd Order Aberrations
Decompose performance into classical Seidel coefficients (S1 to S5).
IntermediateAberrationsNumPy backend10 min read
Introduction
This tutorial illustrates how various aberration coefficients are computed.
Core concepts used
lens.aberrations.seidels()
Returns the five primary Seidel sums (Spherical, Coma, Astigmatism, Petzval, and Distortion).
lens.aberrations.TSC()
Extracts the Transverse Spherical Aberration contribution for every surface in the system.
lens.aberrations.TachC()
Computes the first-order transverse axial color, representing the wavelength-dependent focus shift.
lens.aberrations.DC()
Quantifies the 3rd-order distortion contribution of each individual optical interface.
Step-by-step build
1
Import the sample lens
python
from optiland.samples.objectives import TripletTelescopeObjective2
Instantiate and draw the lens
python
lens = TripletTelescopeObjective()
lens.draw()
3
Compute the five Seidel sums
python
print("Seidel Aberrations:")
for k, seidel in enumerate(lens.aberrations.seidels()):
print(f"\tS{k + 1}: {seidel:.3e}")4
Print transverse spherical aberration per surface
python
print("Third-order transverse spherical aberration:")
for k, value in enumerate(lens.aberrations.TSC()):
print(f"\tSurface {k + 1}: {value:.3e}")5
Print longitudinal spherical aberration per surface
python
print("Third-order longitudinal spherical aberration:")
for k, value in enumerate(lens.aberrations.SC()):
print(f"\tSurface {k + 1}: {value:.3e}")6
Print sagittal coma per surface
python
print("Third-order sagittal coma:")
for k, value in enumerate(lens.aberrations.CC()):
print(f"\tSurface {k + 1}: {value:.3e}")7
Print tangential coma per surface
python
print("Third-order tangential coma:")
for k, value in enumerate(lens.aberrations.TCC()):
print(f"\tSurface {k + 1}: {value:.3e}")8
Print transverse astigmatism per surface
python
print("Third-order transverse astigmatism:")
for k, value in enumerate(lens.aberrations.TAC()):
print(f"\tSurface {k + 1}: {value:.3e}")9
Print longitudinal astigmatism per surface
python
print("Third-order longitudinal astigmatism:")
for k, value in enumerate(lens.aberrations.AC()):
print(f"\tSurface {k + 1}: {value:.3e}")10
Print transverse Petzval sum per surface
python
print("Third-order transverse Petzval sum:")
for k, value in enumerate(lens.aberrations.TPC()):
print(f"\tSurface {k + 1}: {value:.3e}")11
Print longitudinal Petzval sum per surface
python
print("Third-order longitudinal Petzval sum:")
for k, value in enumerate(lens.aberrations.PC()):
print(f"\tSurface {k + 1}: {value:.3e}")12
Print distortion per surface
python
print("Third-order distortion:")
for k, value in enumerate(lens.aberrations.DC()):
print(f"\tSurface {k + 1}: {value:.3e}")13
Print transverse axial color per surface
python
print("First-order transverse axial color:")
for k, value in enumerate(lens.aberrations.TAchC()):
print(f"\tSurface {k + 1}: {value:.3e}")14
Print longitudinal axial color per surface
python
print("First-order longitudinal axial color:")
for k, value in enumerate(lens.aberrations.LchC()):
print(f"\tSurface {k + 1}: {value:.3e}")15
Print lateral color per surface
python
print("First-order lateral color:")
for k, value in enumerate(lens.aberrations.TchC()):
print(f"\tSurface {k + 1}: {value:.3e}")Show full code listing
python
from optiland.samples.objectives import TripletTelescopeObjective
lens = TripletTelescopeObjective()
lens.draw()
print("Seidel Aberrations:")
for k, seidel in enumerate(lens.aberrations.seidels()):
print(f"\tS{k + 1}: {seidel:.3e}")
print("Third-order transverse spherical aberration:")
for k, value in enumerate(lens.aberrations.TSC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("Third-order longitudinal spherical aberration:")
for k, value in enumerate(lens.aberrations.SC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("Third-order sagittal coma:")
for k, value in enumerate(lens.aberrations.CC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("Third-order tangential coma:")
for k, value in enumerate(lens.aberrations.TCC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("Third-order transverse astigmatism:")
for k, value in enumerate(lens.aberrations.TAC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("Third-order longitudinal astigmatism:")
for k, value in enumerate(lens.aberrations.AC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("Third-order transverse Petzval sum:")
for k, value in enumerate(lens.aberrations.TPC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("Third-order longitudinal Petzval sum:")
for k, value in enumerate(lens.aberrations.PC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("Third-order distortion:")
for k, value in enumerate(lens.aberrations.DC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("First-order transverse axial color:")
for k, value in enumerate(lens.aberrations.TAchC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("First-order longitudinal axial color:")
for k, value in enumerate(lens.aberrations.LchC()):
print(f"\tSurface {k + 1}: {value:.3e}")
print("First-order lateral color:")
for k, value in enumerate(lens.aberrations.TchC()):
print(f"\tSurface {k + 1}: {value:.3e}")Conclusions
- The five primary Seidel sums (S1–S5) provide a compact, surface-by-surface decomposition of spherical aberration, coma, astigmatism, field curvature, and distortion for a TripletTelescopeObjective.
- Both transverse and longitudinal forms of each third-order aberration are accessible through dedicated methods such as
TSC()/SC(),TAC()/AC(), andTPC()/PC(), allowing direct comparison of ray-height and focus-shift representations. - First-order chromatic aberrations — transverse axial color, longitudinal axial color, and lateral color — are computed via
TAchC(),LchC(), andTchC(), complementing the monochromatic Seidel analysis. - Printing contributions surface-by-surface makes it straightforward to identify which elements dominate each aberration type, guiding targeted design corrections.
- All aberration methods integrate naturally into the
lens.aberrationsnamespace, making it simple to extend this workflow to any Optiland lens model without changing the analysis code.
Next tutorials
NextChromatic AberrationsAnalyze longitudinal and lateral color effects across the visible spectrum.RelatedCommon Aberration AnalysesSee how these numerical coefficients translate into visual ray fans.
Original notebook: Tutorial_3b_First_%26_Third_Order_Aberrations.ipynb on GitHub · ReadTheDocs