Collins Single FFT Propagator#

class lasy.propagators.CollinsSFFTPropagator(dim, omega0)[source]#

Class that represents a single FFT propagator using the Collins method.

The propagated field is calculated using the following method:

\[E_\mathrm{propagated} (x,y,\omega) = \frac{1}{i\lambda B} e^{ik(z-z_0)}\int_{-\infty}^{\infty}\int_{-\infty}^{\infty} E_{i} (x,y,\omega) e^{ikS}dx_0dy_0,\]

where \(E_{i} (x,y,\omega)\) is the complex field envelope of the input field and \(S\) is the propagator term

\[S = \bigg\{\frac{1}{2B}\Big[A(x_0^2+y_0^2)+D(x^2+y^2)-2(xx_0+yy_0)\Big]\bigg\},\]

defined in terms of the elements of the 'ABCD' optical ray matrix.

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.

abcd2d array

The 2D ray matrix of the optical system through which the beam propagates. This is defined in the 'ABCD' class as:

\[\begin{split}O = \begin{pmatrix} A & B \\ C & D \end{pmatrix}.\end{split}\]
add_output_grid(dim, grid_in)[source]#

Calculate the output grid automatically.

Resolution and size are determined based on the focusing geometry calculated from the ABCD optical ray matrix.

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.

grid_inGrid

Grid object at the input plane.

Returns:
grid_outGrid

Grid object for the output plane.

propagate(grid_in, abcd, dim=None, omega0=None, grid_out=None)[source]#

Calculate the output field from the input field and the optical ray matrix of the system.

Parameters:
grid_inGrid

Grid object containing the laser to propagate.

abcd2d array

The 2D ray matrix of the optical system through which the beam propagates. By default, this is initialised to be the unitary matrix:

\[\begin{split}O = \begin{pmatrix} A & B \\ C & D \end{pmatrix}= \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}.\end{split}\]
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)[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\).