Axiprop Propagators#

class lasy.propagators.AxipropPropagator[source]#

Axiprop’s non-paraxial propagator.

This class wraps around Axiprop’s PropagatorFFT2 and PropagatorResampling, for 3D cartesian and 2D cylindrical, respectively.

propagate(grid_in, dim, omega0, distance=None, grid_out=None, verbose=True, nr_boundary=0)[source]#

Propagate laser pulse in z direction by a given distance.

Currently, the propagation is assumed to take place in vacuum. This propagator is non-paraxial.

Parameters:
grid_inGrid

Grid object containing the laser to propagate.

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

distancescalar (optional)

Distance by which the laser is propagated.

grid_outGrid object (optional)

Grid object on which the propagated laser pulse is defined. Can be different from laser grid before propagation. Only supported for ‘rt’ geometry.

verboseboolean (optional, default False)

Whether to print intermediate steps.

nr_boundaryint (optional, default 0)

Number of grid points for absorbing boundary condition.

Returns:
Grid object with laser data after propagation.
update(dim, omega0, containers_in, grid_out=None, verbose=False)[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\).

containers_inAxiprop container(s)

An Axiprop container (dim=’xyt’), or list of containers (dim=’rt’, 1 element per mode), with the data of laser to propagate.

grid_outGrid object (optional)

Grid object on which the propagated laser pulse is defined. Can be different from laser grid before propagation. Only supported for rt geometry.

verboseboolean (optional)

Whether to print intermediate steps.

class lasy.propagators.AxipropFresnelPropagator[source]#

Axiprop’s paraxial Fresnel propagator.

This class wraps around Axiprop’s PropagatorFFT2Fresnel and PropagatorResamplingFresnel, for 3D cartesian and 2D cylindrical, respectively.

propagate(grid_in, dim, omega0, distance=None, grid_out=None, verbose=True, nr_boundary=0)[source]#

Propagate laser pulse in z direction by a given distance.

Currently, the propagation is assumed to take place in vacuum. This is a Fresnel, paraxial propagator.

Parameters:
distancescalar

Distance by which the laser is propagated.

grid_inGrid

Grid object containing the laser to propagate.

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

grid_outGrid object (optional)

Grid object on which the propagated laser pulse is defined. Can be different from laser grid before propagation.

verboseboolean (optional, default False)

Whether to print intermediate steps.

nr_boundaryint (optional, default 0)

Number of grid points for absorbing boundary condition.

Returns:
Grid object with laser data after propagation.
update(distance, dim, omega0, containers_in, grid_out, verbose=False)[source]#

Initialize or update the propagator if needed.

Parameters:
distancescalar

Distance over which to propagate the laser pulse.

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

containers_inAxiprop container(s)

An Axiprop container (dim=’xyt’), or list of containers (dim=’rt’, 1 element per mode), with the data of laser to propagate.

grid_outGrid object

Grid object on which the propagated laser pulse is defined. Can be different from laser grid before propagation.

verboseboolean (optional)

Whether to print intermediate steps.