incident_effective#

optika.rulings.incident_effective(wavelength, direction, index_refraction, normal, diffraction_order, spacing_rulings, normal_rulings)[source]#

The effective propagation direction of some rays incident on a diffraction grating.

Parameters:
Return type:

Cartesian3dVectorArray

Notes

Our goal is to find the effective propagation direction of a light ray incident on a diffraction grating. This effective, incident ray can be used in Snell’s law to find the direction of the diffracted rays. To start, consider the Dirichlet boundary conditions given in Equation (3) of the snells_law() notes.

\[A_1 \exp\left[i \mathbf{k}_1 \cdot (x \hat{\mathbf{x}} + y \hat{\mathbf{y}}) \right] = A_2 \exp\left[i \mathbf{k}_2 \cdot (x \hat{\mathbf{x}} + y \hat{\mathbf{y}}) \right]\]

To include the ruling pattern, we model it as a phase shift of the wave at the interface,

(1)#\[\phi(x, y) = i \boldsymbol{\kappa} \cdot (x \hat{\mathbf{x}} + y \hat{\mathbf{y}})\]

where

\[\boldsymbol{\kappa} = -\frac{2 \pi m}{d} \hat{\boldsymbol{\kappa}},\]

\(m\) is the diffraction order, \(d\) is the groove spacing, and \(\hat{\boldsymbol{\kappa}}\) is a unit vector normal to the planes of the rulings.

With the inclusion of Equation (1), Equation (3) becomes:

(2)#\[ A_1 \exp\left[i (\mathbf{k}_1 + \boldsymbol{\kappa}) \cdot (x \hat{\mathbf{x}} + y \hat{\mathbf{y}}) \right] = A_2 \exp\left[i \mathbf{k}_2 \cdot (x \hat{\mathbf{x}} + y \hat{\mathbf{y}}) \right].\]

By following a similar procedure to the one described in the notes of snells_law(), we find that everything is exactly the same if we replace every instance of \(\mathbf{k}_1\) with an effective incident wavevector:

\[\boxed{\mathbf{k}_\text{e} = \hat{\mathbf{k}}_1 + \boldsymbol{\kappa} / k_1}.\]