Skip to content

Releases: HarrisonKramer/optiland

v0.5.0 (June 12, 2025)

12 Jun 17:48
Compare
Choose a tag to compare

Optiland v0.5.0 Release Notes

This release brings major enhancements across optical modeling, analysis capabilities, and usability, along with significant backend and documentation improvements. v0.5.0 focuses on increased analysis flexibility, better numerical consistency, and new tools for building and visualizing real-world systems.

image
Visualization of the solution space for a singlet lens, using Optiland’s differentiable raytracing and PyTorch autograd to compute gradients of RMS spot size with respect to lens radii.


🔬 Optical Modeling & Geometry

  • Flip Optical Systems or Elements
    New utility to flip the optical system or optical element.

  • Biconic Geometry Support
    Added support for biconic surfaces, expanding modeling capability for freeform or highly aspheric systems.

  • Aperture Size Control
    Surfaces and lenses can now specify custom aperture sizes for plotting purposes.

  • "Float by Stop Size" Aperture Type
    New aperture type allows sizing relative to the system stop, enabling more parametric designs.

  • Zemax File Coordinate Break Support
    Zemax file reading utility now supports coordinate breaks.


🧪 Optical Analysis & Solvers

  • Through-Focus Spot Diagram
    Added support for computing and visualizing spot diagrams as a function of image plane defocus.

  • Through-Focus MTF
    Compute the Modulation Transfer Function across image plane defocus values for detailed depth-of-focus characterization.

  • Sampled MTF Evaluation
    New functionality to evaluate the MTF at specific target spatial frequencies. Significantly faster than Fourier-based approaches when the MTF is only needed at specific frequencies.

  • Irradiance Analysis Type
    Added an irradiance-based analysis mode for evaluating intensity distribution across a surface.

  • Huygens PSF
    Added a new point spread function calculation using the Huygens-Fresnel integral for more accurate estimation of the PSF.

  • Clearance Operand for Off-Axis Systems
    New clearance optimization operands enables optimization to avoid vignetting or clipping for off-axis systems


⚙️ Backend & Core Improvements

  • Torch Backend Fixes
    Improved gradient retention and differentiability in key components when using the PyTorch backend.

  • Improved Least Squares Optimization
    Enhanced stability and convergence in optimization routines through algorithmic improvements.

  • Surface Ordering Fix
    Improved robustness when defining surfaces in a non-sequential manner.

  • FFT PSF Sampling Behavior
    Updated sampling behavior to align more closely with commercial optical design tools.

  • Ensure Unique Points in Distributions
    Improved internal representation of pupil distributions for improved efficiency.

  • __str__ for RealRays
    Added a string representation for RealRays objects for easier debugging and logging.


🛠 Refactors & API Cleanups

  • Refactored solves Module
    Reorganized and streamlined solving utilities for clarity and extensibility.

  • Refactored analysis Subpackage
    Abstracted common logic into reusable components and improved structure.

  • PSF & MTF Refactor into Subpackages
    Modularized the PSF and MTF modules into a separate subpackages, improving maintainability.


📚 Documentation & Examples

  • Live Demo
    Added an interactive live demo to the docs. Try Optiland directly in your browser!

  • Differential Raytracing Examples
    Added examples of using Optiland for differential raytracing and sensitivity analysis.

  • Real-World Projects Section
    Showcased how Optiland can be used in applied optical design projects.

  • External Tools Section
    Documented external tools which are using Optiland.


🌈 Miscellaneous Features

  • add_wavelengths Functionality
    New API to add multiple geometrically spaced wavelengths, e.g. Chebyshev spacing in log-wavelength, useful for apochromats or non-standard spectral ranges.

This release deepens Optiland’s capabilities across analysis, performance, and real-world integration. We're excited to see how you'll use it in your design work!

👉 Try it out now, or visit the updated docs at https://optiland.readthedocs.io/en/latest/.

v0.4.0 (May 2, 2025)

02 May 13:39
Compare
Choose a tag to compare

Optiland v0.4.0 Release Notes

optiland_plus_pytorch

This release marks a major step toward deeper numerical flexibility and performance optimization. v0.4.0 introduces official support for PyTorch as a computational backend, enabling seamless switching between NumPy and PyTorch across the entire codebase - along with targeted enhancements in modeling capabilities and documentation. Here's what’s new:


Backend Abstraction & PyTorch Integration

  • PyTorch Backend Support
    Optiland now officially supports PyTorch as a backend! All core computations can now be performed using PyTorch tensors, enabling GPU acceleration and autograd-based differentiable optics workflows. This update enables a more than 100x increase in raytracing speed when run on GPU.

  • Configurable Backend System
    A new abstraction layer allows you to switch between numpy and torch backends with zero changes to your code. This lays the groundwork for future machine learning integrations and high-performance computing.

  • Torch Backend Documentation
    Documentation added to help users get started with the new backend. See the Configurable Backend Guide for more details.


Optical Modeling Features

  • Toroidal Surface Support
    Added a new ToroidalSurface type, useful for modeling astigmatic or freeform-like systems such as ophthalmic lenses and laser beam shaping components. More details here.

Maintenance and Quality

  • Bug Fixes
    Various small bugs were fixed across the codebase, improving robustness and numerical consistency, especially when switching backends.

  • Improved Documentation
    Additional examples and backend usage patterns have been added to the documentation. More tutorials are currently planned.


This release strengthens Optiland's foundations for high-performance optical design and simulation in both research and production contexts. Let us know what you build with it!

