1#ifndef IPPL_PIC_MANAGER
2#define IPPL_PIC_MANAGER
8#include "Decomposition/OrthogonalRecursiveBisection.h"
9#include "Manager/BaseManager.h"
10#include "Manager/FieldSolverBase.h"
31 template <
typename T,
unsigned Dim,
class pc,
class fc,
class orb>
36 , fcontainer_m(
nullptr)
38 , loadbalancer_m(
nullptr) {}
74 throw std::out_of_range(
"PicManager::getParticleContainer: index out of range");
122 std::shared_ptr<fc> getFieldContainer() {
return fcontainer_m; }
124 void setFieldContainer(std::shared_ptr<fc> fcontainer) { fcontainer_m = fcontainer; }
126 std::shared_ptr<ippl::FieldSolverBase<T, Dim>> getFieldSolver() {
return fsolver_m; }
132 std::shared_ptr<orb> getLoadBalancer() {
return loadbalancer_m; }
134 void setLoadBalancer(std::shared_ptr<orb> loadbalancer) { loadbalancer_m = loadbalancer; }
137 std::shared_ptr<fc> fcontainer_m;
152 std::shared_ptr<orb> loadbalancer_m;
154 std::shared_ptr<ippl::FieldSolverBase<T, Dim>> fsolver_m;
A base class for managing simulations using IPPL.
Definition BaseManager.h:14
Definition FieldSolverBase.h:12
A template class for managing Particle-in-Cell (PIC) simulations.
Definition PicManager.h:32
std::vector< std::shared_ptr< pc > > pcontainers_m
All particle containers managed by this PIC manager. the first entry (index 0) is the same as the one...
Definition PicManager.h:150
std::shared_ptr< pc > getParticleContainer(size_t i)
Get a particle container by index.
Definition PicManager.h:72
virtual void grid2par()=0
Grid-to-particle operation.
std::shared_ptr< pc > pcontainer_m
Default (first) particle container, kept for backward compatibility.
Definition PicManager.h:143
void setParticleContainer(std::shared_ptr< pc > pcontainer)
Set the default (first) particle container.
Definition PicManager.h:85
virtual void par2grid()=0
Particle-to-grid operation.
const std::vector< std::shared_ptr< pc > > & getParticleContainers() const
Get a const reference to the vector of all particle containers.
Definition PicManager.h:118
std::shared_ptr< pc > getParticleContainer()
Get the default (first) particle container.
Definition PicManager.h:63
size_t getNumParticleContainers() const
Get the number of particle containers (bunches).
Definition PicManager.h:112
size_t addParticleContainer(std::shared_ptr< pc > pcontainer)
Add an additional particle container (bunch).
Definition PicManager.h:99