This article shows how to create and use polarizing components in a Speos model and how to analyze the polarization state on a sensor.
Polarization in Speos
In Speos each ray has its own polarization. Depending on the interactions with optical properties, the ray propagation will be impacted or not. The global behavior is given by whole rays reaching the sensors.
The properties impacting the polarization states are the following : optical polished, polar plate, plugin, unpolished, polarizer, coated surface, DOE. With other properties, such as brdf, the polarization state will be lost.
In Speos, the only source that includes polarization information is the ray file source (see Contents of Ray Files). To apply polarization to any other type of source, a polarizer must be placed in front of it.
To modify the polarization, we have different possibilities:
use a Polarizer surface
use a Coated surface
use a Material plugin
Creating a polarizer surface
The first possibility is to create a polarizer surface from the corresponding editor, available from the Windows menu or directly from Speos.
In this editor you can define the X and Y axis coordinates, add a description and most important set the Jones matrix coefficients. You can find help about Jones matrix coefficients in this Wikipedia page : Jones calculus.
In the Polarization surface editor, a linear horizontal polarizer along X direction is done like this:
And a right circular polarizer will be done like this:
Please note that instead of 0.5, you can also enter 1 in the cells and press the 'N' button to normalize the coefficient and axis.
The file (.polarizer) can be saved and then used in Speos.
Note: the polarizer model is perfect and there is no loss, which means all the flux is transmitted without loss.
Note: X axis and Y axis fields don’t need to be edited and changed if you use the *polarizer with a UV. UV rotation is driving polarizer’s rotation.
Using polarizer surface in Speos
The .polarizer file created in the previous step can be used directly in a Speos material, as Surface Optical Properties or Face Optical Properties. In this case the X axis vector of the polarizer is referring to the X axis of the global system coordinates of the project.
To better control the axis, it is recommended to create a UV mapping on the surface (UV mapping is available from Speos Premium license).
For example, on this square surface, a planar UV mapping will be created, with a projection along Y axis, and Top set as X axis.
The surface is selected in the UV mapping feature, and the UV map is set as below:
The preview of the UV on the surface is displayed in the 3D View:
The material needs to be adjusted to take into account the UV. For that, we need to set the Use texture field to true, Volume properties to None.
A surface layer is added, we can edit this layer (double click on it) to add the polarizer.
The polarizer axis is now referring to the UV mapping applied on the surface.
Creating a Coated surface
The Coated surface editor is available from the Windows start menu.
It is a double entry table with wavelength in column and incident angle in rows. For each wavelength and incident angle, you will have to set the percentage of reflection and transmission for both parallel and perpendicular polarization, the absorption is automatically calculated (A = 100 - R - T).
The incident angles 0° and 90° are mandatory and can't be deleted.
With the + and - button on the top bar, you can add or remove new incident angles or wavelengths.
When the cells are filled, you can preview the color and the behavior of the surface with these buttons: .
P and S polarization of 0° must have the value, because incident plane can't be defined at 0°. If not, you will get a warning when using the file.
Example:
And corresponding preview:
A coated file is in S/P basis, P (parallel) means the polarization is parallel to the incident plane which is the plane containing the ray and the normal of the surface and S (perpendicular) which means the polarization is perpendicular to the incident plane. As opposed to the polarizer, which is anisotropic and depends on X/Y basis.
A .coated file can be saved and used in Speos.
An article about the Coated Surface format is available : Speos Coating Surface Format – Ansys Optics.
Using Coated surface in Speos
A coated surface (.coated) can be used as Surface Optical Property or as Face Optical Property. No UV mapping is needed, because the file is isotropic and doesn't depend on defined axis.
Using predefined polarizer model from Speos library
Speos Optical Libraries also provide predefined polarizer models as *.json file format.
These polarizers can be used as input of Lumerical SubWavelength Model (LSWM).
LSWM is useful to model more complex polarizing components, such as polarizing beam splitter (PBS) or quarter wave plate (QWP).
These polarizer models can be found at this relative location :
.\OpticalLibraries\Optical_Property\surface_optical_plugins\Lumerical-Sub-Wavelength-Model\JSON_FILES
These files are defined into Speos in the following way:
The .sop file can be found in the library at this relative location: .\OpticalLibraries\Optical_Property\surface_optical_plugins\Lumerical-Sub-Wavelength-Model\
Measuring polarization state
In a project, the polarization state can be measured with an irradiance sensor. To activate that, the type must be radiometric and the Layer set to Polarization (available only from Speos Premium license) as below:
The irradiance result will have additional layers, called S0, S1, S2 and S3. These layers correspond to the Stokes parameters.
The Stokes parameters are usually presented as a matrix:
S0 represents the intensity. S1, S2 and S3 gives information about the polarization state, as shown in the table below:
In the Speos result, you won't see a value of 1, but a value corresponding to an irradiance value.
Example 1:
S0 has a value, S1, S2 and S3 are null, which means that the light is not polarized.
Example 2:
S0 has a value, S1 has a positive value, S2 and S3 are null, which means that the light is linearly polarized (horizontal direction).
Example 3:
S0 has a value, S1 has a negative value, S2 and S3 are null, which means that the light is linearly polarized (vertical direction).
Example 4:
S0 has a value, S1 and S2 are null, S4 has a positive value, which means that the light is circularly polarized (right).
Note: the values might not be null, but very low compared to S1 values.
Simulation with polarization and gathering algorithm
Simulations using any optical properties which modify the polarization and a radiance, human eye, immersive, observer or physical camera sensor can be done. In this case it is recommended to use an inverse simulation.
If you are using a direct simulation, you will get this warning:
If light comes directly from the polarized surface to the sensor, light will not be considered as polarized due to the gathering algorithm. The gathering algorithm is made to faster the simulation convergence, especially with specular interactions. At each interaction of a ray with a surface, it creates a shadow ray, targeting the sensor. If a direct is possible, the ray is taken in the result, else nothing happens.
In this case it is better to switch to an inverse simulation.
Additional resources
Additional documentation, examples and training material
Wikipedia
Speos user guide
Articles
Going further with Lumerical Sub Wavelength Model Plugin
- Lumerical Sub-wavelength Model: Introduction and Data Generation – Ansys Optics
- Lumerical Sub-wavelength Model: Usage in Speos – Ansys Optics