ESyS-Particle  2.3
GrainRandomBoxPacker.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2014 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.opensource.org/licenses/osl-3.0.php //
10 // //
12 
13 
14 #ifndef ESYS_LSMGRAINRANDOMBOXPACKER_H
15 #define ESYS_LSMGRAINRANDOMBOXPACKER_H
16 
19 
20 #include <vector>
21 #include <boost/shared_ptr.hpp>
22 
23 namespace esys
24 {
25  namespace lsm
26  {
30  template <typename TmplParticleGrainGen, typename TmplGrainCollection, template <typename TPartGrainGen> class TmplRndBoxPackerWrap>
31  class GrainRandomBoxPacker : public TmplRndBoxPackerWrap<TmplParticleGrainGen>::RandomBoxPackerBase
32  {
33  public:
34  typedef TmplGrainCollection GrainCollection;
35  typedef boost::shared_ptr<GrainCollection> GrainCollectionPtr;
38  typedef typename GrainCollection::Grain Grain;
39  typedef typename Grain::Id GrainId;
42  typedef
43  typename TmplRndBoxPackerWrap<TmplParticleGrainGen>::RandomBoxPackerBase
46  typedef typename Inherited::ParticleGenerator ParticleGrainGen;
47  typedef typename Inherited::ParticleGeneratorPtr ParticleGrainGenPtr;
48  typedef typename Inherited::Particle Particle;
49  typedef typename Inherited::NTable NTable;
50  typedef typename Inherited::NTablePtr NTablePtr;
52  typedef typename Inherited::ParticlePool ParticlePool;
53  typedef typename Inherited::ParticlePoolPtr ParticlePoolPtr;
55  typedef typename Inherited::StuffedParticleIterator StuffedParticleIterator;
56 
58  ParticleGrainGenPtr particleGrainGenPtr,
59  ParticlePoolPtr particlePoolPtr,
60  NTablePtr nTablePtr,
61  const BoundingBox &bBox,
62  const BoolVector &periodicDimensions,
63  double tolerance,
64  double cubicPackRadius,
65  int maxInsertionFailures
66  );
67 
69  ParticleGrainGenPtr particleGrainGenPtr,
70  ParticlePoolPtr particlePoolPtr,
71  NTablePtr nTablePtr,
72  const BoundingBox &bBox,
73  const BoolVector &periodicDimensions,
74  double tolerance,
75  double cubicPackRadius,
76  int maxInsertionFailures,
77  const PlaneVector &fitPlaneVector,
78  GrainPoolPtr grainPoolPtr
79  );
80 
81  virtual ~GrainRandomBoxPacker();
82 
83  ParticleGrainGen &getParticleGrainGen();
84 
85  const ParticleGrainGen &getParticleGrainGen() const;
86 
87  void setParticleGrainGen(ParticleGrainGen &particleGrainGen);
88 
89  void setParticleGrainGen(ParticleGrainGenPtr particleGrainGenPtr);
90 
91  GrainId getNextGrainId() const;
92 
93  Grain &constructGrain();
94 
95  Grain &createAndInsertGrain(const Grain &grain);
96 
98 
100 
101  int getNumGrains() const;
102 
103  GrainConstIterator getGrainIterator() const;
104 
105  GrainIterator getGrainIterator();
106 
107  const GrainCollection &getGrainCollection() const;
108 
109  GrainCollection &getGrainCollection();
110 
111  virtual void generate();
112 
113  private:
114  GrainCollectionPtr m_grainCollectionPtr;
115  };
116  }
117 }
118 
120 
121 #endif
GrainCollectionPtr m_grainCollectionPtr
Definition: GrainRandomBoxPacker.h:114
void generateRandomFillGrains()
Definition: GrainRandomBoxPacker.hpp:195
Definition: GrainCollection.h:70
GrainCollection::GrainPool GrainPool
Definition: GrainRandomBoxPacker.h:40
Grain & createAndInsertGrain(const Grain &grain)
Definition: GrainRandomBoxPacker.hpp:167
GrainCollection::GrainConstIterator GrainConstIterator
Definition: GrainRandomBoxPacker.h:37
GrainId getNextGrainId() const
Definition: GrainRandomBoxPacker.hpp:153
void generateCubicPackingGrains()
Definition: GrainRandomBoxPacker.hpp:182
const GrainCollection & getGrainCollection() const
Definition: GrainRandomBoxPacker.hpp:86
GrainConstIterator getGrainIterator() const
Definition: GrainRandomBoxPacker.hpp:107
GrainCollection::Grain Grain
Definition: GrainRandomBoxPacker.h:38
Definition: GrainCollection.h:50
virtual ~GrainRandomBoxPacker()
Definition: GrainRandomBoxPacker.hpp:80
GrainCollection::GrainPoolPtr GrainPoolPtr
Definition: GrainRandomBoxPacker.h:41
std::vector< Plane3D > PlaneVector
Definition: GougeBlock3D.h:32
Grain::Id GrainId
Definition: GrainRandomBoxPacker.h:39
Inherited RandomBoxPackerBase
Definition: GrainRandomBoxPacker.h:45
Grain & constructGrain()
Definition: GrainRandomBoxPacker.hpp:160
Definition: CheckPointable.cpp:16
Inherited::PlaneVector PlaneVector
Definition: GrainRandomBoxPacker.h:54
virtual void generate()
Definition: GrainRandomBoxPacker.hpp:211
Inherited::ParticleVector ParticleVector
Definition: GrainRandomBoxPacker.h:51
Inherited::ParticleGeneratorPtr ParticleGrainGenPtr
Definition: GrainRandomBoxPacker.h:47
3D bounding box
Definition: BoundingBox.h:27
Inherited::Particle Particle
Definition: GrainRandomBoxPacker.h:48
ParticleGrainGen & getParticleGrainGen()
Definition: GrainRandomBoxPacker.hpp:121
boost::shared_ptr< GrainPool > GrainPoolPtr
Definition: GrainCollection.h:41
boost::object_pool< Grain > GrainPool
Definition: GrainCollection.h:40
TmplRndBoxPackerWrap< TmplParticleGrainGen >::RandomBoxPackerBase Inherited
Definition: GrainRandomBoxPacker.h:44
Inherited::ParticleGenerator ParticleGrainGen
Definition: GrainRandomBoxPacker.h:46
TmplGrainCollection GrainCollection
Definition: GrainRandomBoxPacker.h:34
GrainCollection::GrainIterator GrainIterator
Definition: GrainRandomBoxPacker.h:36
Inherited::NTable NTable
Definition: GrainRandomBoxPacker.h:49
Inherited::NTablePtr NTablePtr
Definition: GrainRandomBoxPacker.h:50
long Id
Definition: Grain.h:36
Definition: GrainRandomBoxPacker.h:31
Inherited::ParticlePool ParticlePool
Definition: GrainRandomBoxPacker.h:52
Inherited::StuffedParticleIterator StuffedParticleIterator
Definition: GrainRandomBoxPacker.h:55
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
TmplGrain Grain
Definition: GrainCollection.h:33
GrainRandomBoxPacker(ParticleGrainGenPtr particleGrainGenPtr, ParticlePoolPtr particlePoolPtr, NTablePtr nTablePtr, const BoundingBox &bBox, const BoolVector &periodicDimensions, double tolerance, double cubicPackRadius, int maxInsertionFailures)
Definition: GrainRandomBoxPacker.hpp:55
void setParticleGrainGen(ParticleGrainGen &particleGrainGen)
Definition: GrainRandomBoxPacker.hpp:135
boost::shared_ptr< GrainCollection > GrainCollectionPtr
Definition: GrainRandomBoxPacker.h:35
Inherited::ParticlePoolPtr ParticlePoolPtr
Definition: GrainRandomBoxPacker.h:53
std::vector< SimpleParticle > ParticleVector
Definition: SimpleNTable3D.h:22
int getNumGrains() const
Definition: GrainRandomBoxPacker.hpp:114