Particle distributions

Warning

This section is currently in development.

pydantic model picmistandard.PICMI_GaussianBunchDistribution[source]

Describes a Gaussian distribution of particles

Parameters

parameter centroid_position: list[float] [Optional]

Position of the bunch centroid at t=0 [m]

parameter centroid_velocity: list[float] [Optional]

Velocity (gamma*V) of the bunch centroid at t=0 [m/s]

parameter n_physical_particles: float [Required]

Number of physical particles in the bunch

parameter rms_bunch_size: list[float] [Required]

RMS bunch size at t=0 [m]

parameter rms_velocity: list[float] [Optional]

RMS velocity spread at t=0 [m/s]

parameter velocity_divergence: list[float] [Optional]

Expansion rate of the bunch at t=0 [m/s/m]

pydantic model picmistandard.PICMI_UniformDistribution[source]

Describes a uniform density distribution of particles

Parameters

parameter density: float [Required]

Physical number density [m^-3]

parameter directed_velocity: list[float] [Optional]

Directed, average, proper velocity [m/s]

parameter fill_in: bool | None = None

Flags whether to fill in the empty spaced opened up when the grid moves

parameter lower_bound: list[float | None] [Optional]

Lower bound of the distribution [m]

parameter rms_velocity: list[float] [Optional]

Thermal velocity spread [m/s]

parameter upper_bound: list[float | None] [Optional]

Upper bound of the distribution [m]

pydantic model picmistandard.PICMI_FoilDistribution[source]

Describes a foil with optional exponential pre- and post-plasma ramps along the propagation direction.

Parameters

parameter density: float [Required]

Physical number density [m^-3]

parameter directed_velocity: list[float] [Optional]

Directed, average, proper velocity [m/s]

parameter exponential_post_plasma_cutoff: float | None = None

Cutoff length for exponential decay of post-foil density [m]

parameter exponential_post_plasma_length: float | None = None

Length scale of exponential decay of post-foil plasma density [m]

parameter exponential_pre_plasma_cutoff: float | None = None

Cutoff length for exponential decay of pre-foil density [m]

parameter exponential_pre_plasma_length: float | None = None

Length scale of exponential decay of pre-foil plasma density [m]

parameter fill_in: bool | None = None

Flags whether to fill in the empty spaced opened up when the grid moves

parameter front: float [Required]

Position of front surface of foil [m]

parameter lower_bound: list[float | None] [Optional]

Lower bound of the distribution [m]

parameter rms_velocity: list[float] [Optional]

Thermal velocity spread [m/s]

parameter thickness: float [Required]

Thickness of the foil [m]

parameter upper_bound: list[float | None] [Optional]

Upper bound of the distribution [m]

picmistandard.PICMI_UniformFluxDistribution

alias of PICMI_AnalyticFluxDistribution

pydantic model picmistandard.PICMI_AnalyticDistribution[source]

Describes a plasma with density following a provided analytic expression

Parameters can be used in the expressions, with their values given as keyword arguments. For example, this creates a distribution where the density is n0 below rmax and zero elsewhere:

dist = AnalyticDistribution(density_expression='((x**2+y**2)<rmax**2)*n0',
                            rmax = 1.,
                            n0 = 1.e20,
                            ...)

Parameters

parameter density_expression: Expression [Required]

Analytic expression describing physical number density [m^-3]. Expression should be in terms of the position, written as ‘x’, ‘y’, and ‘z’. Parameters can be used in the expression with the values given as keyword arguments.

parameter directed_velocity: list[float] [Optional]

Directed, average, proper velocity [m/s]

parameter fill_in: bool | None = None

Flags whether to fill in the empty spaced opened up when the grid moves

parameter lower_bound: list[float | None] [Optional]

Lower bound of the distribution [m]

parameter momentum_expressions: list[Expression | None] [Optional]

Analytic expressions describing the gamma*velocity for each axis [m/s]. Expressions should be in terms of the position, written as ‘x’, ‘y’, and ‘z’. For any axis not supplied (set to None), directed_velocity will be used.

parameter momentum_spread_expressions: list[Expression | None] [Optional]

Analytic expressions describing the gamma*velocity Gaussian thermal spread sigma for each axis [m/s]. For any axis not supplied (set to None), zero will be used.

parameter rms_velocity: list[float] [Optional]

Thermal velocity spread [m/s]

parameter upper_bound: list[float | None] [Optional]

Upper bound of the distribution [m]

parameter user_defined_kw: dict [Optional]

Constants referenced in the analytic expressions, collected from otherwise-unrecognized keyword arguments.

pydantic model picmistandard.PICMI_AnalyticFluxDistribution[source]

Describes a flux of particles emitted from a plane

Parameters can be used in the flux expression, with their values given as keyword arguments.

Parameters

parameter directed_velocity: list[float] [Optional]

Directed, average, proper velocity [m/s]

parameter flux: Expression [Required]

Analytic expression describing flux of particles [m^-2.s^-1]. Expression should be in terms of the position and time, written as ‘x’, ‘y’, ‘z’, and ‘t’.

parameter flux_direction: Literal[-1, 1] [Required]

Direction of the flux relative to the plane: -1 or +1

parameter flux_normal_axis: str [Required]

x, y, or z for 3D, x or z for 2D, or r, t, or z in RZ geometry

parameter flux_tmax: float | None = None

Time at which the flux injection will be turned off.

parameter flux_tmin: float | None = None

Time at which the flux injection will be turned on.

parameter gaussian_flux_momentum_distribution: bool | None = None

If True, the momentum distribution is v*Gaussian, in the direction normal to the plane. Otherwise, the momentum distribution is simply Gaussian.

parameter lower_bound: list[float | None] [Optional]

Lower bound of the distribution [m]

parameter rms_velocity: list[float] [Optional]

Thermal velocity spread [m/s]

parameter surface_flux_position: float [Required]

Location of the injection plane [m] along the direction specified by flux_normal_axis

parameter upper_bound: list[float | None] [Optional]

Upper bound of the distribution [m]

parameter user_defined_kw: dict [Optional]

Constants referenced in the flux expression, collected from otherwise-unrecognized keyword arguments.

pydantic model picmistandard.PICMI_ParticleListDistribution[source]

Load particles at the specified positions and velocities

The positions and velocities can be given as lists, or as a single value that is used for all particles. All lists must have the same length.

Parameters

parameter ux: list[float] [Optional]

List of ux of the particles (ux = gamma*vx) [m/s]

parameter uy: list[float] [Optional]

List of uy of the particles (uy = gamma*vy) [m/s]

parameter uz: list[float] [Optional]

List of uz of the particles (uz = gamma*vz) [m/s]

parameter weight: float | list[float] = 0.0

Particle weight or list of weights, number of real particles per simulation particle

parameter x: list[float] [Optional]

List of x positions of the particles [m]

parameter y: list[float] [Optional]

List of y positions of the particles [m]

parameter z: list[float] [Optional]

List of z positions of the particles [m]

pydantic model picmistandard.PICMI_FromFileDistribution[source]

Load particles from an openPMD file.

The openPMD file must contain the attributes position, momentum, weighting.

Parameters

parameter file_path: str [Required]

Path to the openPMD file

pydantic model picmistandard.PICMI_ParticleDistributionPlanarInjector[source]

Describes the injection of particles from a plane

Parameters

parameter method: Literal['InPlace', 'Plane'] = 'InPlace'

Method of injection

parameter plane_normal: list[float] [Required]

Vector normal to the plane of injection [1]

parameter plane_velocity: list[float] [Optional]

Velocity of the plane of injection [m/s]

parameter position: list[float] [Required]

Position of the particle centroid [m]