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\).