Important PIConGPU Classes

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

MySimulation

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

picongpu::MySimulationMySimulation()

Constructor.

virtual void picongpu::MySimulationpluginRegisterHelp(po::options_description &desc)

Register command line parameters for this plugin.

Parameters are parsed and set prior to plugin load.

Parameters
  • desc: boost::program_options description

std::string picongpu::MySimulationpluginGetName() const

Return the name of this plugin for status messages.

Return
plugin name

virtual void picongpu::MySimulationpluginLoad()
virtual void picongpu::MySimulationpluginUnload()
void picongpu::MySimulationnotify(uint32_t currentStep)

Notification callback.

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

Parameters
  • currentStep: current simulation iteration step

virtual void picongpu::MySimulationinit()

Initialize simulation.

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

virtual uint32_t picongpu::MySimulationfillSimulation()

Fills simulation with initial data after init()

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

virtual void picongpu::MySimulationrunOneStep(uint32_t currentStep)

Run one simulation step.

Parameters
  • currentStep: iteration number of the current step

virtual void picongpu::MySimulationmovingWindowCheck(uint32_t currentStep)

Check if moving window work must do.

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

Parameters
  • currentStep: simulation step

virtual void picongpu::MySimulationresetAll(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 picongpu::MySimulationslide(uint32_t currentStep)
virtual void picongpu::MySimulationsetInitController(IInitPlugin *initController)
MappingDesc *picongpu::MySimulationgetMappingDescription()

FieldE

class picongpu::FieldE

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

FieldB

class picongpu::FieldB

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

FieldJ

class picongpu::FieldJ

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

FieldTmp

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

Particles

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> picongpu::ParticlesSpeciesParticleDescription
typedef ParticlesBase<SpeciesParticleDescription, MappingDesc, DeviceHeap> picongpu::ParticlesParticlesBaseType
typedef ParticlesBaseType::FrameType picongpu::ParticlesFrameType
typedef ParticlesBaseType::FrameTypeBorder picongpu::ParticlesFrameTypeBorder
typedef ParticlesBaseType::ParticlesBoxType picongpu::ParticlesParticlesBoxType

Public Functions

picongpu::ParticlesParticles(const std::shared_ptr<DeviceHeap> &heap, MappingDesc cellDescription, SimulationDataId datasetID)
void picongpu::ParticlescreateParticleBuffer()
void picongpu::Particlesinit()
void picongpu::Particlesupdate(uint32_t currentStep)
template <typename T_DensityFunctor, typename T_PositionFunctor>
void picongpu::ParticlesinitDensityProfile(T_DensityFunctor &densityFunctor, T_PositionFunctor &positionFunctor, const uint32_t currentStep)
template <typename T_SrcName, typename T_SrcAttributes, typename T_SrcFlags, typename T_ManipulateFunctor>
void picongpu::ParticlesdeviceDeriveFrom(Particles<T_SrcName, T_SrcAttributes, T_SrcFlags> &src, T_ManipulateFunctor &manipulateFunctor)
template <typename T_Functor>
void picongpu::ParticlesmanipulateAllParticles(uint32_t currentStep, T_Functor &functor)
SimulationDataId picongpu::ParticlesgetUniqueId()

Return the globally unique identifier for this simulation data.

Return
globally unique identifier

void picongpu::Particlessynchronize()

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

void picongpu::ParticlessyncToDevice()

Synchronize data from host to device.

Public Static Functions

static PMacc::traits::StringProperty picongpu::ParticlesgetStringProperties()

ComputeGridValuePerFrame

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

Public Types

typedef T_ParticleShape::ChargeAssignment picongpu::particleToGrid::ComputeGridValuePerFrameAssignmentFunction
typedef PMacc::math::CT::make_Int<simDim, lowerMargin>::type picongpu::particleToGrid::ComputeGridValuePerFrameLowerMargin
typedef PMacc::math::CT::make_Int<simDim, upperMargin>::type picongpu::particleToGrid::ComputeGridValuePerFrameUpperMargin

Public Functions

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

return unit for this solver

Return
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

Return
name of solver

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

Public Static Attributes

constexpr int picongpu::particleToGrid::ComputeGridValuePerFramesupp = AssignmentFunction::support
constexpr int picongpu::particleToGrid::ComputeGridValuePerFramelowerMargin = supp / 2
constexpr int picongpu::particleToGrid::ComputeGridValuePerFrameupperMargin = (supp + 1) / 2