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