Laser profiles
Warning
This section is currently in development.
- class picmistandard.PICMI_GaussianLaser(*, wavelength: float, waist: float, duration: float, propagation_direction: Sequence[float], polarization_direction: Sequence[float], focal_position: Sequence[float], centroid_position: Sequence[float], a0: float | None = None, E0: float | None = None, phi0: float | None = None, zeta: float | None = None, beta: float | None = None, phi2: float | None = None, name: str | None = None, fill_in: bool = True, k0: float = 0.0, **extra_data: Any)[source]
Base class for all PICMI classes using Pydantic for validation and extensibility.
This class allows code-specific extensions (e.g., warpx_* kwargs) via Pydantic’s extra fields mechanism while maintaining type safety for standard attributes.
Implementation specific documentation
Specifies a Gaussian laser distribution.
More precisely, the electric field near the focal plane is given by:
\[E(\boldsymbol{x},t) = a_0\times E_0\, \exp\left( -\frac{r^2}{w_0^2} - \frac{(z-z_0-ct)^2}{c^2\tau^2} \right) \cos[ k_0( z - z_0 - ct ) - \phi_{cep} ]\]where \(k_0 = 2\pi/\lambda_0\) is the wavevector and where \(E_0 = m_e c^2 k_0 / q_e\) is the field amplitude for \(a_0=1\).
Note
The additional terms that arise far from the focal plane (Gouy phase, wavefront curvature, …) are not included in the above formula for simplicity, but are of course taken into account by the code, when initializing the laser pulse away from the focal plane.
- field wavelength: float [Required]
Laser wavelength [m], defined as \(\lambda_0\) in the above formula
- field waist: float [Required]
Waist of the Gaussian pulse at focus [m], defined as \(w_0\) in the above formula
- field duration: float [Required]
Duration of the Gaussian pulse [s], defined as \(\tau\) in the above formula
- field propagation_direction: Sequence[float] [Required]
Unit vector of length 3. Direction of propagation [1]
- field polarization_direction: Sequence[float] [Required]
Unit vector of length 3. Direction of polarization [1]
- field focal_position: Sequence[float] [Required]
Vector of length 3 of floats. Position of the laser focus [m]
- field centroid_position: Sequence[float] [Required]
Vector of length 3 of floats. Position of the laser centroid at time 0 [m]
- field a0: float | None = None
Normalized vector potential at focus. Specify either a0 or E0 (E0 takes precedence).
- field E0: float | None = None
Maximum amplitude of the laser field [V/m]. Specify either a0 or E0 (E0 takes precedence).
- field phi0: float | None = None
Carrier envelope phase (CEP) [rad]
- field zeta: float | None = None
Spatial chirp at focus (in the lab frame) [m.s]
- field beta: float | None = None
Angular dispersion at focus (in the lab frame) [rad.s]
- field phi2: float | None = None
Temporal chirp at focus (in the lab frame) [s^2]
- field name: str | None = None
Optional name of the laser
- field fill_in: bool = True
Flags whether to fill in the empty spaced opened up when the grid moves
- field k0: float = 0.0
- class picmistandard.PICMI_AnalyticLaser(*, field_expression: str, wavelength: float, propagation_direction: ~collections.abc.Sequence[float], polarization_direction: ~collections.abc.Sequence[float], amax: float | None = None, Emax: float | None = None, name: str | None = None, fill_in: bool = True, k0: float = 0.0, user_defined_kw: dict[str, ~typing.Any] = <factory>, **extra_data: ~typing.Any)[source]
Base class for all PICMI classes using Pydantic for validation and extensibility.
This class allows code-specific extensions (e.g., warpx_* kwargs) via Pydantic’s extra fields mechanism while maintaining type safety for standard attributes.
Implementation specific documentation
Specifies a laser with an analytically described distribution.
- field field_expression: str [Required]
Analytic expression describing the electric field of the laser [V/m]. Expression should be in terms of the position, ‘X’, ‘Y’, in the plane orthogonal to the propagation direction, and ‘t’ the time. The expression should describe the full field, including the oscillitory component. Parameters can be used in the expression with the values given as keyword arguments.
- field wavelength: float [Required]
Laser wavelength. This should be built into the expression, but some codes require a specified value for numerical purposes.
- field propagation_direction: Sequence[float] [Required]
Unit vector of length 3 of floats. Direction of propagation [1]
- field polarization_direction: Sequence[float] [Required]
Unit vector of length 3 of floats. Direction of polarization [1]
- field amax: float | None = None
Maximum normalized vector potential. Specify either amax or Emax (Emax takes precedence). This should be built into the expression, but some codes require a specified value for numerical purposes.
- field Emax: float | None = None
Maximum amplitude of the laser field [V/m]. Specify either amax or Emax (Emax takes precedence). This should be built into the expression, but some codes require a specified value for numerical purposes.
- field name: str | None = None
Optional name of the laser
- field fill_in: bool = True
Flags whether to fill in the empty spaced opened up when the grid moves
- field k0: float = 0.0
- field user_defined_kw: dict[str, Any] [Optional]