Polarizers
Polarizers in the context of this package are optical elements that select or modify the R³ polarization vector of a PolarizedRay
, e.g. filters or λ/2 waveplates. This is mainly done by two approaches:
- 3D polarization ray-tracing calculus
- 3D modified Jones matrix calculus
For more information on the first method refer to the section: Polarized rays. For the second approach, elements fall under the category of the BeamletOptics.AbstractJonesPolarizer
.
BeamletOptics.AbstractJonesPolarizer
— TypeAbstractJonesPolarizer <: AbstractObject
Represents infinitesimally thin components that change the polarization state of incoming PolarizedRay
s via global Jones matrix calculus. Rather than using the generic Yun ray tracing scheme as referred to in the PolarizedRay
docs, this element interacts with the global E-field vector E0
by using a GlobalJonesBasis
and projecting the entries into the transverse plane defined by the incoming ray direction and orthogonal E-field vector. This approach is partially inspired by the publication:
Jan Korger et al., "The polarization properties of a tilted polarizer," Opt. Express 21, 27032-27042 (2013)
Implementation reqs.
Subtypes of AbstractJonesPolarizer
should implement all supertype requirements.
Interaction logic
The GlobalJonesBasis
tracks the rotation in 3D-space via the orientation
of the attached AbstractShape
. The polarization matrix P
is calculated by projecting the previous matrix into the incoming orthogonal plane of polarization. Refer to the _calculate_global_E0
implementation for more information.
Jones matrix element representation
Fundamentally, the approach used here to simulate the effect of polarizers is referred to as Jones calculus and gives a "0th order" approximation of the physical effect. Out of plane tilts with respect to the optical axis of an incoming ray are currently only considered via a projection into the transverse plane of the incoming ray [13].
In a nutshell, elements are characterized by a 2x2 matrix that determines how the E-field components in the transverse plane to the optical axis are passed through in a global coordinate system where a ray of polarized light propagates along the z-axis. For instance, the entries for a linear filter that blocks in the y-direction are
\[J = \begin{pmatrix} 1 & 0\\ 0 & 0 \end{pmatrix} \,.\]
While this allows to simply model a specific set of polarizing elements, its important to note that more complex phenomena need more extensive implementations. For 3D-calculations, the $J$-matrix representation is embedded into
\[P = \begin{bmatrix} J & \begin{matrix}0 \\ 0\end{matrix} \\ \begin{matrix}0 & 0\end{matrix} & 1 \end{bmatrix}\]
in order to calculate $\vec{E}_1 = P \cdot \vec{E}_0$ for normal incidence. Additional details are provided in the docs above.
Polarisation filter
A polarisation filter or linear polarizer is the simplest practical polarizer and is commonly used to select a desired polarization state. This package provides the PolarizationFilter
as an idealized implementation for a zero-thickness filter.
BeamletOptics.PolarizationFilter
— MethodPolarizationFilter(edge_length; cutoff_strength)
Spawns a thin, rectangular PolarizationFilter
. The edge_length
has to be specified in [m]. The filter is aligned with the global y-axis and transmits along the x-axis, while blocking polarization components along the global z-axis.