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))
- surface_idx
The index of the surface.
- Type:
int
- angle
The target exit angle (u’) of the chief ray.
- Type:
float
- 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.
- surface_idx
The index of the surface where the curvature is to be controlled.
- Type:
int
- 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))
- surface_idx
The index of the surface.
- Type:
int
- angle
The target exit angle (u’) of the marginal ray.
- Type:
float
- classmethod from_dict(optic, data)
Creates a solve instance from a dictionary representation.