Source code for optiland.aberrations.seidel

"""Seidel Aberrations

Computes Seidel aberration sums.

Kramer Harrison, 2026
"""

from __future__ import annotations

from typing import TYPE_CHECKING

from optiland.aberrations.third_order import ThirdOrderAberrations

if TYPE_CHECKING:
    from optiland._types import BEArray
    from optiland.optic.context import OpticDataContext


[docs] class SeidelAberrations: """Seidel aberration coefficient sums (SI through SV). Args: optic: Any object satisfying the OpticDataContext Protocol. """ def __init__(self, optic: OpticDataContext) -> None: self._third_order = ThirdOrderAberrations(optic)
[docs] def seidels(self) -> BEArray: """Compute the Seidel aberration coefficients. Returns: Array of Seidel aberration coefficients [SI, SII, SIII, SIV, SV]. """ self._third_order._precalculations() TSC = self._third_order._compute_over_surfaces(self._third_order._TSC_term) CC = self._third_order._compute_over_surfaces(self._third_order._CC_term) TAC = self._third_order._compute_over_surfaces(self._third_order._TAC_term) TPC = self._third_order._compute_over_surfaces(self._third_order._TPC_term) DC = self._third_order._compute_over_surfaces(self._third_order._DC_term) S = self._third_order._sum_seidels(TSC, CC, TAC, TPC, DC) return S.squeeze()