Tolerancing is an important part of optical design. The tolerancing process involves relaxing or tightening various tolerances, depending upon their contribution to the change in criteria, and whether the tolerance is within budget. This article demonstrates how to use polynomial fits to speed up tolerancing.
Authored By Dan Hill
Tolerancing is an important part of optical design wherein various tolerances are iteratively relaxed or tightened until the performance of the system is within specification with realistic tolerances that to not unnecessarily increase the cost of manufacture.
In this repetitive process of changing tolerances and re-evaluating the performance of our optical system, it is likely that only a few tolerances need to be adjusted. Therefore, it isn’t necessary to recalculate every tolerance operand over and over again. Furthermore, for those tolerances which were adjusted, we can quickly compute the criteria change using a fitted formula. The benefit: potentially hundreds of hours of computation time can be saved! This is Polynomial Sensitivity Tolerancing.
For most tolerances, the criteria value has a smooth varying shape as a function of the tolerance perturbation. In most cases, this change in criteria curve can be accurately fit using either a 3 or 5 term polynomial. Only if tolerances were to loose that the design could find a different local minimum would this not be true.
Imagine a multi-element imaging system where we plot the RMS Spot Radius as a function of the decentration of the first lens element.
Within the tolerance range, the curve is well behaved, and can easily be fit to a polynomial. In OpticStudio, we can fit the actual criteria curve with a 3- or 5-term polynomial of the following form:
where δ is the tolerance perturbation value and P is the resulting criterion. For the 3-term fit, a total of 4 equally spaced points are used within the minimum and maximum tolerance values. A total of 6 points are used for the 5-term fit.
Using the same example as above, a 3-term fit would require an evaluation of the criteria at 4 equally spaced perturbations, as is shown in the figure below.
Once the criteria values are calculated, a 3-term polynomial is fit. Note that the fit is created to minimize the amount of error between the resulting criteria at the 4 perturbation points. Using a finite number of polynomial terms, the fit may not actually pass through each (or any) of the actual criteria values at these four points.
In the current example, the fit would look something like:
There is virtually no difference between the fit (determined by only 4 data points) and the curve of the actual criteria as a function of the tolerance perturbation!
The beauty of this is that once we have a mathematical equation for how the criterion varies as a function of the tolerance perturbation, subsequent calculations are almost instantaneous! For example, if we choose to tighten the tolerance on the decenter of our first lens element (as in the demonstration above), there is no need to recalculate the criteria by brute force. Instead, we simply plug the tolerance perturbation into our fitted polynomial equation and evaluate the new criteria.
The Polynomial fitting options are available under the Set-Up tab of the Tolerancing window:
Either a 3-Term or 5-Term Polynomial may be chosen. The polynomial fitting is considered a “Cache” option, because the polynomial fit data is saved in memory. The cached data may then be used to quickly generate subsequent tolerance analyses. For details on the other Cache option, please refer to the article, “How to use the Tolerancing Cache.”
Initially, for the first tolerance run, the Cache option can be set to “Recompute All.” If for subsequent tolerances you wish to use the cached polynomial, then choose either the 3- or 5-Term Polynomial option as shown in the dialog above.
For the initial calculation, using the polynomials is more time consuming because OpticStudio has to calculate some additional points within the minimum and maximum tolerance range. As was described earlier, the 3-Term polynomial requires 4 evaluation points and the 5-Term polynomial requires 6 points. This is performed for each and every tolerance in the Tolerance Data Editor. When the fit for each individual tolerance is complete, the polynomial coefficients are saved to memory. When tolerance analysis is complete, the polynomial terms are displayed in the output text window:
After reviewing the tolerance results, and after making adjustments to the appropriate tolerances, subsequent tolerances can use the cached polynomial data. Just make sure to select the “Use Polynomial” Cache option for subsequent tolerances! Especially for computationally intensive calculations, the time saved will be tremendous!
The polynomial cache can save tremendous time by fitting the criteria change with a polynomial expression. For a system which has already been optimized, and for moderate tolerances, the criteria as a function of perturbation from nominal is very near quadratic, much like the decenter example we first discussed in this article.
If your tolerances are too loose, or if the nominal lens configuration is not optimal, then the criteria may have a very strange, un-fittable relationship. If this happens to be the case, then the fitted polynomial will not be an accurate representation of the true criteria value. So, don’t set the initial tolerances to be too loose, especially when performing Inverse Sensitivity.
Q: Are the compensators still considered when using the cache?
Yes, the data which is presented at the end of the tolerance calculation does consider the affects of compensation. However, compensator data is not displayed.
Q: How to I clear the cache?
If you every doubt the validity of the cached data, set the “Cache” option to “Recompute All” and repeat the tolerance analysis.