Glossary
This page defines the core concepts in Optiland. Want runnable examples? See the API Cheat Sheet.
Optic
The central container for an entire optical system. An Optic instance holds all surfaces, aperture
definitions, field points, and wavelength information. It also exposes paraxial analysis, aberration
computations, the ray tracer, and polarization state.
Example: lens = optic.Optic(name="My System")
SurfaceGroup
Manages the ordered collection of Surface objects within an Optic. It propagates rays through
the system by invoking surface-specific logic at each step, aggregates ray-trace history, and exposes
methods for adding, removing, and modifying surfaces.
Surface
Represents a single optical interface — a lens element, mirror, image plane, grating, etc. Each surface is composed of:
Geometry: The mathematical shape (e.g., planar, spherical, aspheric, freeform).
Material: Refractive index and extinction coefficient on each side.
Coating: Optional thin-film stack modifying reflection, transmission, or polarization.
Interaction model: How rays interact — refraction, reflection, diffraction, or a custom phase profile.
Physical aperture: Optional mask defining the clear aperture.
BSDF: Bidirectional scattering distribution function for surface scatter.
Special surface types include ObjectSurface (first surface, object plane), ImageSurface
(final surface, image plane), and surfaces carrying a ThinLensInteractionModel (paraxial thin-lens
approximation).
Material
Defines the optical medium between surfaces. Optiland supports:
MaterialFile: Loads dispersion data from the refractiveindex.info database, which is bundled with the package.IdealMaterial: A wavelength-independent medium specified by a single refractive index.AbbeMaterial: A medium specified by its refractive index at the d-line (nd) and Abbe number (Vd), using a Buchdahl dispersion model (recommended) or a legacy polynomial model.User-registered materials via
MaterialRegistry.
Geometry
Defines the mathematical shape of a surface and provides two critical operations: ray–surface intersection and surface normal computation. Built-in geometries include:
StandardGeometry: Spherical and conic surfaces.EvenAsphere,OddAsphere: Polynomial aspheres.Biconic,Toroidal,Polynomial,ChebyshevPolynomialGeometry,ZernikePolynomialGeometry: Freeforms.PlaneGrating,StandardGrating: Diffraction gratings.NURBSGeometry: Non-Uniform Rational B-Splines.ForbesGeometry: Q-polynomial freeform surfaces (Forbes convention).
Custom geometries can be added by subclassing BaseGeometry (closed-form) or
NewtonRaphsonGeometry (iterative).
Aperture
Defines the system’s limiting aperture. The aperture type determines how the entrance-pupil size is specified:
EPD: Entrance pupil diameter in mm.imageFNO: Image-space f-number.objectNA: Object-space numerical aperture.float_by_stop_size: The aperture stop physical diameter drives the pupil size.
Fields
Define the points in the object plane (or angular directions) being imaged. Fields can be specified by
angle (degrees) or object height (mm). Vignetting factors can be applied per field. Each Field has an
optional weight used in weighted analysis aggregation.
Wavelengths
Specify the wavelengths of light used for analysis. All values are stored internally in microns (µm).
One wavelength is designated as the primary wavelength, used for paraxial calculations and single-wavelength
analyses. Each Wavelength has an optional weight used in weighted analysis aggregation.
Coordinate System
Each surface has its own Local Coordinate System (LCS) defined by position (x, y, z) and rotation (rx, ry, rz) relative to a reference. Key conventions:
Light propagates from left to right along the +z axis.
Surface 1 is typically at the global origin (z = 0).
Thickness is the axial separation to the next surface; positive means to the right.
Radius of curvature: positive means center of curvature to the right (convex to the incoming beam); negative means to the left.
Tilts and decenters are applied as
R = Rz @ Ry @ Rx.
Apodization
Defines the intensity (amplitude) distribution across the entrance pupil. The default is
UniformApodization (flat). GaussianApodization applies a Gaussian intensity profile across the
pupil, modelling a Gaussian input beam.
Backend
Optiland routes all numerical operations through a unified backend abstraction (optiland.backend),
allowing transparent switching between NumPy (default, CPU) and PyTorch (GPU and autograd). All
Optiland code uses import optiland.backend as be instead of importing NumPy or PyTorch directly.
Switch backends with be.set_backend("torch") or be.set_backend("numpy").
See Configurable Backend in the Developer’s Guide for the full backend architecture.