Angular Spectrum Propagator#
- class lasy.propagators.AngularSpectrumPropagator(omega0, dim, n=1.0)[source]#
Class that represents a double FFT propagator using the angular spectrum method.
The propagated field is calculated in the following method:
\[E_\mathrm{propagated} (x,y,\omega) = \mathcal{F}_{x,y}\left[\mathcal{F}_{x,y}\left[ E_\mathrm{input}(x,y,\omega) \right] \times\exp(i\,n\,\Delta z\,\sqrt{k_z^2-k_x^2-k_y^2}) \right]\]where \(E_{i} (x,y,\omega)\) is the initial/propagated fields complex field envelope and \(\mathcal{F}_{x,y}\) is the 2D Fourier transform in the transverse (x,y) axes.
- Parameters:
- omega0float (in rad/s)
The center frequency of the laser field.
- dimstring
Dimensionality of the array. Options are:
'xyt': The laser pulse is represented on a 3D grid:Cartesian (x,y) transversely, and temporal (t) longitudinally.
'rt'The laser pulse is represented on a 2D grid:Cylindrical (r) transversely, and temporal (t) longitudinally.
- nint, float, 1d array or callable, optional
Refractive index of the medium in which to propagate the laser. Can be either a single value if dispersive effects are ignored, a 1d array describing the refractive index along the frequency/wavelength axis of the laser pulse, or a function of the wavelength (in meters). Default value is n=1. to describe propagation in vacuum.
- propagate(grid_in, dim=None, omega0=None, distance=None, grid_out=None)[source]#
Propagates the laser field in z direction by a given distance using the angular spectrum method.
- Parameters:
- distancescalar
Distance by which the laser is propagated.
- grid_inGrid
Grid object containing the laser to propagate.
- dimstring (optional)
Dimensionality of the array. Options are: -
'xyt': Laser pulse represented on a 3D Cartesian grid. -'rt': Laser pulse represented on a 2D cylindrical grid.- omega0float (optional)
The main frequency \(\omega_0\) (in rad.s^-1), which is defined by the laser wavelength \(\lambda_0\), as \(\omega_0 = 2\pi c/\lambda_0\).
- grid_outGrid object (optional)
Grid object on which the propagated laser pulse is defined. Can be different from laser grid before propagation.
- Returns:
- Grid object with laser data after propagation.
- update(dim, omega0, n)[source]#
Initialize or update the propagator if needed.
- Parameters:
- dimstring
Dimensionality of the array. Options are: -
'xyt': Laser pulse represented on a 3D Cartesian grid. -'rt': Laser pulse represented on a 2D cylindrical grid.- omega0float (in rad.s^-1)
The main frequency \(\omega_0\), which is defined by the laser wavelength \(\lambda_0\), as \(\omega_0 = 2\pi c/\lambda_0\).
- nscalar, 1d array or callable
Refractive index of the medium in which to propagate the laser. Can be either a single value if dispersive effects are ignored, a 1d array describing the refractive index along the frequency/wavelength axis of the laser pulse, or a function of the wavelength (in meters). Default value is n=1. to describe propagation in vacuum.