14 #ifndef ESYS_LSMCIRCULARNEIGHBOURTABLE_H
15 #define ESYS_LSMCIRCULARNEIGHBOURTABLE_H
17 #include "Geometry/NeighbourTable.h"
18 #include <boost/pool/object_pool.hpp>
19 #include <boost/shared_ptr.hpp>
32 template <
class TmplParticle>
37 typedef typename Inherited::Particle Particle;
38 typedef typename Inherited::ParticleVector ParticleVector;
39 typedef std::set<typename ParticleVector::value_type> ParticleSet;
40 typedef boost::object_pool<Particle> ParticlePool;
41 typedef boost::shared_ptr<ParticlePool> ParticlePoolPtr;
42 typedef std::vector<bool> BoolVector;
48 const BoolVector &periodicDimensions = BoolVector(3,
false),
49 double circBorderWidth = 0.0
55 ParticlePoolPtr particlePoolPtr,
56 const BoolVector &periodicDimensions = BoolVector(3,
false),
57 double circBorderWidth = 0.0
61 void checkPeriodicDimensions();
65 void setCircularBorderWidth(
66 double circBorderWidth,
70 void setCircularBorderWidth(
double circBorderWidth);
75 double circBorderWidth
83 void insertClone(Particle *pParticle,
const Vec3 &newPosition);
85 bool havePeriodicDimensions()
const;
87 Vec3 getModdedPosn(
const Vec3 &posn)
const;
89 void insert(Particle *pParticle);
91 void insert(Particle &particle);
93 size_t getNumClonedParticles()
const;
95 size_t getNumParticles()
const;
97 const BoolVector &getPeriodicDimensions()
const;
100 bool isClone(Particle *p)
const;
102 ParticleVector getNonClonedParticles();
104 void clearClonedParticles();
107 BoolVector m_periodicDimensions;
108 ParticlePoolPtr m_particlePoolPtr;
109 ParticleSet m_clonedParticleSet;
111 int m_periodicDimIndex;
116 #include "Geometry/CircularNeighbourTable.hpp"