OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
AbstractParticle.h
Go to the documentation of this file.
1 #ifndef ABSTRACT_PARTICLE_H
2 #define ABSTRACT_PARTICLE_H
3 
6 
7 template <class T, unsigned Dim>
9 
10 public:
19 
20 public:
21 
22  AbstractParticle() : R_p(0), ID_p(0) {}
23 
24  virtual ~AbstractParticle() { }
25 // AbstractParticle(ParticlePos_t& R,
26 // ParticleIndex_t& ID) : R_p(&R), ID_p(&ID)
27 // {
28 // std::cout << "AbstractParticle()" << std::endl;
29 // }
30 
31  virtual void addAttribute(ParticleAttribBase& pa) = 0;
32 
33  virtual size_t getTotalNum() const = 0;
34  virtual size_t getLocalNum() const = 0;
35  virtual size_t getDestroyNum() const = 0;
36  virtual size_t getGhostNum() const = 0;
37  virtual void setTotalNum(size_t n) = 0;
38  virtual void setLocalNum(size_t n) = 0;
39 
40  virtual unsigned int getMinimumNumberOfParticlesPerCore() const = 0;
41  virtual void setMinimumNumberOfParticlesPerCore(unsigned int n) = 0;
42 
43  virtual Layout_t& getLayout() = 0;
44  virtual const Layout_t& getLayout() const = 0;
45 
46  virtual bool getUpdateFlag(UpdateFlags f) const = 0;
47 
48  virtual void setUpdateFlag(UpdateFlags f, bool val) = 0;
49 
51 
52  virtual void setBConds(const ParticleBConds<Position_t, Dim>& bc) = 0;
53 
54  virtual bool singleInitNode() const = 0;
55 
56  virtual void resetID() = 0;
57 
58 
59  virtual void update() = 0;
60  virtual void update(const ParticleAttrib<char>& canSwap) = 0;
61 
62  virtual void createWithID(unsigned id) = 0;
63  virtual void create(size_t) = 0;
64  virtual void globalCreate(size_t np) = 0;
65 
66  virtual void destroy(size_t, size_t, bool = false) = 0;
67 
68  virtual void performDestroy(bool updateLocalNum = false) = 0;
69 
70  virtual void ghostDestroy(size_t M, size_t I) = 0;
71 
72 public:
75 };
76 
77 #endif
ParticleAttrib< SingleParticlePos_t > ParticlePos_t
virtual void performDestroy(bool updateLocalNum=false)=0
virtual size_t getLocalNum() const =0
virtual ~AbstractParticle()
ParticleLayout< T, Dim >::Index_t Index_t
ParticleAttrib< Index_t > ParticleIndex_t
unsigned Index_t
ParticleLayout< T, Dim >::UpdateFlags UpdateFlags
virtual void ghostDestroy(size_t M, size_t I)=0
virtual void setLocalNum(size_t n)=0
virtual void createWithID(unsigned id)=0
virtual Layout_t & getLayout()=0
virtual void setMinimumNumberOfParticlesPerCore(unsigned int n)=0
ParticleLayout< T, Dim > Layout_t
virtual bool singleInitNode() const =0
virtual unsigned int getMinimumNumberOfParticlesPerCore() const =0
virtual void create(size_t)=0
virtual void addAttribute(ParticleAttribBase &pa)=0
virtual void resetID()=0
virtual void setTotalNum(size_t n)=0
virtual void globalCreate(size_t np)=0
virtual void setUpdateFlag(UpdateFlags f, bool val)=0
ParticleIndex_t * ID_p
virtual size_t getTotalNum() const =0
virtual void setBConds(const ParticleBConds< Position_t, Dim > &bc)=0
virtual void destroy(size_t, size_t, bool=false)=0
virtual size_t getGhostNum() const =0
virtual ParticleBConds< Position_t, Dim > & getBConds()=0
virtual size_t getDestroyNum() const =0
virtual bool getUpdateFlag(UpdateFlags f) const =0
ParticleLayout< T, Dim >::SingleParticlePos_t SingleParticlePos_t
virtual void update()=0
ParticlePos_t * R_p
ParticleLayout< T, Dim >::Position_t Position_t