ESyS-Particle  2.3.4
GrainRandomBoxPacker.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 
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 
84 
86 
87  void setParticleGrainGen(ParticleGrainGen &particleGrainGen);
88 
89  void setParticleGrainGen(ParticleGrainGenPtr particleGrainGenPtr);
90 
91  GrainId getNextGrainId() const;
92 
94 
95  Grain &createAndInsertGrain(const Grain &grain);
96 
98 
100 
101  int getNumGrains() const;
102 
104 
106 
107  const GrainCollection &getGrainCollection() const;
108 
110 
111  virtual void generate();
112 
113  private:
115  };
116  }
117 }
118 
120 
121 #endif
esys::lsm::GrainCollection::GrainConstIterator
Definition: GrainCollection.h:71
esys::lsm::GrainRandomBoxPacker::getGrainIterator
GrainConstIterator getGrainIterator() const
Definition: GrainRandomBoxPacker.hpp:107
esys::lsm::GrainRandomBoxPacker::getNextGrainId
GrainId getNextGrainId() const
Definition: GrainRandomBoxPacker.hpp:153
esys::lsm::GrainRandomBoxPacker::GrainPoolPtr
GrainCollection::GrainPoolPtr GrainPoolPtr
Definition: GrainRandomBoxPacker.h:41
esys::lsm::GrainRandomBoxPacker::generateCubicPackingGrains
void generateCubicPackingGrains()
Definition: GrainRandomBoxPacker.hpp:182
esys::lsm::GrainRandomBoxPacker::generateRandomFillGrains
void generateRandomFillGrains()
Definition: GrainRandomBoxPacker.hpp:195
esys::lsm::GrainCollection::Grain
TmplGrain Grain
Definition: GrainCollection.h:33
GrainCollection.h
GrainRandomBoxPacker.hpp
esys::lsm::GrainRandomBoxPacker::Particle
Inherited::Particle Particle
Definition: GrainRandomBoxPacker.h:48
esys::lsm::GrainRandomBoxPacker::Grain
GrainCollection::Grain Grain
Definition: GrainRandomBoxPacker.h:38
esys::lsm::GrainRandomBoxPacker::ParticleGrainGen
Inherited::ParticleGenerator ParticleGrainGen
Definition: GrainRandomBoxPacker.h:46
esys::lsm::PlaneVector
std::vector< Plane3D > PlaneVector
Definition: GougeBlock3D.h:32
esys::lsm::GrainRandomBoxPacker::getNumGrains
int getNumGrains() const
Definition: GrainRandomBoxPacker.hpp:114
esys::lsm::BoundingBox
3D bounding box
Definition: BoundingBox.h:28
esys
Definition: CheckPointable.cpp:17
esys::lsm::GrainRandomBoxPacker::Inherited
TmplRndBoxPackerWrap< TmplParticleGrainGen >::RandomBoxPackerBase Inherited
Definition: GrainRandomBoxPacker.h:44
esys::lsm::GrainRandomBoxPacker::GrainCollection
TmplGrainCollection GrainCollection
Definition: GrainRandomBoxPacker.h:34
esys::lsm::GrainRandomBoxPacker::PlaneVector
Inherited::PlaneVector PlaneVector
Definition: GrainRandomBoxPacker.h:54
esys::lsm::GrainRandomBoxPacker::constructGrain
Grain & constructGrain()
Definition: GrainRandomBoxPacker.hpp:160
esys::lsm::GrainRandomBoxPacker::setParticleGrainGen
void setParticleGrainGen(ParticleGrainGen &particleGrainGen)
Definition: GrainRandomBoxPacker.hpp:135
esys::lsm::GrainRandomBoxPacker::getParticleGrainGen
ParticleGrainGen & getParticleGrainGen()
Definition: GrainRandomBoxPacker.hpp:121
esys::lsm::Grain::Id
long Id
Definition: Grain.h:36
esys::lsm::GrainRandomBoxPacker::GrainId
Grain::Id GrainId
Definition: GrainRandomBoxPacker.h:39
esys::lsm::GrainRandomBoxPacker::getGrainCollection
const GrainCollection & getGrainCollection() const
Definition: GrainRandomBoxPacker.hpp:86
esys::lsm::GrainRandomBoxPacker::StuffedParticleIterator
Inherited::StuffedParticleIterator StuffedParticleIterator
Definition: GrainRandomBoxPacker.h:55
esys::lsm::GrainRandomBoxPacker::ParticleGrainGenPtr
Inherited::ParticleGeneratorPtr ParticleGrainGenPtr
Definition: GrainRandomBoxPacker.h:47
esys::lsm::GrainRandomBoxPacker
Definition: GrainRandomBoxPacker.h:32
esys::lsm::BoolVector
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
esys::lsm::GrainRandomBoxPacker::m_grainCollectionPtr
GrainCollectionPtr m_grainCollectionPtr
Definition: GrainRandomBoxPacker.h:114
esys::lsm::GrainCollection::GrainIterator
Definition: GrainCollection.h:51
esys::lsm::GrainRandomBoxPacker::NTable
Inherited::NTable NTable
Definition: GrainRandomBoxPacker.h:49
esys::lsm::GrainRandomBoxPacker::generate
virtual void generate()
Definition: GrainRandomBoxPacker.hpp:211
RandomBoxPacker.h
esys::lsm::GrainRandomBoxPacker::ParticleVector
Inherited::ParticleVector ParticleVector
Definition: GrainRandomBoxPacker.h:51
esys::lsm::GrainRandomBoxPacker::ParticlePoolPtr
Inherited::ParticlePoolPtr ParticlePoolPtr
Definition: GrainRandomBoxPacker.h:53
esys::lsm::GrainRandomBoxPacker::GrainRandomBoxPacker
GrainRandomBoxPacker(ParticleGrainGenPtr particleGrainGenPtr, ParticlePoolPtr particlePoolPtr, NTablePtr nTablePtr, const BoundingBox &bBox, const BoolVector &periodicDimensions, double tolerance, double cubicPackRadius, int maxInsertionFailures)
Definition: GrainRandomBoxPacker.hpp:55
esys::lsm::GrainCollection::GrainPool
boost::object_pool< Grain > GrainPool
Definition: GrainCollection.h:40
esys::lsm::GrainRandomBoxPacker::GrainIterator
GrainCollection::GrainIterator GrainIterator
Definition: GrainRandomBoxPacker.h:36
esys::lsm::GrainCollection::GrainPoolPtr
boost::shared_ptr< GrainPool > GrainPoolPtr
Definition: GrainCollection.h:41
esys::lsm::GrainRandomBoxPacker::GrainCollectionPtr
boost::shared_ptr< GrainCollection > GrainCollectionPtr
Definition: GrainRandomBoxPacker.h:35
ParticleVector
std::vector< SimpleParticle > ParticleVector
Definition: SimpleNTable3D.h:22
esys::lsm::GrainRandomBoxPacker::NTablePtr
Inherited::NTablePtr NTablePtr
Definition: GrainRandomBoxPacker.h:50
esys::lsm::GrainRandomBoxPacker::createAndInsertGrain
Grain & createAndInsertGrain(const Grain &grain)
Definition: GrainRandomBoxPacker.hpp:167
esys::lsm::GrainRandomBoxPacker::GrainPool
GrainCollection::GrainPool GrainPool
Definition: GrainRandomBoxPacker.h:40
esys::lsm::GrainRandomBoxPacker::RandomBoxPackerBase
Inherited RandomBoxPackerBase
Definition: GrainRandomBoxPacker.h:45
esys::lsm::GrainRandomBoxPacker::GrainConstIterator
GrainCollection::GrainConstIterator GrainConstIterator
Definition: GrainRandomBoxPacker.h:37
esys::lsm::GrainRandomBoxPacker::ParticlePool
Inherited::ParticlePool ParticlePool
Definition: GrainRandomBoxPacker.h:52
esys::lsm::GrainRandomBoxPacker::~GrainRandomBoxPacker
virtual ~GrainRandomBoxPacker()
Definition: GrainRandomBoxPacker.hpp:80
GrainRandomBoxPacker.h