v0.3.1 (Apr 14, 2025)

14 Apr 18:11
Compare
Choose a tag to compare

Optiland v0.3.1 Release Notes

This release brings a number of new features, improvements, and refinements aimed at enhancing both user experience and codebase maintainability. Here's what's new in v0.3.1:


General Optical System Enhancements

  • Physical Aperture Overhaul
    Major upgrade to the physical apertures module, including support for Boolean apertures (e.g., unions, intersections). Reference here.

image

  • QuickFocus Solver
    New solver to automatically move the image plane to the point of best focus.

  • Paraxial Surface Support
    Introduced ParaxialSurface type for fast first-order (Gaussian) optical system modeling. Reference here.

  • Surface Comments
    Surfaces now support a comment attribute for easier documentation and traceability.


Usability and Workflow

  • Merge Optics with +
    Two Optic instances can now be combined using the + operator for quick concatenation of optical systems. Reference here.

  • Custom Callback in Optimizers
    Optimizers now accept user-defined callback functions for real-time updates or custom stopping conditions.


Testing, Compatibility & Maintenance

  • Improved Python Compatibility
    Official support for Python 3.13.

  • Expanded Test Coverage
    New tests added to improve reliability and prevent regressions.

  • Better Handling of Incomplete Material Data
    Gracefully handles missing extinction coefficient (k) data in materials.

  • Documentation & Style Cleanup
    Documentation has been improved, examples added, and code formatting updated for consistency.

  • Refactors & Quality of Life
    General internal improvements to make future development smoother and easier.


v0.3.0 (Feb 19, 2025)

19 Feb 20:20
Compare
Choose a tag to compare

Optiland v0.3.0 Release Notes

Additions and Improvements:

  • Airy disc function added to the spot diagram
  • Enhanced Zemax file support
  • Corrected non-air image space wavefront calculations
  • Fixed wavefront issues for +x angular fields
  • Revised sign conventions for angular fields
  • General code maintenance and cleanup

v0.2.6 (Feb 5, 2025)

05 Feb 19:27
Compare
Choose a tag to compare

Optiland v0.2.6 Release Notes

image
New example from learning guide showing three mirror anastigmat with Zernike freeform surface.

Additions and Improvements:

  • Added global optimizers SHGO and basin hopping
  • Bounded optimization operand support added
  • Zernike freeform surface added
  • Odd asphere surface added
  • Update to ray tracing logic to continue tracing through negative edge thickness
  • Improved coordinate system handling
  • Learning guide, example gallery and documentation updates
  • Visualization updates
  • General bug fixes and performance improvements

Many thanks to our new contributors.

v0.2.3 (Jan 2, 2025)

02 Jan 15:51
Compare
Choose a tag to compare

Optiland v0.2.3 Release Notes

Additions and Improvements:

  • File I/O feature updates for Zemax/Optiland file formats.
  • Added RingDistribution pupil distribution.
  • Various visualization updates.
  • Added new analyses: pupil aberrations, RMS vs. field (wavefront & RMS spot size),
  • Documentation update for Read the Docs. Developer's guide added.

v0.2.0 (Dec 1, 2024)

01 Dec 13:06
Compare
Choose a tag to compare

Optiland v0.2.0 Release Notes

Additions and Improvements:

  • Refactor of 2D and 3D visualization to better include surface tilts/decenters
  • FFT PSF visualization code optimized for speed
  • Add the OperandRegistry for optimization operands. Improves optimization organization and simplifies adding new or user-defined operands.
  • Updated documentation and new tutorials
  • Tests added to improve package coverage
  • SolveManager and PickupManagers added to handle solves and pickups, respectively, for a given Optic instance.

Breaking Changes:

This release introduces changes to the API that may affect existing code. Specifically:

  • SolveManager and PickupManager Integration
    • Methods for adding solves and pickups have been updated to use managers. This ensures a more modular and extendable design.

Example migration:

lens = CookeTriplet()

# v0.1.7 (Old)
lens.set_pickup(source_surface_idx=1, attr_type='radius', target_surface_idx=2, scale=-1, offset=0)
lens.clear_pickups()
lens.set_solve('marginal_ray_height', surface_idx=0, height=10)
lens.clear_solves()

# v0.2.0 (New)
lens.pickups.add(source_surface_idx=1, attr_type='radius', target_surface_idx=2, scale=-1, offset=0)
lens.pickups.clear()
lens.solves.add('marginal_ray_height', surface_idx=0, height=10)
lens.solves.clear()

v0.1.5 (Oct 10, 2024)

10 Oct 16:36
Compare
Choose a tag to compare

Optiland v0.1.5 Release Notes

This release implements the following additions and improvements:

  • Bug fix to properly link package data in pyproject.toml

v0.1.4 (Oct 6, 2024)

06 Oct 18:41
Compare
Choose a tag to compare

Optiland v0.1.4 Release Notes

This release implements the following additions and improvements:

  • Improved package documentation & minor bug fixes
  • New examples added for Read The Docs documentation
  • Added AbbeMaterial class for model glass use
  • Various code refactors for improved code robustness

v0.1.2 (Sep 9, 2024)

19 Sep 20:23
Compare
Choose a tag to compare

Optiland v0.1.2 Release Notes

This release implements the following additions and improvements:

  • Improved testing coverage for package robustness
  • General structural and maintainability improvements
  • Several new tutorials added in learning guide
  • Chebyshev polynomial freeform added
  • Tolerancing module added