A heads-up display (HUD), which combines a reflected image and an ambient view, should be a display with sufficient reflection and high transmission. For a HUD that needs to reflect polarized lights, here we demonstrate periodic plasmonic nanostructures that could provide significant reflection for certain polarization. The presented methodology could be applied to a range of similar devices involving plasmonic materials.
Overview
Understand the simulation workflow and key results
A head-up display (HUD) is a display that combines the background view and several essential information from other devices. It should be a transparent display and be able to reflect light from another display.
Here, we consider a combiner type HUD and present a film composed of metallic rectangular nanostructures. The asymmetric structure (i.e. width and length) leads to a polarization selectivity feature.
Practically, the film thickness is around hundreds of microns while the substrate thickness is near a few millimeters. Thus, we will first focus on solving only the volume near the plasmonic particles in an FDTD simulation. It should be mentioned that we will use angle in the film (θ film ) throughout the discussion related to the FDTD simulations. At the last step of this workflow, we convert the reflection properties for the SPEOS data file, i.e., for both the reflectance at the air interfaces (air-film) and the angle change (θ air & θ film ) from Snell’s law by the script calculations.
Step 1: Angled incidence
We apply a planewave simulation using BFAST for broadband results at θ film =20 (degree).
Step 2: Optimization
To achieve a low loss and uniform color HUD, we use the built-in algorithm (i.e. particle swarm optimization , PSO for short) to optimize the dimensions of the nanostructure at θ film =20 (degree). The dimensions of the nanostructure include width, length, height as the above figure shows.
Step 3: Full sweep
Here we run a sweep on the optimized nanostructure to obtain the reflection in terms of the polarization, injection angle, and wavelength.
Step 4: Export data to SPEOS
First, we calculate reflectance which includes reflectance at the air-film interface. The angle in film (θ film ) is transformed to angle in air (θ air ). Finally, we export results with a SPEOS file format. This provides interoperability with macro optics tools.
Run and results
Instructions for running the model and discussion of key results
Step 1: Angled incidence
- Open and run the simulation file SPEOS-Lumerical_nanowire.fsp .
- Run the script file plot_s_p.lsf . This would run two simulations for s- and p-polarizations, and plots the reflection, transmission, and loss of the film for each polarization.
As expected, the results of S polarization is different from those of P polarization. Additionally, there is one peak near 550nm for loss (LS). Besides, the reflectance (RS) is relatively lower near 540 nm than 465nm and 630nm. Due to the less green (high loss & low reflectance), the HUD would be magenta-shifted and results in a non uniformly colored display.
Step 2: Optimization
- Open the simulation file SPEOS-Lumerical_nanowire.fsp .
- Run the optimization. (Optional: The optimization is prerun and the data can be found in the Optimization object.)
- Right-click the optimization object and choose: “Apply best solution”. This step would update the parameters which meet the best figure of merit.
- Open and run the script file plot_s_p.lsf . It will run two simulations which include S & P polarization.
The optimization targets here are to obtain low loss and uniform reflectance over specified wavelength bands, i.e. a ±20nm band near R: 630 nm, G: 532nm, B: 465nm, respectively, based on input angle θ film = 20 degrees. To achieve these goals, we optimize the dimension of the microstructure include width, length, height.
Running the plot_s_p.lsf produces the following plot. The optimized result shows the detrimental resonance peak has been removed from the wavelength range of our interest, making it closer to the targets we set through the figure of merit.
Step 3: Full sweep (incident angle and polarization)
- Open the simulation file SPEOS-Lumerical_nanowire.fsp .
- Run the sweep named “angle_using_optimized_dimension”. (Optional. The sweep is prerun.)
- Visualize RT by right-clicking on the angle sweep object. (In the visualizer GUI, also need to plot lambda as the x-axis while theta as the y-axis)
In this step, we’d like to collect the reflectance of all possible angles in the film. This reflectance could be used to obtain the final reflectance in air and then be exported to SPEOS. Since the refractive index of the film is 1.5, the largest refracted angle in the film is close to 40 degrees. (by Snell’s law) Thus, the parameter sweep object will sweep both angle (θ film , 0 to 40 degrees in 21 steps) and polarization angle (0 and 90 for P and S).
You may notice that there are some small negative reflections and those should be negligible. Readers could refer to “FDTD steep angle PML” session of “ Important model settings ” for more details or if these reflections become non-negligible. Here we simply set these small negative values to 0 when exporting the results for SPEOS.
Step 4: Export data to SPEOS
Note: The sweep data from Step 3 is a prerequisite to step 4.
- Open the simulation file SPEOS-Lumerical_nanowire.fsp .
- Open and run SPEOS-Lumerical-nanowire_write_coating_file.lsf
From the result of step 3, we could now calculate the overall reflectance in air. This is done with the script file. The script would also export a file named nanowire_coating.coated and generates several plots. The first two figures (RP&RS) illustrate the final reflectance in air. You may notice that there are some suspicious discontinuity at a large angle (e.g. 74 degrees) in the RP plot. For more discussion, please refer to the Appendix .
The final plot is the performance of this HUD at an angle of 30 degrees (angle in air). This plot is quite similar to what we get in step 2. The reader could refer to the Appendix for more discussion.
The data format of the .coating file is as follows:
Important model settings
Description of important objects and settings used in this model
FDTD steep angle PML
Compared with Standard PML , Steep Angle PML can generally have a better performance at large incident angles. If light is not totally absorbed by PML, it would cause some unphysical reflections off the PML surface. For example, if light is reflected back from PML to a monitor, it would get an opposite traveling reflection, i.e. negative reflectance, as the following figure shows:
In this example, we increase the number of the PML layers to 20 to enhance the absorption. More layers might be required for larger angles and if unphysical reflection is observed.
FDTD BFAST alpha
In the advanced options of the FDTD region, we have set “bfast alpha” to 1.45 because the lowest refractive index in the simulation region is about 1.46. This is very important to avoid long simulation times at steeper angles when using BFAST .
Figure of merit in optimization
In this example, the figure of merit is implemented in the optimization object using the custom figure of merit script . The design targets here include:
- Reflection for S polarization of 30% in 20nm wavelength bands centered at specified R, G, B wavelength (R: 630 nm, G: 532nm, B: 465nm)
- Loss for S polarization of 0 over the visible spectrum
- Transmission for P polarization of 100% over the visible spectrum
We define a single figure of merit which obtains multiple criteria:
$$ FOM = \frac{\int_{\lambda_1}^{\lambda_2}[(T_p-1)^2+{L_s}^2+h(\lambda)(R_s-0.3)^2]d\lambda}{\lambda_2-\lambda_1} $$
where h(λ) is a weight function such that only the reflectance inside the R, G, B band is counted. From this definition, we could find that the figure of merit would meet its minimum at Tp=1, Ls=0, Rs=0.3 in R, G, B bands. Additionally, the script also allows us to combine the results of the 2 polarization simulations into a single figure of merit for optimization.
Tip for saving file size
In this example, we apply lots of sweep and optimization. This increases the overall file size. To improve this, the R and T monitors have been set to record only power and not the EM fields.
Updating the model
Instructions for updating the model based on your device parameters
Customizing structures
Although rectangular nanostructures are presented here, the demonstrated workflow also works for other designs. Before building new structures, it is recommended to check the link between the parameters in the "model" setup tab and the associated structures first. Note that the “nanowire” & “nanowire2” refer to the two rectangular structures in the unit cell.
Azimuthal angle response
In this example, we only demonstrated the polar angle θ. The azimuthal angle is set zero. Consequently, the E field is either x-symmetric or y-symmetric. To save simulation time, here we take advantage of the line of symmetry and only simulate half of the region. If a azimuthal non-zero angle is a concern, users should re-consider the line of symmetry, learn more about the symmetric boundary conditions here. In this case, it is also recommended to properly modify the related boundary condition commands of the "model" setup script. (Basically, line 79 to 93 in the script.)
Taking the model further
Information and tips for users that want to further customize the model
External optimization
In step 3 of the workflow, we use a built-in particle swarm optimization. In the event of adding constraints or utilizing different algorithms, users may want to implement external optimization algorithms via Matlab and Python API. We have some related examples that may be worth of reference .
Convergence
BFAST and Bloch
Bloch boundary is generally used for angled injection of planewave. However, the incident angle is wavelength-dependent with Bloch boundary condition, hence it gives a correct result only for the center frequency of the broadband signal. To get a broadband result with Bloch boundary condition, we should apply a wavelength sweep. This may result in a significant number of simulations due to the sweep and therefore affects the simulation overall throughput.
Alternatively, we can use BFAST , as was done in this example, to extract the full spectrum for an incident angle that does not change with wavelength. However, there are some factors that may affect the BFAST stability, such as material dispersion, as such it is worth testing whether the result of BFAST is close enough to the result of Bloch.
Here are the steps to test it:
- Open SPEOS-Lumerical_nanowire.fsp .
- Set plot_result=0 in analysis of ::model.
- Open and run Bloch_BFAST_comparison.lsf .
The script would first apply a for loop to sweep wavelength utilizing Bloch and then simulate BFAST. Finally, it would generate two plots. From the result, the difference between Bloch sweep and BFAST is very small.
Mesh size
Simulations that involve metal can be sensitive to the mesh size. Here we can utilize a mesh size sweep to check this behavior. A mesh size sweep with s-polarization and injection angle θ film =20 degree is prerun and stored. User could modify these numbers in the script file “dx_covegence.lsf” and rerun it.
We can also see the results with the script file “dx_covegence.lsf”. It is obvious that the results are trying to converge with mesh size. In this example, we did the optimizations with dx=5nm for a balance between overall simulation throughput and accuracy. Increased accuracy could be achieved at 2nm (or even 1nm) at the cost of much longer simulation times.
Additional resources
Additional documentation, examples, and training material
See also
Related Ansys Innovation Courses
Appendix
Incoherent sum
In the script of step 4, we calculate the overall reflectance in air. The final reflection will be the incoherent sum of the small reflection from the air-film interface and the reflection coming from the plasmonic particles that transmit back through the air-film interface. That is to say:
$$ R_{final} = R_{af}+R_{fg} ‧ {T_{af}}^2 $$
where R af is the reflectance at air-film interface (specular reflections), T af is the transmittance at air-film interface, R fg is the reflectance of the plasmonic particles.
Based on this definition, we can look back at the reflectance discontinuity at a large angle in step 4. From the result of step 3, the reflectance of the nanostructure (R fg ) is quite small at large angles. Thus, R af will dominate R final at large angles. To check this, we plot the Fresnel reflectance with different angles.
We could find that the Fresnel reflection R af dramatically increases from 67 to 74 degrees. Additionally, the 0.1 reflectance at 74 degree is almost the same as the result we get in step 4.
Utilizing this plot, we also find that the Fresnel coefficient R af is around 0.03 at 30 degree (angle in air). This implies that T af is close to one. By Snell's law, the corresponded angle in film is around 20 degree. Thus, we could look back on the result in step 2. The nanostructure reflectance (R fg ) of this angle is around 0.2~0.3, which is much larger than the Fresnel coefficient R af 0.03. As a result of this, the reflectance of nanostructure (R fg ) dominates R final . Consequently, the overall reflectance (step 4) is almost the same as the reflectance of the nanostructure (step 2).