solves.curvature#
Curvature Solve Module
This module defines CurvatureSolve, an abstract base class for solves that adjust surface curvature (radius) to satisfy a condition.
Kramer Harrison, 2026
Classes
|
Adjusts surface curvature to achieve a target chief ray exit angle. |
|
Abstract base class for curvature solves. |
|
Adjusts surface curvature to achieve a target marginal ray exit angle. |
- class ChiefRayAngleCurvatureSolve(optic, surface_idx: int, angle: float)[source]#
Adjusts surface curvature to achieve a target chief ray exit angle.
- This solve uses the paraxial refraction equation:
n’u’ - nu = -y(n’ - n)c
- to solve for curvature c:
c = (nu - n’u’) / (y(n’ - n))
- Variables:
- apply()[source]#
Applies the chief ray angle solve.
Since changing the system affects the chief ray path (it must pass through the stop), this solve is iterative.
- classmethod from_dict(optic, data)#
Creates a solve instance from a dictionary representation.
- class CurvatureSolve(optic, surface_idx: int)[source]#
Abstract base class for curvature solves.
This class provides the common structure for solves that aim to satisfy a condition by adjusting the curvature of a specific surface.
- Variables:
- class MarginalRayAngleCurvatureSolve(optic, surface_idx: int, angle: float)[source]#
Adjusts surface curvature to achieve a target marginal ray exit angle.
- This solve uses the paraxial refraction equation:
n’u’ - nu = -y(n’ - n)c
- to solve for curvature c:
c = (nu - n’u’) / (y(n’ - n))
- Variables:
- classmethod from_dict(optic, data)#
Creates a solve instance from a dictionary representation.