fraunhofer_inverse_propagation

colibri.optics.functional.fraunhofer_inverse_propagation(field, pixel_size, wavelengths, distance, device=device(type='cpu'))[source]

The inverse Fraunhofer approximation (to reconstruct the field at the source from the field at the sensor) is given by the following equation:

\[U_0(x,y) \approx \frac{1}{j\lambda z} e^{j k z} e^{\frac{j k (x^2 + y^2)}{2z}} \mathcal{F}^{-1}\left\{ U(x,y) \right\}\]

where \(U_0(x,y)\) is the field at the source, \(U(x,y)\) is the field at the sensor, \(\mathcal{F}^{-1}\) is the inverse Fourier transform operator, \(k\) is the wavenumber, \(\lambda\) is the wavelength, and \(z\) is the distance of propagation.

Parameters:
  • field (torch.Tensor) – Field at the sensor.

  • pixel_size (float) – Pixel pixel_size in meters.

  • wavelengths (torch.Tensor) – Wavelengths in meters.

  • distance (float) – Distance in meters.

  • device (torch.device) – Device, for more see torch.device().

Returns:

Reconstructed field.

Return type:

torch.Tensor