How to perform a Non-Sequential tolerance analysis

This article describes how to perform a non-sequential tolerance analysis using a freeform lightpipe as an example.

Authored By Mark Nicholson


Article Attachments


Tolerancing is the process by which errors (manufacturing, assembly, material, etc.) are systematically introduced to an optical system in order to determine their effect on system performance. If you are new to the concept of a tolerance analysis or would like more details on the theory behind the process, first read the article “How to perform a Sequential tolerance analysis" and the OpticStudio Help Files section: The Tolerance Tab...Tolerancing Overview.

The goal of this article is to illustrate the tools available to tolerance a non-sequential optical system.

Tolerance operands and settings

Three tolerance operands allow any value of interest to be perturbed in a NSC system: TNPS, TNPA, and TNMA. These are used to tolerance non-sequential object positions/tilts, parameters, and material properties, respectively. Two compensator operands, CNPS and CNPA, provide a comprehensive way to allocate adjustments. These allow non-sequential object positions/tilts and parameters to be allocated as compensators, respectively. In addition, the TMCO tolerance operand and CMCO compensator operand allow multi-configuration data to be used as tolerances and compensators. Refer to the OpticStudio help system section in The Tolerance Tab...Tolerancing Group...Tolerance Data Editor for a complete description of these tolerance operands.

Non-sequential tolerancing employs user-defined merit functions for tolerancing criteria. Both merit functions and user scripts, which use a series of saved merit functions, are supported. This is advantageous because a merit function will likely have been used during the optimization process, and no additional consideration is needed to evaluate the system performance. For more information on non-sequential optimization, including merit function construction, read the article “How to optimize Non-Sequential optical systems”.

Here are some additional points to note about non-sequential tolerancing:

  • Compensator min/max bounds are always ignored because merit function and user script are the only available criteria. Use merit function boundary operands (NPGT, NPLT, etc.) to constrain compensator values.
  • TOLR is supported during optimization in Non-Sequential Mode, however, user script is the only valid criteria; selecting merit function as the criteria would lead to an infinite loop. Make sure the merit functions loaded by the script don’t contain TOLR operands themselves.
  • Tolerance settings that have no meaning in non-sequential systems (ray aiming, separate fields/configs, etc.) are disabled.
  • When tolerancing multi-configuration systems, the merit function used must account for each configuration using multiple CONF operands.
  • Tips to speed up tolerancing:
    • NSDD is relatively insensitive to sampling noise for computing aggregate data (RMS widths, centroid, etc.), so don’t use more analysis rays than necessary.
    • Use Sobol sampling of sources when possible.
    • Simplify the system: don’t use scattering, CAD objects, or Boolean CAD objects when possible.

Tolerancing a freeform object

As an example, we will use the optimized freeform-z light pipe created in the article “How to perform freeform optical design”. The optimized system consists of an OSRAM LED and a freeform light pipe that has been optimized to achieve maximum power and collimation at the detector. This system is contained in the ZAR file “Freeform Tolerance” on the last page of this article.


As with any tolerance analysis, we must first prepare the system for tolerancing and then define the tolerances and criteria. During the optimization process, the detector used pickup solves to maintain its position and size relative to the end of the light pipe. These solves should be removed because errors in alignment between the detector and the light pipe need to be considered for an accurate tolerance analysis. Set the pickup solves on the detector z-position and x,y half widths to fixed. Fix the z-position of the detector at 53 mm. Also, remove the variable solves from the freeform-z control points. This can be quickly done under The Optimize Tab...Remove All Variables. During a tolerance analysis, the only variables are defined via compensators, if there are any.

The next step is to consider the different errors that could cause the as-built system to perform worse than the optimized system. These are broken into different categories below:

  • Manufacturing errors
    • Incorrect lateral sag at the control points
    • Incorrect overall thickness
    • Incorrect index of refraction
  • Assembly errors
    • LED position and orientation
    • Detector position and orientation

The TNPA tolerance operand will be used to tolerance the lightpipe control points and thickness. TNPS will be used to tolerance the positions and orientations of the LED and detector. Perturbing the lightpipe as well would be redundant. TNMA will be used to tolerance the index of refraction of the lightpipe. Note that this system is monochromatic so there is no need to tolerance the dispersion (Abbe number) of the lightpipe.


The last step is to define the tolerance criteria, which will be the merit function. The merit function currently targets RMS angular radius (collimation) and maximum power, while also constraining the shape of the freeform-z object. A tolerance analysis will serve to perturb the control points only slightly, so it isn’t necessary to constrain these points with the FREZ operands. Delete the FREZ operands in the merit function.


The only step left is to define the tolerance settings. We will perform a sensitivity analysis and a small number (20) of monte carlo runs. Open the tolerancing dialog (The Tolerance Tab...Tolerancing) and load the “Freeform Tolerance.TOP” file included in the attachments for this article; press OK.

The tolerance analysis is fully multi-threaded to use all CPUs available on the user’s machine, and takes about one minute on a 4 CPU computer. OpticStudio multi-threads when computing the nominal criterion, and subsequently assigns each tolerance operand and Monte Carlo trial as a single thread (one per CPU) to speed up tolerancing.

A complete description of the tolerance results are covered in the Sequential tolerancing article referenced previously. The data provided in the NSC tolerance results are identical. Of note in this particular example are the worst offenders in the sensitivity analysis. The most sensitive parameters are the control points Y2 and Y3. These control points define the shape of the first “bulge” in the lightpipe and it can be clearly seen in the shaded model layout above that most of the energy escaping the lightpipe occurs here. The next most sensitive parameters are the positions of the LED, which control how much light is coupled into the lightpipe to begin.


Each Monte Carlo trial represents a system with all parameters perturbed from their nominal values. The statistics and yield values indicate the likelihood that the system will be built to a certain performance level.


If a user script had been used, we could have reported any desired merit function operand values directly in the tolerance report. This is a very useful feature when specific values need to be monitored during the tolerance process. You can read more about this in the article “How to get any optimization operand value in the tolerance report”.


Was this article helpful?
5 out of 5 found this helpful



Please sign in to leave a comment.