ESyS-Particle  2.3.4
GrainCollection.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_LSMGRAINCOLLECTION_H
14 #define ESYS_LSMGRAINCOLLECTION_H
15 
16 #include "Foundation/StlIterator.h"
17 #include <boost/shared_ptr.hpp>
18 #include <boost/pool/object_pool.hpp>
19 
20 #include <vector>
21 
22 namespace esys
23 {
24  namespace lsm
25  {
29  template <typename TmplGrain>
31  {
32  public:
33  typedef TmplGrain Grain;
34  typedef typename Grain::Particle Particle;
40  typedef boost::object_pool<Grain> GrainPool;
41  typedef boost::shared_ptr<GrainPool> GrainPoolPtr;
42  typedef std::vector<Grain *> GrainVector;
43 
44  protected:
47 
48  public:
49 
51  {
52  public:
53  typedef Grain& value_type;
55  : VectorIterator(it)
56  {
57  }
58 
60  {
61  return *(VectorIterator::next());
62  }
63 
65  {
66  return *(VectorIterator::current());
67  }
68  };
69 
71  {
72  public:
73  typedef const Grain& value_type;
76  {
77  }
78 
81  {
82  }
83 
85  {
86  return *(VectorConstIterator::next());
87  }
88 
90  {
91  return *(VectorConstIterator::current());
92  }
93  };
94 
96 
97  GrainCollection(ParticlePoolPtr particlePoolPtr);
98 
99  GrainCollection(ParticlePoolPtr particlePoolPtr, GrainPoolPtr grainPoolPtr);
100 
101  virtual ~GrainCollection();
102 
106  int getNumGrains() const;
107 
112  int getNumParticles() const;
113 
121  void insertRef(Grain &g);
122 
127  Grain &createGrain();
128 
134  Grain &createGrain(typename Grain::Id id);
135 
141  Grain &createGrain(const Grain &g);
142 
143  GrainIterator getGrainIterator();
144 
145  GrainConstIterator getGrainIterator() const;
146 
147  protected:
149 
151 
152  private:
156  };
157  }
158 }
159 
161 
162 #endif
esys::lsm::GrainCollection::GrainConstIterator
Definition: GrainCollection.h:71
esys::lsm::GrainCollection
Definition: GrainCollection.h:31
esys::lsm::ForwardConstIterator::next
reference next()
Definition: StlIterator.h:112
esys::lsm::GrainCollection::VectorIterator
ForwardIterator< GrainVector > VectorIterator
Definition: GrainCollection.h:45
esys::lsm::GrainCollection::VectorConstIterator
ForwardConstIterator< GrainVector > VectorConstIterator
Definition: GrainCollection.h:46
esys::lsm::GrainCollection::GrainConstIterator::value_type
const Grain & value_type
Definition: GrainCollection.h:73
StlIterator.h
esys::lsm::ParticleCollection< SimpleSpherePy >::ParticlePool
boost::object_pool< Particle > ParticlePool
Definition: ParticleCollection.h:38
esys::lsm::GrainCollection::GrainConstIterator::current
value_type current() const
Definition: GrainCollection.h:89
esys::lsm::SimpleSpherePy
Definition: SimpleSpherePy.h:25
esys::lsm::GrainCollection::GrainCollection
GrainCollection()
Definition: GrainCollection.hpp:26
esys::lsm::ForwardIterator::current
reference current() const
Definition: StlIterator.h:53
esys::lsm::GrainCollection::Grain
TmplGrain Grain
Definition: GrainCollection.h:33
GrainCollection.h
esys::lsm::ParticleCollection::ParticleConstIterator
Definition: ParticleCollection.h:69
GrainCollection.hpp
esys::lsm::GrainCollection::m_particlePoolPtr
ParticlePoolPtr m_particlePoolPtr
Definition: GrainCollection.h:153
esys::lsm::ParticleCollection::ParticleIterator
Definition: ParticleCollection.h:49
esys::lsm::GrainCollection::m_grainVector
GrainVector m_grainVector
Definition: GrainCollection.h:155
esys::lsm::GrainCollection::GrainConstIterator::GrainConstIterator
GrainConstIterator(const VectorIterator &it)
Definition: GrainCollection.h:79
esys::lsm::ForwardIterator::next
reference next()
Definition: StlIterator.h:60
esys::lsm::GrainCollection::Particle
Grain::Particle Particle
Definition: GrainCollection.h:34
esys::lsm::ForwardIterator::value_type
TmplIteratable::value_type value_type
Definition: StlIterator.h:32
esys::lsm::GrainCollection::GrainVector
std::vector< Grain * > GrainVector
Definition: GrainCollection.h:42
esys::lsm::ForwardConstIterator::value_type
TmplIteratable::value_type value_type
Definition: StlIterator.h:78
esys::lsm::GrainCollection::~GrainCollection
virtual ~GrainCollection()
Definition: GrainCollection.hpp:69
esys
Definition: CheckPointable.cpp:17
esys::lsm::GrainCollection::ParticlePoolPtr
ParticleCollection::ParticlePoolPtr ParticlePoolPtr
Definition: GrainCollection.h:37
esys::lsm::ParticleCollection::ParticlePoolPtr
boost::shared_ptr< ParticlePool > ParticlePoolPtr
Definition: ParticleCollection.h:39
esys::lsm::GrainCollection::ParticleIterator
ParticleCollection::ParticleIterator ParticleIterator
Definition: GrainCollection.h:38
esys::lsm::Grain::Id
long Id
Definition: Grain.h:36
esys::lsm::GrainCollection::getNumGrains
int getNumGrains() const
Definition: GrainCollection.hpp:74
esys::lsm::Grain
Definition: Grain.h:27
esys::lsm::GrainCollection::ParticleCollection
Grain::ParticleCollection ParticleCollection
Definition: GrainCollection.h:35
esys::lsm::GrainCollection::getGrainIterator
GrainIterator getGrainIterator()
Definition: GrainCollection.hpp:140
esys::lsm::GrainCollection::m_grainPoolPtr
GrainPoolPtr m_grainPoolPtr
Definition: GrainCollection.h:154
esys::lsm::GrainCollection::GrainConstIterator::next
value_type next()
Definition: GrainCollection.h:84
esys::lsm::GrainCollection::GrainIterator
Definition: GrainCollection.h:51
esys::lsm::GrainCollection::createGrain
Grain & createGrain()
Definition: GrainCollection.hpp:113
esys::lsm::GrainCollection::GrainIterator::value_type
Grain & value_type
Definition: GrainCollection.h:53
esys::lsm::GrainCollection::getParticlePoolPtr
ParticlePoolPtr getParticlePoolPtr()
Definition: GrainCollection.hpp:56
esys::lsm::ForwardIterator
Definition: StlIterator.h:30
esys::lsm::ForwardConstIterator
Definition: StlIterator.h:76
esys::lsm::GrainCollection::getNumParticles
int getNumParticles() const
Definition: GrainCollection.hpp:80
esys::lsm::ForwardConstIterator::current
reference current() const
Definition: StlIterator.h:105
esys::lsm::GrainCollection::GrainPool
boost::object_pool< Grain > GrainPool
Definition: GrainCollection.h:40
esys::lsm::GrainCollection::GrainConstIterator::GrainConstIterator
GrainConstIterator(const VectorConstIterator &it)
Definition: GrainCollection.h:74
esys::lsm::GrainCollection::ParticleConstIterator
ParticleCollection::ParticleConstIterator ParticleConstIterator
Definition: GrainCollection.h:39
esys::lsm::GrainCollection::GrainPoolPtr
boost::shared_ptr< GrainPool > GrainPoolPtr
Definition: GrainCollection.h:41
esys::lsm::GrainCollection::ParticlePool
ParticleCollection::ParticlePool ParticlePool
Definition: GrainCollection.h:36
esys::lsm::GrainCollection::insertRef
void insertRef(Grain &g)
Definition: GrainCollection.hpp:95
esys::lsm::GrainCollection::GrainIterator::current
value_type current() const
Definition: GrainCollection.h:64
esys::lsm::GrainCollection::GrainIterator::GrainIterator
GrainIterator(const VectorIterator &it)
Definition: GrainCollection.h:54
esys::lsm::GrainCollection::getGrainPoolPtr
GrainPoolPtr getGrainPoolPtr()
Definition: GrainCollection.hpp:63
esys::lsm::ParticleCollection< SimpleSpherePy >
esys::lsm::GrainCollection::GrainIterator::next
value_type next()
Definition: GrainCollection.h:59