ESyS-Particle  2.3.4
ParticleCollection.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef ESYS_LSMPARTICLECOLLECTION_H
14 #define ESYS_LSMPARTICLECOLLECTION_H
15 
16 #include "Foundation/BoundingBox.h"
17 #include "Foundation/StlIterator.h"
18 #include "Geometry/Vec3L.h"
19 
20 #include <boost/shared_ptr.hpp>
21 #include <boost/pool/object_pool.hpp>
22 
23 #include <vector>
24 #include <float.h>
25 
26 namespace esys
27 {
28  namespace lsm
29  {
33  template <typename TmplParticle>
35  {
36  public:
37  typedef TmplParticle Particle;
38  typedef boost::object_pool<Particle> ParticlePool;
39  typedef boost::shared_ptr<ParticlePool> ParticlePoolPtr;
40 
41  private:
42  typedef std::vector<Particle *> ParticleVector;
45 
46  public:
47 
49  {
50  public:
51  typedef Particle& value_type;
53  : VectorIterator(it)
54  {
55  }
56 
58  {
59  return *(VectorIterator::next());
60  }
61 
63  {
64  return *(VectorIterator::current());
65  }
66  };
67 
69  {
70  public:
71  typedef const Particle& value_type;
74  {
75  }
76 
79  {
80  }
81 
83  {
84  return *(VectorConstIterator::next());
85  }
86 
88  {
89  return *(VectorConstIterator::current());
90  }
91  };
92 
94 
95  ParticleCollection(ParticlePoolPtr particlePoolPtr);
96 
98 
100 
101  virtual ~ParticleCollection();
102 
103  int getNumParticles() const;
104 
106 
108  {
110  }
111 
112  ParticleConstIterator getParticleIterator() const
113  {
114  return ParticleConstIterator(VectorConstIterator(m_particleVector));
115  }
116 
122  void translateBy(const Vec3 &vec);
123 
131  void rotate(const Vec3 &rotation, const Vec3 &posn);
132 
138  void incrementIdBy(typename Particle::Id idIncr);
139 
144  void insertRef(Particle &p);
145 
151  Particle &createParticle(const Particle &p);
152 
153  protected:
158  void noCheckInsertRef(Particle &p);
159 
160  private:
163  };
164  }
165 }
166 
168 
169 #endif
esys::lsm::ParticleCollection::VectorIterator
ForwardIterator< ParticleVector > VectorIterator
Definition: ParticleCollection.h:43
esys::lsm::ParticleCollection::rotate
void rotate(const Vec3 &rotation, const Vec3 &posn)
Definition: ParticleCollection.hpp:114
esys::lsm::ParticleCollection::ParticleIterator::ParticleIterator
ParticleIterator(const VectorIterator &it)
Definition: ParticleCollection.h:52
esys::lsm::ParticleCollection::~ParticleCollection
virtual ~ParticleCollection()
Definition: ParticleCollection.hpp:93
esys::lsm::ParticleCollection::ParticleIterator::value_type
Particle & value_type
Definition: ParticleCollection.h:51
esys::lsm::ForwardConstIterator::next
reference next()
Definition: StlIterator.h:112
esys::lsm::ParticleCollection::noCheckInsertRef
void noCheckInsertRef(Particle &p)
Definition: ParticleCollection.hpp:60
esys::lsm::ParticleCollection::ParticleIterator::current
value_type current() const
Definition: ParticleCollection.h:62
StlIterator.h
esys::lsm::ParticleCollection::ParticlePool
boost::object_pool< Particle > ParticlePool
Definition: ParticleCollection.h:38
esys::lsm::ParticleCollection::createParticle
Particle & createParticle(const Particle &p)
Definition: ParticleCollection.hpp:85
esys::lsm::ParticleCollection::translateBy
void translateBy(const Vec3 &vec)
Definition: ParticleCollection.hpp:104
Vec3L.h
esys::lsm::ParticleCollection::ParticleVector
std::vector< Particle * > ParticleVector
Definition: ParticleCollection.h:42
esys::lsm::ForwardIterator::current
reference current() const
Definition: StlIterator.h:53
esys::lsm::ParticleCollection::incrementIdBy
void incrementIdBy(typename Particle::Id idIncr)
Definition: ParticleCollection.hpp:127
esys::lsm::ParticleCollection::ParticleConstIterator
Definition: ParticleCollection.h:69
esys::lsm::ParticleCollection::ParticleIterator
Definition: ParticleCollection.h:49
esys::lsm::ParticleCollection::ParticleConstIterator::ParticleConstIterator
ParticleConstIterator(const VectorIterator &it)
Definition: ParticleCollection.h:77
esys::lsm::ForwardIterator::next
reference next()
Definition: StlIterator.h:60
esys::lsm::ParticleCollection::insertRef
void insertRef(Particle &p)
Definition: ParticleCollection.hpp:67
esys::lsm::ForwardIterator::value_type
TmplIteratable::value_type value_type
Definition: StlIterator.h:32
esys::lsm::ForwardConstIterator::value_type
TmplIteratable::value_type value_type
Definition: StlIterator.h:78
esys::lsm::BoundingBox
3D bounding box
Definition: BoundingBox.h:28
esys
Definition: CheckPointable.cpp:17
esys::lsm::ParticleCollection::getParticleIterator
ParticleConstIterator getParticleIterator() const
Definition: ParticleCollection.h:112
esys::lsm::ParticleCollection::ParticleConstIterator::current
value_type current() const
Definition: ParticleCollection.h:87
ParticleCollection.h
esys::lsm::ParticleCollection::ParticlePoolPtr
boost::shared_ptr< ParticlePool > ParticlePoolPtr
Definition: ParticleCollection.h:39
esys::lsm::ParticleCollection::ParticleConstIterator::next
value_type next()
Definition: ParticleCollection.h:82
esys::lsm::ParticleCollection::m_particleVector
ParticleVector m_particleVector
Definition: ParticleCollection.h:162
esys::lsm::ParticleCollection::getNumParticles
int getNumParticles() const
Definition: ParticleCollection.hpp:98
esys::lsm::ParticleCollection::operator=
ParticleCollection & operator=(const ParticleCollection &p)
Definition: ParticleCollection.hpp:52
esys::lsm::ParticleCollection::ParticleIterator::next
value_type next()
Definition: ParticleCollection.h:57
Vec3
Definition: vec3.h:47
esys::lsm::ParticleCollection::getParticleIterator
ParticleIterator getParticleIterator()
Definition: ParticleCollection.h:107
esys::lsm::ForwardIterator
Definition: StlIterator.h:30
esys::lsm::ForwardConstIterator
Definition: StlIterator.h:76
esys::lsm::ParticleCollection::getParticleBBox
BoundingBox getParticleBBox() const
Definition: ParticleCollection.hpp:140
esys::lsm::ForwardConstIterator::current
reference current() const
Definition: StlIterator.h:105
esys::lsm::ParticleCollection::m_particlePoolPtr
ParticlePoolPtr m_particlePoolPtr
Definition: ParticleCollection.h:161
esys::lsm::ParticleCollection::Particle
TmplParticle Particle
Definition: ParticleCollection.h:37
esys::lsm::ParticleCollection::VectorConstIterator
ForwardConstIterator< ParticleVector > VectorConstIterator
Definition: ParticleCollection.h:44
esys::lsm::ParticleCollection::ParticleConstIterator::value_type
const Particle & value_type
Definition: ParticleCollection.h:71
esys::lsm::ParticleCollection::ParticleConstIterator::ParticleConstIterator
ParticleConstIterator(const VectorConstIterator &it)
Definition: ParticleCollection.h:72
esys::lsm::ParticleIterator
Definition: GeometryReader.h:41
esys::lsm::ParticleCollection
Definition: ParticleCollection.h:35
esys::lsm::ParticleCollection::ParticleCollection
ParticleCollection()
Definition: ParticleCollection.hpp:27
ParticleCollection.hpp
BoundingBox.h