Propagator#

class lasy.propagators.Propagator[source]#

Base class for all propagators.

A propagator advances the laser pulse in the z direction by some distance.

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

Propagate field in the grid along axis z, for a certain distance.

Parameters:
grid_in: :class:`lasy.utils.Grid`

Grid lasy object that contains the input field.

dimstring

Dimensionality of the array. Options are:

  • 'xyt': The laser pulse is represented on a 3D Cartesian grid.

  • 'rt' : The laser pulse is 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\).

distancefloat (optional)

Distance (in meters) over which the field will be propagated.

grid_out: :class:`lasy.utils.Grid` (optional)

Grid lasy object where the output field will be written.

abstractmethod update(dim, omega0)[source]#

Update the propagator.

Typically called at the beginning of the propagate function, to update the propagator itself if required. If the update is costly, some machinery should be in place to do it only if required. Some propagators need to be updated if the distance to propagate changes. Others only need to be updated if the grid properties change, etc.

Parameters:
dimstring

Dimensionality of the array. Options are:

  • 'xyt': The laser pulse is represented on a 3D Cartesian grid.

  • 'rt' : The laser pulse is 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\).