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 >, MappingDesc, DeviceHeap >, pmacc::ISimulationData

Public Types

typedef ParticleDescription<T_Name, SuperCellSize, T_Attributes, T_Flags> 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 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>
void deviceDeriveFrom(Particles<T_SrcName, T_SrcAttributes, T_SrcFlags> &src, T_ManipulateFunctor &manipulateFunctor)
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()


template <class T_ParticleShape, class T_DerivedAttribute>
class picongpu::particleToGrid::ComputeGridValuePerFrame

Public Types

typedef T_ParticleShape::ChargeAssignment AssignmentFunction
typedef pmacc::math::CT::make_Int<simDim, lowerMargin>::type LowerMargin
typedef pmacc::math::CT::make_Int<simDim, upperMargin>::type UpperMargin

Public Functions

HDINLINE ComputeGridValuePerFrame()
HDINLINE float1_64 picongpu::particleToGrid::ComputeGridValuePerFrame::getUnit() const

return unit for this solver

solver unit

HINLINE std::vector< float_64 > picongpu::particleToGrid::ComputeGridValuePerFrame::getUnitDimension() const

return powers of the 7 base measures for this solver

characterizing the unit of the result of the solver in SI (length L, mass M, time T, electric current I, thermodynamic temperature theta, amount of substance N, luminous intensity J)

HINLINE std::string picongpu::particleToGrid::ComputeGridValuePerFrame::getName() const

return name of the this solver

name of solver

template <typename FrameType, typename TVecSuperCell, typename BoxTmp, typename T_Acc>
DINLINE void picongpu::particleToGrid::ComputeGridValuePerFrame::operator()(T_Acc const & acc, FrameType & frame, const int localIdx, const TVecSuperCell superCell, BoxTmp & tmpBox)

Public Static Attributes

constexpr int supp = AssignmentFunction::support
constexpr int lowerMargin = supp / 2
constexpr int upperMargin = (supp + 1) / 2