Important PIConGPU Classes

This is very, very small selection of classes of interest to get you started.


class picongpu::MySimulation

Global simulation controller class.

Initialises simulation data and defines the simulation steps for each iteration.

Template Parameters
  • DIM: the dimension (2-3) for the simulation

Inherits from pmacc::SimulationHelper< simDim >

Public Functions



virtual void pluginRegisterHelp(po::options_description &desc)

Register command line parameters for this plugin.

Parameters are parsed and set prior to plugin load.

  • desc: boost::program_options description

std::string pluginGetName() const

Return the name of this plugin for status messages.

plugin name

virtual void pluginLoad()
virtual void pluginUnload()
void notify(uint32_t currentStep)

Notification callback.

For example Plugins can set their requested notification frequency at the PluginConnector

  • currentStep: current simulation iteration step

virtual void init()

Initialize simulation.

Does hardware selections/reservations, memory allocations and initializes data structures as empty.

virtual uint32_t fillSimulation()

Fills simulation with initial data after init()

returns the first step of the simulation (can be >0 for, e.g., restarts from checkpoints)

virtual void runOneStep(uint32_t currentStep)

Run one simulation step.

  • currentStep: iteration number of the current step

virtual void movingWindowCheck(uint32_t currentStep)

Check if moving window work must do.

If no moving window is needed the implementation of this function can be empty

  • currentStep: simulation step

virtual void resetAll(uint32_t currentStep)

Reset the simulation to a state such as it was after init() but for a specific time step.

Can be used to call fillSimulation() again.

void slide(uint32_t currentStep)
virtual void setInitController(IInitPlugin *initController)
MappingDesc *getMappingDescription()


class picongpu::FieldE

Inherits from pmacc::SimulationFieldHelper< MappingDesc >, pmacc::ISimulationData


class picongpu::FieldB

Inherits from pmacc::SimulationFieldHelper< MappingDesc >, pmacc::ISimulationData


class picongpu::FieldJ

Inherits from pmacc::SimulationFieldHelper< MappingDesc >, pmacc::ISimulationData


class picongpu::FieldTmp

Tmp (at the moment: scalar) field for plugins and tmp data like “gridded” particle data (charge density, energy density, …)

Inherits from pmacc::SimulationFieldHelper< MappingDesc >, pmacc::ISimulationData


template <typename T_Name, typename T_Flags, typename T_Attributes>
class picongpu::Particles

particle species

Template Parameters
  • T_Name: name of the species [type boost::mpl::string]
  • T_Attributes: sequence with attributes [type boost::mpl forward sequence]
  • T_Flags: sequence with flags e.g. solver [type boost::mpl forward sequence]

Inherits from pmacc::ParticlesBase< ParticleDescription< T_Name, SuperCellSize, T_Attributes, T_Flags, bmpl::if_< bmpl::contains< T_Flags, GetKeyFromAlias< T_Flags, boundaryCondition< > >::type >, pmacc::traits::Resolve< GetKeyFromAlias< T_Flags, boundaryCondition< > >::type >::type, pmacc::HandleGuardRegion< pmacc::particles::policies::ExchangeParticles, particles::boundary::CallPluginsAndDeleteParticles > >::type >, MappingDesc, DeviceHeap >, pmacc::ISimulationData

Public Types

typedef ParticleDescription<T_Name, SuperCellSize, T_Attributes, T_Flags, typename bmpl::if_<bmpl::contains<T_Flags, typename GetKeyFromAlias<T_Flags, boundaryCondition<>>::type>, typename pmacc::traits::Resolve<typename GetKeyFromAlias<T_Flags, boundaryCondition<>>::type>::type, pmacc::HandleGuardRegion<pmacc::particles::policies::ExchangeParticles, particles::boundary::CallPluginsAndDeleteParticles>>::type> SpeciesParticleDescription
typedef ParticlesBase<SpeciesParticleDescription, MappingDesc, DeviceHeap> ParticlesBaseType
typedef ParticlesBaseType::FrameType FrameType
typedef ParticlesBaseType::FrameTypeBorder FrameTypeBorder
typedef ParticlesBaseType::ParticlesBoxType ParticlesBoxType

Public Functions

Particles(const std::shared_ptr<DeviceHeap> &heap, MappingDesc cellDescription, SimulationDataId datasetID)
void createParticleBuffer()
void update(uint32_t const currentStep)
template <typename T_DensityFunctor, typename T_PositionFunctor>
void initDensityProfile(T_DensityFunctor &densityFunctor, T_PositionFunctor &positionFunctor, const uint32_t currentStep)
template <typename T_SrcName, typename T_SrcAttributes, typename T_SrcFlags, typename T_ManipulateFunctor, typename T_SrcFilterFunctor>
void deviceDeriveFrom(Particles<T_SrcName, T_SrcAttributes, T_SrcFlags> &src, T_ManipulateFunctor &manipulateFunctor, T_SrcFilterFunctor &srcFilterFunctor)
template <typename T_Functor>
void manipulateAllParticles(uint32_t currentStep, T_Functor &functor)
SimulationDataId getUniqueId()

Return the globally unique identifier for this simulation data.

globally unique identifier

void synchronize()

Synchronizes simulation data, meaning accessing (host side) data will return up-to-date values.

void syncToDevice()

Synchronize data from host to device.

Public Static Functions

static pmacc::traits::StringProperty getStringProperties()



doxygenclass: Cannot find class “picongpu::particleToGrid::ComputeGridValuePerFrame” in doxygen xml output for project “PIConGPU” from directory: ../xml