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