OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
PicManager.h
Go to the documentation of this file.
1#ifndef IPPL_PIC_MANAGER
2#define IPPL_PIC_MANAGER
3
4#include <memory>
5
9
10namespace ippl {
11
26 template <typename T, unsigned Dim, class pc, class fc, class orb>
27 class PicManager : public BaseManager {
28 public:
30 : BaseManager()
31 , fcontainer_m(nullptr)
32 , pcontainer_m(nullptr)
33 , loadbalancer_m(nullptr) {}
34
35 virtual ~PicManager() = default;
36
43 virtual void par2grid() = 0;
44
51 virtual void grid2par() = 0;
52
53 std::shared_ptr<pc> getParticleContainer() { return pcontainer_m; }
54
55 void setParticleContainer(std::shared_ptr<pc> pcontainer) { pcontainer_m = pcontainer; }
56
57 std::shared_ptr<fc> getFieldContainer() { return fcontainer_m; }
58
59 void setFieldContainer(std::shared_ptr<fc> fcontainer) { fcontainer_m = fcontainer; }
60
61 std::shared_ptr<ippl::FieldSolverBase<T, Dim>> getFieldSolver() { return fsolver_m; }
62
63 void setFieldSolver(std::shared_ptr<ippl::FieldSolverBase<T, Dim>> fsolver) {
64 fsolver_m = fsolver;
65 }
66
67 std::shared_ptr<orb> getLoadBalancer() { return loadbalancer_m; }
68
69 void setLoadBalancer(std::shared_ptr<orb> loadbalancer) { loadbalancer_m = loadbalancer; }
70
71 protected:
72 std::shared_ptr<fc> fcontainer_m;
73
74 std::shared_ptr<pc> pcontainer_m;
75
76 std::shared_ptr<orb> loadbalancer_m;
77
78 std::shared_ptr<ippl::FieldSolverBase<T, Dim>> fsolver_m;
79 };
80} // namespace ippl
81
82#endif
Implementations for FFT constructor/destructor and transforms.
Definition: Archive.h:20
A base class for managing simulations using IPPL.
Definition: BaseManager.h:14
A template class for managing Particle-in-Cell (PIC) simulations.
Definition: PicManager.h:27
void setFieldSolver(std::shared_ptr< ippl::FieldSolverBase< T, Dim > > fsolver)
Definition: PicManager.h:63
virtual void grid2par()=0
Grid-to-particle operation.
std::shared_ptr< pc > pcontainer_m
Definition: PicManager.h:74
std::shared_ptr< fc > getFieldContainer()
Definition: PicManager.h:57
void setParticleContainer(std::shared_ptr< pc > pcontainer)
Definition: PicManager.h:55
std::shared_ptr< ippl::FieldSolverBase< T, Dim > > fsolver_m
Definition: PicManager.h:78
std::shared_ptr< ippl::FieldSolverBase< T, Dim > > getFieldSolver()
Definition: PicManager.h:61
virtual void par2grid()=0
Particle-to-grid operation.
virtual ~PicManager()=default
void setLoadBalancer(std::shared_ptr< orb > loadbalancer)
Definition: PicManager.h:69
std::shared_ptr< pc > getParticleContainer()
Definition: PicManager.h:53
std::shared_ptr< fc > fcontainer_m
Definition: PicManager.h:72
std::shared_ptr< orb > loadbalancer_m
Definition: PicManager.h:76
std::shared_ptr< orb > getLoadBalancer()
Definition: PicManager.h:67
void setFieldContainer(std::shared_ptr< fc > fcontainer)
Definition: PicManager.h:59