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.