With the advent of personal computers, nearly all engineering disciplines have benefited from computer-aided design (CAD) software; the field of optics is no exception. The optical design workflow has been revolutionized with programs capable of doing advanced analysis, optimization, and tolerancing. Many optical design programs that originated in the 20th century utilize a surface spreadsheet listing to define optical components and ray paths. This method was understandable due to the sequential nature of light propagation through traditional optical systems (cameras, telescopes, etc.). Eventually, the sequential listing of optical surfaces became the paradigm for optical design programs. As applications with non-sequential light propagation became more common (lighting, stray light, etc.), non-sequential optical design programs were developed to simulate light propagating through components in any order. These programs typically used object-based models that organize components into 3D objects and assemblies, like mechanical CAD programs. While non-sequential simulation is more general, sequential simulation is more efficient for a wide range of optical design problems. These legacy optical design programs, whose foundations were written long ago, have continued to evolve within the limitations of their fundamental architectures. If one were to develop a modern optical design program, what would be the key features of a new paradigm?
For starters, any modern program should exploit the latest software development languages and tools for its architecture. This means using efficient, robust, highly functional, pre-written libraries where available, and directly integrating these with efficient optical physics calculations. Many powerful user interface (UI), graphics, and plotting libraries are now available that were not decades ago when the most widely used software was written. Legacy optical design programs often use a software translation layer to interface older code with these modern libraries rather than rewriting everything. Many frustrating instabilities and inefficiencies of these programs are based upon this fact. A better method would be to write code from the ground up to exploit this modern software architecture. This comprehensive approach would prevent the need for architecture trade-offs necessary to incorporate legacy code. Another powerful advantage is comprehensive and efficient access to the core algorithms via an API. It would even be possible to integrate the core algorithms into other software or equipment, completely independent of the user-interface.
With the surface listing methodology of legacy optical design programs, significant complexity is needed to model non-rotationally symmetric systems or component dependencies. The fundamental rule in this methodology is that all surfaces are positioned relative to the prior surface. To position a surface globally or referenced to an assembly, numerous coordinate shifting surfaces and complicated solves are necessary. A better method for modeling optical components is an object-based architecture. Foremost among its advantages is the intuitive definition of the system which most closely matches the nature of the real optical components. This enables 3D components to be easily defined in global coordinates or relative to others. They could be grouped into assemblies and subassemblies that support pivots and shifts about arbitrary points. When implemented with modern graphical libraries, modifying component parameters could be done via a 3D viewer or a more traditional object editor. The benefits of this model would extend to tolerancing and simulating complex tolerance dependencies. Mechanical CAD components could be readily incorporated into such an optical model.
The sequential paradigm for optical simulation is based on valid reasoning, as discussed previously. Many optical systems have well-defined ray paths and many optical physics calculations require aperture stops and unique reference rays to properly compute. Sequential raytracing is the fastest and most efficient way to simulate these systems. It’s important to be able to define a sequence of surfaces through which light traces. However, using the same surface listing to define the optical model and the ray sequence necessitates complexity in all but the simplest systems. While the real optical system only has one set of components, the surface list optical model must duplicate and ignore surfaces using multiple configurations to simulate multiple optical paths. Multiple configurations are a powerful modeling tool that should be reserved for components moving or changing shape. A better method would be to define the optical components and separately define any number of ray sequences that interact with those surfaces, decoupling the optical component definition and ray sequence definition. This multi-sequential paradigm has clear advantages over the current sequential paradigm. It ensures the model defining the optical components is as simple as possible, while supporting any number of discrete ray paths through these optics. Double pass systems would only require the optical components to be defined once. The separately defined ray sequence would dictate the multiple interactions with the same surfaces. In simpler systems, the program could automatically predict the sequence based upon the component listing order. Sequential analyses could be set to evaluate any defined sequential ray path.
While sequential raytracing is efficient, many optical systems include complex light sources that cannot be accurately defined as field points, or ray paths that aren’t known in advance. These systems benefit from the more general non-sequential raytracing methods available. It is often necessary to run sequential and non-sequential simulations on the same optical system. With legacy optical design programs, these are either distinct modes of operation, including at the level of component definition, or completely separate programs. There can be tools for converting a system from one mode/program to the other, but having two distinct models of the same system is inefficient and error prone. A better method for a fundamentally object-based optical model would be to support pre-defined ray sequences and more general non-sequential raytracing, all in the same model. Some analyses would require sequential raytracing, while others would support non-sequential raytracing. For an optical system such as a digital projector with optics needing to be simultaneously optimized for illumination and imaging targets, this would be a valuable capability.
Optical components come in many shapes and with varying characteristics. On the simpler side there are rotationally symmetric, spherical lenses and mirrors. Other components are more complex, such as freeform optics, lenslet arrays, or light modulators (polarization, position, angle, etc.). With so many types of optical components, coding distinct surface types with the exact combination of needed parameters is problematic. Legacy optical design programs have used this method and developed complicated workarounds, such as combining adjacent surfaces, for modeling complex surface types. A better method would be to define a base surface and allow various parametric layers to be superimposed. These layers could comprise any combination of form/sag, aperture/obscuration, polarization, phase, coating, and replication/arrays. This would make the fundamental model simpler for traditional optics and vastly more extensible for novel optics.
This new paradigm would be simpler, more intuitive, more extensible, and more powerful than legacy optical design software. Quadoa® Optical CAD software was written with these characteristics from the ground up. It has fully featured sequential optical design, analysis, optimization and tolerancing capabilities. Modules are available that provide Python/MATLAB/C++ APIs, enable wave optics simulation, and integrate mechanical CAD. Non-sequential simulation is under active development. It can run on Windows or Linux natively, and on MacOS via a virtual machine. Licensing is perpetual or subscription, with local or network options depending upon the end user’s needs.
Quadoa® is next-generation optical design software.