Particle layouts

Warning

This section is currently in development.

class picmistandard.PICMI_GriddedLayout(*, n_macroparticle_per_cell: Sequence[int], grid: PICMI_Cartesian1DGrid | PICMI_Cartesian2DGrid | PICMI_Cartesian3DGrid | PICMI_CylindricalGrid | None = None, **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 gridded layout of particles

field n_macroparticle_per_cell: Sequence[int] [Required]

Vector of integers. Number of particles per cell along each axis

field grid: PICMI_Cartesian1DGrid | PICMI_Cartesian2DGrid | PICMI_Cartesian3DGrid | PICMI_CylindricalGrid | None = None

Grid instance, optional. Grid object specifying the grid to follow. If not specified, the underlying grid of the code is used.

class picmistandard.PICMI_PseudoRandomLayout(*, n_macroparticles: int | None = None, n_macroparticles_per_cell: int | None = None, seed: int | None = None, grid: PICMI_Cartesian1DGrid | PICMI_Cartesian2DGrid | PICMI_Cartesian3DGrid | PICMI_CylindricalGrid | None = None, **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 pseudo-random layout of the particles

field n_macroparticles: int | None = None

Integer, optional. Total number of macroparticles to load. Either this argument or n_macroparticles_per_cell should be supplied (not both).

field n_macroparticles_per_cell: int | None = None

Integer, optional. Number of macroparticles to load per cell. Either this argument or n_macroparticles should be supplied (not both).

field seed: int | None = None

Integer, optional. Pseudo-random number generator seed

field grid: PICMI_Cartesian1DGrid | PICMI_Cartesian2DGrid | PICMI_Cartesian3DGrid | PICMI_CylindricalGrid | None = None

Grid instance, optional. Grid object specifying the grid to follow for n_macroparticles_per_cell. If not specified, the underlying grid of the code is used.

class picmistandard.PICMI_ParticleDistributionPlanarInjector(*, position: ~collections.abc.Sequence[float], plane_normal: ~collections.abc.Sequence[float], plane_velocity: ~collections.abc.Sequence[float] = <factory>, method: ~typing.Literal['InPlace', 'Plane'] = 'InPlace', **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

Describes the injection of particles from a plane

field position: Sequence[float] [Required]

Vector of length 3 of floats. Position of the particle centroid [m]

field plane_normal: Sequence[float] [Required]

Vector of length 3 of floats. Vector normal to the plane of injection [1]

field plane_velocity: Sequence[float] [Optional]

Vector of length 3 of floats, default=[0.,0.,0.]. Velocity of the plane of injection [m/s]

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

String, default=’InPlace’. Method: ‘InPlace’ or ‘Plane’