refraction#
- optika.materials.matrices.refraction(wavelength, direction_left, direction_right, polarized_s, n_left, n_right, interface=None)[source]#
Compute the refractive matrix, which represents the bending of light at an interface.
- Parameters:
wavelength (Quantity | AbstractScalar) – The wavelength of the incident light in vacuum
direction_left (float | AbstractScalar) – The component of the incident light’s propagation direction before the interface antiparallel to the surface normal.
direction_right (float | AbstractScalar) – The component of the incident light’s propagation direction after the interface antiparallel to the surface normal.
polarized_s (bool | AbstractScalar) – If
True, the incident light is \(s\)-polarized. IfFalse, the incident light is \(p\)-polarized.n_left (float | AbstractScalar) – The complex index of refraction on the left side of the interface.
n_right (float | AbstractScalar) – The complex index of refraction on the right side of the interface.
interface (None | AbstractInterfaceProfile) – The interface profile between the left side and the right side.
- Return type:
Examples
Compute the refractive matrix for \(s\)-polarized light normally incident on the interface between vacuum and silicon dioxide.
import astropy.units as u import named_arrays as na import optika # Define the wavelength of the incident light wavelength = 100 * u.AA # Initialize a representation of silicon dioxide sio2 = optika.chemicals.Chemical("SiO2") # Compute the refractive matrix optika.materials.matrices.refraction( wavelength=wavelength, direction_left=1, direction_right=1, polarized_s=True, n_left=1, n_right=sio2.n(wavelength), )
Cartesian2dMatrixArray( x=Cartesian2dVectorArray( x=ScalarArray(ndarray=np.complex128(0.9923203996848661+0.007568033439537367j), axes=()), y=ScalarArray(ndarray=np.complex128(0.007679600315133928-0.007568033439537367j), axes=()), ), y=Cartesian2dVectorArray( x=ScalarArray(ndarray=np.complex128(0.007679600315133928-0.007568033439537367j), axes=()), y=ScalarArray(ndarray=np.complex128(0.9923203996848661+0.007568033439537367j), axes=()), ), )Notes
The refractive matrix is given by Yeh [1988] Equation 5.1-12,
(1)#\[\begin{split}W_{kij} = \frac{1}{t_{kij}} \begin{pmatrix} 1 & r_{kij} \\ r_{kij} & 1 \\ \end{pmatrix},\end{split}\]where \(k=(s, p)\) is the polarization state, \(i=j-1\) is the index of the previous material, \(j\) is the index of the current material,
(2)#\[r_{kij} = \frac{q_{ki} - q_{kj}}{q_{ki} + q_{kj}}\]is the Fresnel reflection coefficient between materials \(i\) and \(j\),
(3)#\[t_{kij} = \frac{2 q_{ki}}{q_{ki} + q_{kj}}\]is the Fresnel transmission coefficient between materials \(i\) and \(j\),
\[q_{si} = n_i \cos \theta_i\]and
\[q_{pi} = \frac{\cos \theta_i}{n_i}\]are the \(z\) components of the wave’s momentum for \(s\) and \(p\) polarization, \(n_i\) is the index of refraction inside material \(i\), and \(\theta_i\) is the angle between the wave’s propagation direction and the vector normal to the interface inside material \(i\).
References to
optika.materials.matrices.refraction