ESyS-Particle  2.3
RandomBlockGenerator.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_LSMRANDOMBLOCKGENERATOR_H
15 #define ESYS_LSMRANDOMBLOCKGENERATOR_H
16 
18 #include <Geometry/Plane3D.h>
19 
20 #include <vector>
21 #include <boost/shared_ptr.hpp>
22 
23 namespace esys
24 {
25  namespace lsm
26  {
27  class ParticleFitter;
28 
29  typedef std::vector<Plane3D> PlaneVector;
30  typedef boost::shared_ptr<ParticleFitter> FitterPtr;
31  typedef std::vector<FitterPtr> FitterPtrVector;
32 
37  {
38  public:
40  NTable &nTable,
41  ParticlePool &particlePool,
42  const BoundingBox &bBox,
43  const BoolVector &periodicDimensions,
44  double tolerance,
45  double minSphereRadius,
46  double maxSphereRadius,
47  const PlaneVector &fitPlaneVector,
48  int maxInsertionFailures
49  );
50 
51  virtual ~RandomBlockGenerator();
52 
53  virtual bool particleFits(const SimpleParticle &particle) const;
54 
55  virtual void generate();
56 
57  double getRandom(double min, double max) const;
58 
59  virtual double getRadius() const;
60 
61  virtual double getGridRadius() const;
62 
63  Vec3 getRandomPoint() const;
64 
65  ParticleVector getClosestNeighbors(const SimpleParticle& particle, int numClosest);
66 
67  int getMaxInsertionFailures() const;
68 
69  FitterPtrVector getFitterPtrVector();
70 
71  void generateFillParticles();
72 
73  const PlaneVector &getFitPlaneVector() const;
74 
75  Plane3D getClosestFitPlane(const SimpleParticle &particle) const;
76 
77  private:
78  double m_minRadius;
79  double m_maxRadius;
80  PlaneVector m_fitPlaneVector;
82  };
83  }
84 }
85 
86 #endif
PlaneVector m_fitPlaneVector
Definition: RandomBlockGenerator.h:80
FitterPtrVector getFitterPtrVector()
Definition: RandomBlockGenerator.cpp:152
Definition: vec3.h:46
Definition: BlockGenerator.h:32
virtual double getRadius() const
Definition: RandomBlockGenerator.cpp:67
Plane3D getClosestFitPlane(const SimpleParticle &particle) const
Definition: RandomBlockGenerator.cpp:98
double getRandom(double min, double max) const
Definition: RandomBlockGenerator.cpp:54
boost::shared_ptr< ParticleFitter > FitterPtr
Definition: RandomBlockGenerator.h:30
std::vector< Plane3D > PlaneVector
Definition: GougeBlock3D.h:32
virtual double getGridRadius() const
Definition: RandomBlockGenerator.cpp:62
Class representing a Plane3D.
Definition: Plane3D.h:28
double m_minRadius
Definition: RandomBlockGenerator.h:78
Definition: CheckPointable.cpp:16
ParticleVector getClosestNeighbors(const SimpleParticle &particle, int numClosest)
Definition: RandomBlockGenerator.cpp:119
Vec3 getRandomPoint() const
Definition: RandomBlockGenerator.cpp:109
3D bounding box
Definition: BoundingBox.h:27
Definition: RandomBlockGenerator.h:36
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
virtual bool particleFits(const SimpleParticle &particle) const
Definition: RandomBlockGenerator.cpp:135
Definition: CircularNeighbourTable.h:33
virtual ~RandomBlockGenerator()
Definition: RandomBlockGenerator.cpp:50
RandomBlockGenerator(NTable &nTable, ParticlePool &particlePool, const BoundingBox &bBox, const BoolVector &periodicDimensions, double tolerance, double minSphereRadius, double maxSphereRadius, const PlaneVector &fitPlaneVector, int maxInsertionFailures)
Definition: RandomBlockGenerator.cpp:31
NTable::ParticleVector ParticleVector
Definition: BlockGenerator.h:75
virtual void generate()
Definition: RandomBlockGenerator.cpp:223
const PlaneVector & getFitPlaneVector() const
Definition: RandomBlockGenerator.cpp:93
std::vector< FitterPtr > FitterPtrVector
Definition: RandomBlockGenerator.h:31
int m_maxInsertionFailures
Definition: RandomBlockGenerator.h:81
Definition: SimpleParticle.h:24
double m_maxRadius
Definition: RandomBlockGenerator.h:79
boost::object_pool< SimpleParticle > ParticlePool
Definition: ParticleGenerator.h:33
int getMaxInsertionFailures() const
Definition: RandomBlockGenerator.cpp:147
void generateFillParticles()
Definition: RandomBlockGenerator.cpp:174