Species objects

Warning

This section is currently in development.

class picmistandard.PICMI_Species(**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

Sets up the species to be simulated. The species charge and mass can be specified by setting the particle type or by setting them directly. If the particle type is specified, the charge or mass can be set to override the value from the type.

The particle advance method options:

  • ‘Boris’: Standard “leap-frog” Boris advance

  • ‘Vay’:

  • ‘Higuera-Cary’:

  • ‘Li’:

  • ‘free-streaming’: Advance with no fields

  • ‘LLRK4’: Landau-Lifschitz radiation reaction formula with RK-4)

field methods_list: list[str] = ['Boris', 'Vay', 'Higuera-Cary', 'Li', 'free-streaming', 'LLRK4']
field particle_type: str | None = None

String, optional. A string specifying an elementary particle, atom, or other, as defined in the openPMD 2 species type extension, openPMD-standard/EXT_SpeciesType.md

field name: str | None = None

String, optional. Name of the species

field method: str | None = None

String, optional. The particle advance method to use. Code-specific method can be specified using ‘other:<method>’. The default is code dependent. Must be one of ‘Boris’, ‘Vay’, ‘Higuera-Cary’, ‘Li’, ‘free-streaming’, ‘LLRK4’, or start with ‘other:’

field charge_state: float | None = None

Float, optional. Charge state of the species (applies only to atoms) [1]

field charge: float | None = None

Float, optional. Particle charge, required when type is not specified, otherwise determined from type [C]

field mass: float | None = None

Float, optional. Particle mass, required when type is not specified, otherwise determined from type [kg]

field initial_distribution: PICMI_GaussianBunchDistribution | PICMI_UniformDistribution | PICMI_FoilDistribution | PICMI_AnalyticFluxDistribution | PICMI_AnalyticDistribution | PICMI_ParticleListDistribution | PICMI_FromFileDistribution | None = None

Distribution instance. The initial distribution loaded at t=0. Must be one of the standard distributions implemented.

field density_scale: float | None = None

Float, optional. A scale factor on the density given by the initial_distribution

field particle_shape: Literal['NGP', 'linear', 'quadratic', 'cubic'] | None = None

String, optional. Particle shape used for deposition and gather. If not specified, the value from the Simulation object will be used. Other values maybe specified that are code dependent.

field interactions: list[PICMI_FieldIonization] [Optional]

List of interactions for this species

class picmistandard.PICMI_MultiSpecies(**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

INCOMPLETE: proportions argument is not implemented. Multiple species that are initialized with the same distribution. Each parameter can be list, giving a value for each species, or a single value which is given to all species. The species charge and mass can be specified by setting the particle type or by setting them directly. If the particle type is specified, the charge or mass can be set to override the value from the type.

field Species_class: type | None = None
field particle_types: str | Sequence[str] | None = None

String or list of strings, optional. A string specifying an elementary particle, atom, or other, as defined in the openPMD 2 species type extension, openPMD-standard/EXT_SpeciesType.md

field names: str | Sequence[str] | None = None

String or list of strings, optional. Names of the species

field charge_states: float | Sequence[float] | None = None

Float or list of floats, optional. Charge states of the species (applies only to atoms)

field charges: float | Sequence[float] | None = None

Float or list of floats, optional. Particle charges, required when type is not specified, otherwise determined from type [C]

field masses: float | Sequence[float] | None = None

Float or list of floats, optional. Particle masses, required when type is not specified, otherwise determined from type [kg]

field proportions: float | Sequence[float] | None = None

Float or list of floats, optional. Proportions of the initial distribution made up by each species

field initial_distribution: PICMI_GaussianBunchDistribution | PICMI_UniformDistribution | PICMI_FoilDistribution | PICMI_AnalyticFluxDistribution | PICMI_AnalyticDistribution | PICMI_ParticleListDistribution | PICMI_FromFileDistribution | None = None

Distribution instance. Initial particle distribution, applied to all species

field particle_shape: Literal['NGP', 'linear', 'quadratic', 'cubic'] | None = None

String, optional. Particle shape used for deposition and gather. If not specified, the value from the Simulation object will be used. Other values maybe specified that are code dependent.

field nspecies: int | None = None

Number of species (computed from input parameters)

field species_instances_list: list[Any] [Optional]

List of species instances

field species_instances_dict: dict[str, Any] [Optional]

Dictionary of species instances keyed by name

check_nspecies(var)[source]
get_input_item(var, i)[source]