In this example, we highlight how to model a typical backlight unit and its illuminance distribution as it pertains to brightness and uniformity. One of the key features we highlight is the use of Speos 3D Textures , which was initially developed for backlight unit products, and can be used to design light guides, Brightness Enhancement Films (BEF), and back-lighting units composed of thousands/millions of micro-textures to create a uniformly lit display. We also go through the steps of parametrizing the system, creating a metamodel of the various input/output combinations, and finally, optimizing the system. The end goal is to achieve good uniformity of light distribution while maintaining a high coupling efficiency to achieve the highest light output. This example highlights both Ansys Speos & optiSLang working together.
[[NOTES:]] Software Prerequisites
To be able to use this Example, the following products and solutions need to be installed on your computer:
- Ansys Speos 2023 R1 or later
- Ansys optiSLang 2023 R1 or later
Overview
Understand the simulation workflow and key results
Backlit displays are everywhere. You’re either reading this laptop, a monitor, or a smartphone, all which leverage a backlit display. In either case, it is important to have an even illumination of light to achieve a bright, clear image. The most common technology for backlighting is LCD. In some LCD applications, LEDs are used to backlight the system, combined with brightness enhancement films, diffuser sheets, and light guides. A common way to execute a light guide is to create a texture pattern to extract light evenly along the system. Speos offers a unique 3D texture feature which allows users to virtually pattern thousands of micro-optic elements without concerns of memory limitation. In order to optimize this pattern, we will parametrize the texturing model in Speos, and leverage optiSLang to perform a parameter-sensitivity analysis, followed by a robust optimization of the system, to achieve our desired results.
There are 2 products needed for this simulation:
- Speos to model the display stack, the 3D texture pattern for the backlight, and the light propagation from the LEDs through the display
- optiSLang to investigate parameter-sensitivities and optimize the design performance
Step 1: Speos display stack creation and analysis
In this step, the optical and mechanical components of the display stack are defined in Speos. Some of the parameters will be used later as inputs for the optimization (e.g., the 3D Texture half spheres density), but at this stage only starting values are assigned.
An optical simulation is then run, and the quantitative outputs are translated as the baseline for the optimization. These values indicate how good the design is in terms of light output, uniformity, manufacturability, etc.
Step 2: Speos 3D Texture light guide creation
The Speos 3D Texture feature from Speos allows to simulate micro-texture by modeling and projecting hundreds, thousands, or millions of geometrical items on a geometry.
Here, a 3D Texture from half-sphere patterns applied to the back side of the light guide plate and it was set to remove material from the base light guide. The size of the half-sphere pattern is dramatized for illustration purposes:
The ultimate array of the half spheres is controlled by parametric inputs that can be later controlled by optiSLang.
Step 3: optiSLang sensitivity analysis
After creating the model and simulation in Speos, it is time to set up an optimization in optiSLang. Part of this process requires a sensitivity analysis which will determine the most critical inputs affecting the results. These very same inputs are at the same time defined with a reference value as constant or non-constant, and within a working range.
An Adaptive Metamodel of Optimal Prognosis (AMOP) method in optiSLang is used to perform the sensitivity analysis. It represents the approximate results of all possible combinations of the inputs.
From this data, it can be determined what the most relevant inputs are to be included in the optimization in lieu of using all of them.
Step 4: optiSLang optimization
In this step, a nature-inspired method called Evolutionary Algorithm is used to search both globally and locally for the best design. The optimization algorithm sampled 10,000 designs on the MOP in order to find the best combination of input parameter values that leads to the best design. The result of the multi-objective optimization is visualized in the “Pareto Plot” (see image below, red and black dotted graph). The plot shows the trade-off between the two objectives where the set of the best designs are marked with red dots (defined as pareto front ). The workflow validates automatically 20 of the best designs with a real solver call (show as green dots). The differences between predicted and validated value are small due to the good COP values.
From obtaining the best tradeoff (i.e., a balance between flux and uniformity) to achieving the best design (i.e., acceptable flux, best uniformity), proper validation is conducted throughout the optimization process.
Run and Results
Instructions for running the model and discussion of key results
Step 1: Speos - Create display stack model and run baseline simulation
- In Speos 2022 R2, open the Speos model “backlight_unit.scdocx” from the Speos folder.
- Within the Simulation panel, select the ‘Optimization’ Direct simulation and Compute.
- Open the XMP file (result) and check ‘Measures’.
Speos allows building a virtual, physics-based representation of the real-world scenario. In this step, the standard simulation procedure shown below is followed in order to obtain the visual perception that the end user would receive in the ultimate product. Note: The Illuminance sensor in this image was positioned farther from the display for visualization purposes.
The simulation result gives an extended map that contains illuminance information in every pixel. Evidently, the initial design delivers a poor performance in both total flux and uniformity (RMS Contrast). For this reason, optimization is required.
Step 2: Speos – Create parametric 3D texture to improve uniformity
- With the Speos model still open, edit/double-click the ‘Remove’ 3D Texture within the Simulation panel.
- Set the Mapping type to Rectangular and define starting values for the Distance between patterns along X and Y, and Global Scale and X, Y and Z Scale.
- Compute 3D Texture
The use of 3D Texture in Speos decreases both the computation time and file size that otherwise would require a bigger effort to manage.
In this step, hundreds of half-sphere patterns are applied to the back side of the light guide and are commanded to remove their volume from it. The manipulation of the 3D Texture parameters changes the size and density of the pattern and therefore the light output and uniformity of the light guide.
Step 3: optiSLang – Specify optimization inputs/outputs/criteria and perform sensitivity analysis
-
In optiSLang 2022 R2, open “Display Optim.opf” file (located in “.\oSL – BLU\”)
The “AMOP”-system shows the necessary solver chain to perform the lightguide analysis and is used to run the sensitivity analysis to gain a design understanding and to identify important input parameter.
Double click on the AMOP Module to see the defined sampling method, parameter ranges and optimization criteria.
The system is defined to keep the result files of each simulation. Due to the size these result files are not delivered with this example. To regenerate them you can rerun the study. - Optional: To re-run the sensitivity study right-click on AMOP and select “Start from here”.
- To review the results of the sensitivity analysis, right-click on AMOP and select 'show Postprocessing'. The file already contains the results for the metamodels.
Here, the mapping distance in X and Y, the pattern Global Scale, and the pattern Scale in Z are the inputs. The Total Flux, RMS Contrast (used to measure uniformity), and Number of Patterns are the outputs.
It is important to specify criteria for both the inputs and outputs since that will narrow the search to only user-known possible conditions, and desired objectives and constraints.
For this specific use-case, an Adaptive Metamodel of Optimal Prognosis (AMOP) is generated. The AMOP runs a specific number of solver-runs in several iterations and presents the results through response surfaces and matrixes. You can see the CoP matrix showing the total effects of the inputs (horizontal) vs. the outputs (vertical). The Response surface 3D plot represents the most relevant inputs impacting one of the outputs (RMS contrast).
Further, optiSLang uses the Coefficient of Prognosis (CoP) as a quality convergence metric that dictates how good the sensitivity is based on variance-based sensitivity indices.
These results from this sensitivity analysis will serve now as the applicable inputs for the optimization.
Step 4: optiSLang – Run optimization on the system to find the best/worst designs
- Go Back to the optiSLang Project (*.opf)
- Double-click the “Evolutionary Algorithm” system. Settings including the optimization method, maximum number of samples and the defined criteria are set up for this system.
- The system is defined to keep the result files of each simulation. Due to the size these result files are not delivered with this example. To regenerate them you can rerun the optimization.
- Optional : To re-run the multi-objective analysis right-click on “Evolutionary Algorithm”-system and set “Data flow“ to active. Then right-click on system again and select “Start from here”.
- Go back to optiSLang scenery, right-click on the “Evolutionary Algorithm” system and select “Show Postprocessing”.
Based on the number and type of parameters, optiSLang determines the most suitable optimization method. Here, the Evolutionary Algorithm is proposed. The Evolutionary Algorithm is a stochastic search method that mimics processes of natural biological evolution like adaptation, selection and variation. In this case, the maximum number of samples is set to 10,000, and optiSLang will perform the optimization on the MOP, then validate the best designs with the real solver.
Once the optimization either runs the maximum number of samples or it reaches a convergence point, the study along with the best tradeoff are presented with graphs. This means that optiSLang selects the sample with the best balance between the responses (light flux and uniformity).
The best design parameters (inputs) can be verified by applying them to the 3D Texture and run the Speos simulation.
Important model settings
Description of important objects and settings used in this model
Speos model settings
Remove 3D Texture
The ‘Remove’ 3D texture is defined by an “.OPT3DMapping” file, which provides the position, orientation, and size of each element which is patterned. The sensitivity analysis and optimization create different versions of this mapping file, in order to change the texture pattern.
It is also worth noting that each time a simulation with a 3D texture is computed, a file with the “.BIN” extension is created. You must let this file be written automatically, upon the job start, and not manually. Otherwise, the pattern will not change from one iteration to the next.
More info in the Speos User Guide: 3D Texture (ansys.com)
Irradiance sensor
In order to define the targets for optiSLang, we must create measurements inside the initial result, and save this as an XML template. This same template is then imported into the original sensor inside Speos
More info in the Speos User Guide: Creating an Irradiance Sensor (ansys.com)
Maximum number of Surface interactions
A lightguide relies on Total Internal Reflection to guide the light, resulting in many surface interactions. It is required to increase the number in the simulation settings, from the default value of 100.
Geometric distance tolerance
As the patterned elements are microscopic, the layers of the display are thin, and the gaps between layers are small, we must set a lower geometric distance tolerance, than the default value of 0.05mm
optiSLang settings
Solver settings
Double-click on the “SpeosCore” node to change the settings:
- number of cores used
Sensitivity settings
Double-click on the “AMOP” – system:
- to change the parameter ranges in the “Parameter” tab
- to change constraint limitation in the “Criteria” tab
- to change the maximum number of samples in the “Adaption” tab
- to view the results in the “result designs” tab.
multi-objective optimization
Double-click on the “Evolutionary Algorithm” – system:
- to change the constraint limitation in the “Criteria” tab
- to change the maximum number of samples in the “NOA” tab
- to view the results in the “result designs” tab.
single-objective optimization
Double-click on the “Evolutionary Algorithm” – system:
- to change the constraint limitations in the “Criteria” tab
- to change the maximum number of samples in the “Adaption” tab
- to view the results in the “result designs” tab.
Updating the model with your parameters
Instructions for updating the model based on your device parameters
Rectangular 3D Mapping Python script:
It is necessary to adjust the Python script in the “Rectangular 3D Mapping” node, to point to your local folder(s) for the Speos job file. Modify the “src_path” value as needed:
31 src_path = r'D:/Demos/ANSYS SPEOS/Displays/Backlight unit optimization/Speos/SPEOS isolated files/backlight_unit/Optimization.1.speos/Nichia_NSSW006.intensity'
32 dst_path = os.path.join(DESIGN_DIR, 'Nichia_NSSW006.intensity')
33 shutil.copy(src_path, dst_path)
34
35 src_path = r'D:/Demos/ANSYS SPEOS/Displays/Backlight unit optimization/Speos/SPEOS isolated files/backlight_unit/Optimization.1.speos/Nichia_NSSW006.spectrum'
36 dst_path = os.path.join(DESIGN_DIR, 'Nichia_NSSW006.spectrum')
37 shutil.copy(src_path, dst_path)
38
39 src_path = r'D:/Demos/ANSYS SPEOS/Displays/Backlight unit optimization/Speos/SPEOS isolated files/backlight_unit/Optimization.1.speos/Optimization.1.speos'
40 dst_path = os.path.join(DESIGN_DIR, 'Optimization.1.speos')
41 shutil.copy(src_path, dst_path)
42
43 src_path = r'D:/Demos/ANSYS SPEOS/Displays/Backlight unit optimization/Speos/SPEOS isolated files/backlight_unit/Optimization.1.speos/Reference.Irradiance.xml'
44 dst_path = os.path.join(DESIGN_DIR, 'Reference.Irradiance.xml')
45 shutil.copy(src_path, dst_path)
Additional resources
Additional documentation, examples, and training material
Ansys Learning Hub courses
- Speos Getting Started
- Speos Workflow and Geometry Management
- Speos 3D Texture
- Speos Photometric Analysis Advanced
- optiSLang Getting Started
Data
- Speos model (Mandatory) – 2022 R2 (Backlight_unit.scdocx)
- optiSLang project (Mandatory) – 2022 R2 (Display Optim.opf)
- optiSLang-Speos integration – 2022 R2 (optiSLang_Speos_22R2.1.exe)
- Overview of the project (Backlight unit optimization_with-optiSLang.pdf)