sequences.sequenced_surface_group#

SequencedSurfaceGroup: the SurfaceGroup interface over a sequence of views.

Presents a list of SurfaceView objects — resolved from a base surface list and a raw step list — through the read/trace subset of the SurfaceGroup interface that analyses and the tracing pipeline rely on. A sequence is static once resolved: unlike SurfaceGroup, there is no add/remove; to change a sequence’s traversal, resolve a new one.

Kramer Harrison, 2026

Classes

SequencedSurfaceGroup(base_surfaces, raw_steps)

A traversal-ordered group of SurfaceView over shared base surfaces.

class SequencedSurfaceGroup(base_surfaces: list[Surface], raw_steps: list[RawStep])[source]#

A traversal-ordered group of SurfaceView over shared base surfaces.

Parameters:
  • base_surfaces – The optic’s base surfaces, indexed as in raw_steps.

  • raw_steps – The raw sequence definition. See optiland.sequences.steps.parse_steps().

Raises:
  • ValueError – If raw_steps is empty, malformed, or references an out-of-range surface index.

  • SequenceValidationError – If adjacent steps are not physically consistent.

property L#

x direction cosines at each step.

Type:

np.array

property M#

y direction cosines at each step.

Type:

np.array

property N#

z direction cosines at each step.

Type:

np.array

get_thickness(step_number: int)[source]#

Calculate the (signed) axial distance between two consecutive steps.

Parameters:

step_number (int) – The index (within this sequence) of the first step.

Returns:

The distance between the two steps’ surface vertices.

Negative if the sequence traverses backward at this point.

Return type:

float

property intensity#

ray intensities at each step.

Type:

np.array

n(wavelength)[source]#

Get the exit-medium refractive index at each step.

Parameters:

wavelength (float or str) – The wavelength for which to calculate the refractive indices.

Returns:

The refractive indices at each step.

Return type:

numpy.ndarray

property num_surfaces: int#

the number of steps in the sequence.

Type:

int

property opd#

optical path difference recorded at each step.

Type:

np.array

property positions#

z positions of each step’s surface vertex, in traversal order.

Type:

np.array

property radii#

radii of curvature at each step.

Type:

np.array

reset() None[source]#

Resets the recorded information owned by every view in the sequence.

property stop_index: int#

the index (within this sequence) of the aperture stop step.

Type:

int

property surfaces: tuple[SurfaceView, ...]#
trace(rays, skip: int = 0)[source]#

Trace the given rays through the sequence.

Parameters:
  • rays (BaseRays) – The rays to be traced.

  • skip (int, optional) – Number of steps to skip before tracing. Defaults to 0.

Returns:

The traced rays.

Return type:

BaseRays

property u#

paraxial ray angles at each step.

Type:

np.array

property uses_polarization: bool#

True if any step’s interaction uses polarization.

Type:

bool

property x#

x intersection points at each step.

Type:

np.array

property y#

y intersection points at each step.

Type:

np.array

property z#

z intersection points at each step.

Type:

np.array