Important PIConGPU Classes

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

MySimulation

class MySimulation : public pmacc::SimulationHelper<simDim>

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

Public Functions

MySimulation()

Constructor.

virtual void pluginRegisterHelp(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 pluginGetName() const

Return the name of this plugin for status messages.

Return
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

Parameters
  • 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()

Return
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.

Parameters
  • 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

Parameters
  • 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()

FieldE

class FieldE : public pmacc::SimulationFieldHelper<MappingDesc>, public pmacc::ISimulationData

FieldB

class FieldB : public pmacc::SimulationFieldHelper<MappingDesc>, public pmacc::ISimulationData

FieldJ

class FieldJ : public pmacc::SimulationFieldHelper<MappingDesc>, public pmacc::ISimulationData

FieldTmp

class FieldTmp : public pmacc::SimulationFieldHelper<MappingDesc>, public pmacc::ISimulationData

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

Particles

template <typename T_Name, typename T_Flags, typename T_Attributes>
class Particles : public 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>, public pmacc::ISimulationData

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]

Public Types

typedef pmacc::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, picongpu::MappingDesc, DeviceHeap> ParticlesBaseType
typedef ParticlesBaseType::FrameType FrameType
typedef ParticlesBaseType::FrameTypeBorder FrameTypeBorder
typedef ParticlesBaseType::ParticlesBoxType ParticlesBoxType

Public Functions

Particles(const std::shared_ptr<DeviceHeap> &heap, picongpu::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.

Return
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()

ComputeGridValuePerFrame

template <class T_ParticleShape, class T_DerivedAttribute>
class ComputeGridValuePerFrame

Public Types

template<>
using AssignmentFunction = typename T_ParticleShape::ChargeAssignment
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::particles::particleToGrid::ComputeGridValuePerFrame::getUnit() const

return unit for this solver

Return
solver unit

HINLINE std::vector< float_64 > picongpu::particles::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)

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

Public Static Functions

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

return name of the this solver

Return
name of solver

Public Static Attributes

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