13 #include "Geometry/GrainCollection.h"
19 #include <boost/limits.hpp>
25 template <
typename TmplGrain>
26 GrainCollection<TmplGrain>::GrainCollection()
27 : m_particlePoolPtr(new ParticlePool(4096)),
28 m_grainPoolPtr(new GrainPool(4096)),
33 template <
typename TmplGrain>
34 GrainCollection<TmplGrain>::GrainCollection(
35 ParticlePoolPtr particlePoolPtr
37 : m_particlePoolPtr(particlePoolPtr),
38 m_grainPoolPtr(new GrainPool(4096)),
43 template <
typename TmplGrain>
44 GrainCollection<TmplGrain>::GrainCollection(
45 ParticlePoolPtr particlePoolPtr,
46 GrainPoolPtr grainPoolPtr
48 : m_particlePoolPtr(particlePoolPtr),
49 m_grainPoolPtr(grainPoolPtr),
54 template <
typename TmplGrain>
55 typename GrainCollection<TmplGrain>::ParticlePoolPtr
56 GrainCollection<TmplGrain>::getParticlePoolPtr()
58 return m_particlePoolPtr;
61 template <
typename TmplGrain>
62 typename GrainCollection<TmplGrain>::GrainPoolPtr
63 GrainCollection<TmplGrain>::getGrainPoolPtr()
65 return m_grainPoolPtr;
68 template <
typename TmplGrain>
69 GrainCollection<TmplGrain>::~GrainCollection()
73 template <
typename TmplGrain>
76 return m_grainVector.size();
79 template <
typename TmplGrain>
86 i += it.next().getNumParticles()
93 template <
typename TmplGrain>
97 if (m_grainPoolPtr->is_from(&g))
99 m_grainVector.push_back(&g);
105 "GrainCollection<TmplGrain>::insertRef: Tried to insert"
106 " reference to non-created grain."
111 template <
typename TmplGrain>
112 typename GrainCollection<TmplGrain>::Grain &
115 Grain *pGrain = m_grainPoolPtr->construct(getParticlePoolPtr());
120 template <
typename TmplGrain>
121 typename GrainCollection<TmplGrain>::Grain &
124 Grain *pGrain = m_grainPoolPtr->construct(
id, getParticlePoolPtr());
129 template <
typename TmplGrain>
130 typename GrainCollection<TmplGrain>::Grain &
133 Grain *pGrain = m_grainPoolPtr->construct(g);
138 template <
typename TmplGrain>
142 return GrainIterator(VectorIterator(m_grainVector));
145 template <
typename TmplGrain>
146 typename GrainCollection<TmplGrain>::GrainConstIterator
147 GrainCollection<TmplGrain>::getGrainIterator()
const
149 return GrainConstIterator(VectorConstIterator(m_grainVector));