ESyS-Particle  2.3.4
RandomBlockGenerator.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_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 
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;
82  };
83  }
84 }
85 
86 #endif
SimpleParticle::getRad
double getRad() const
Definition: SimpleParticle.hpp:70
esys::lsm::ParticleComparer
Definition: ParticleComparer.h:23
esys::lsm::BlockGenerator::generateParticle
virtual SimpleParticle generateParticle(const Vec3 &point)
Definition: BlockGenerator.cpp:137
esys::lsm::BlockGenerator::getBBox
const BoundingBox & getBBox() const
Definition: BlockGenerator.cpp:41
esys::lsm::RandomBlockGenerator::generate
virtual void generate()
Definition: RandomBlockGenerator.cpp:223
esys::lsm::RandomBlockGenerator::m_minRadius
double m_minRadius
Definition: RandomBlockGenerator.h:78
Plane3D.h
esys::lsm::BlockGenerator::is2d
bool is2d() const
Definition: BlockGenerator.cpp:61
Console::Info
Console & Info()
set verbose level of next message to "inf"
Sphere3d.h
RandomBlockGenerator.h
GridIterator.h
SimpleNTable.h
BlockGenerator.h
esys::lsm::RandomBlockGenerator::getRandom
double getRandom(double min, double max) const
Definition: RandomBlockGenerator.cpp:54
esys::lsm::ParticleGenerator::getNTable
NTable & getNTable()
Definition: ParticleGenerator.cpp:40
esys::lsm::BlockGenerator
Definition: BlockGenerator.h:33
esys::lsm::BlockGenerator::getTolerance
double getTolerance() const
Definition: BlockGenerator.cpp:56
esys::lsm::ParticleGenerator::ParticlePool
boost::object_pool< SimpleParticle > ParticlePool
Definition: ParticleGenerator.h:33
esys::lsm::PlaneComparer::PlaneComparer
PlaneComparer(const SimpleParticle &particle)
Definition: RandomBlockGenerator.cpp:75
esys::lsm::Plane3D
::Plane3D Plane3D
Definition: Plane3D.h:60
esys::lsm::ThreeDParticleFitter
Definition: ParticleFitter.h:167
SimpleParticle::getPos
const Vec3 & getPos() const
Definition: SimpleParticle.hpp:30
esys::lsm::PlaneComparer::operator()
bool operator()(const Plane3D &plane1, const Plane3D &plane2) const
Definition: RandomBlockGenerator.cpp:80
SimpleParticle::isValid
bool isValid() const
Definition: SimpleParticle.hpp:80
esys::lsm::BoundingBox::getMaxPt
const Vec3 & getMaxPt() const
Definition: BoundingBox.hpp:45
esys::lsm::RandomBlockGenerator::m_maxInsertionFailures
int m_maxInsertionFailures
Definition: RandomBlockGenerator.h:81
console.h
esys::lsm::PlaneComparer
Definition: RandomBlockGenerator.cpp:73
esys::lsm::RandomBlockGenerator::RandomBlockGenerator
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
Plane3D
Class representing a Plane3D.
Definition: Plane3D.h:29
SimpleParticle
Definition: SimpleParticle.h:25
esys::lsm::PlaneVector
std::vector< Plane3D > PlaneVector
Definition: GougeBlock3D.h:32
esys::lsm::RandomBlockGenerator::getGridRadius
virtual double getGridRadius() const
Definition: RandomBlockGenerator.cpp:62
esys::lsm::FitterPtr
boost::shared_ptr< ParticleFitter > FitterPtr
Definition: RandomBlockGenerator.h:30
esys::lsm::BoundingBox
3D bounding box
Definition: BoundingBox.h:28
esys
Definition: CheckPointable.cpp:17
esys::lsm::ParticleFitter::INVALID
static const SimpleParticle INVALID
Definition: ParticleFitter.h:45
Plane3D::sep
virtual double sep(const Vec3 &) const
Definition: Plane3D.cpp:87
esys::lsm::RandomBlockGenerator::m_maxRadius
double m_maxRadius
Definition: RandomBlockGenerator.h:79
esys::lsm::RandomBlockGenerator::generateFillParticles
void generateFillParticles()
Definition: RandomBlockGenerator.cpp:174
SimpleParticle.h
esys::lsm::ThreeDPlaneParticleFitter
Definition: ParticleFitter.h:422
esys::lsm::BoundingBox::getMinPt
const Vec3 & getMinPt() const
Definition: BoundingBox.hpp:40
esys::lsm::StringUtil::toString
std::string toString(const TmplData &data)
Definition: StringUtil.h:128
esys::lsm::BlockGenerator::particleFits
virtual bool particleFits(const SimpleParticle &particle) const
Definition: BlockGenerator.cpp:119
esys::lsm::RandomBlockGenerator::getFitterPtrVector
FitterPtrVector getFitterPtrVector()
Definition: RandomBlockGenerator.cpp:152
esys::lsm::RandomBlockGenerator::m_fitPlaneVector
PlaneVector m_fitPlaneVector
Definition: RandomBlockGenerator.h:80
esys::lsm::RandomBlockGenerator::getRandomPoint
Vec3 getRandomPoint() const
Definition: RandomBlockGenerator.cpp:109
esys::lsm::BoolVector
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
Vec3
Definition: vec3.h:47
esys::lsm::BlockGenerator::insertParticle
void insertParticle(const SimpleParticle &particle)
Definition: BlockGenerator.cpp:124
esys::lsm::TwoDPlaneParticleFitter
Definition: ParticleFitter.h:333
esys::lsm::RandomBlockGenerator::getFitPlaneVector
const PlaneVector & getFitPlaneVector() const
Definition: RandomBlockGenerator.cpp:93
esys::lsm::RandomBlockGenerator::getClosestNeighbors
ParticleVector getClosestNeighbors(const SimpleParticle &particle, int numClosest)
Definition: RandomBlockGenerator.cpp:119
esys::lsm::RandomBlockGenerator::~RandomBlockGenerator
virtual ~RandomBlockGenerator()
Definition: RandomBlockGenerator.cpp:50
esys::lsm::RandomBlockGenerator::getRadius
virtual double getRadius() const
Definition: RandomBlockGenerator.cpp:67
esys::lsm::RandomBlockGenerator::getMaxInsertionFailures
int getMaxInsertionFailures() const
Definition: RandomBlockGenerator.cpp:147
esys::lsm::TwoDParticleFitter
Definition: ParticleFitter.h:251
esys::lsm::MoveToSurfaceFitter
Definition: ParticleFitter.h:109
esys::lsm::BlockGenerator::generateSeedParticles
virtual void generateSeedParticles()
Definition: BlockGenerator.cpp:142
esys::lsm::RandomBlockGenerator::particleFits
virtual bool particleFits(const SimpleParticle &particle) const
Definition: RandomBlockGenerator.cpp:135
esys::lsm::BoundingBox::getSizes
Vec3 getSizes() const
Definition: BoundingBox.hpp:78
ParticleFitter.h
esys::lsm::NeighbourTable::getUniqueNeighbourVector
ParticleVector getUniqueNeighbourVector(const Vec3 &pt, double radius) const
Definition: NeighbourTable.hpp:206
esys::lsm::PlaneComparer::m_pParticle
const SimpleParticle * m_pParticle
Definition: RandomBlockGenerator.cpp:90
console
Console console
Definition: console.cpp:25
esys::lsm::RandomBlockGenerator::getClosestFitPlane
Plane3D getClosestFitPlane(const SimpleParticle &particle) const
Definition: RandomBlockGenerator.cpp:98
esys::lsm::RandomBlockGenerator
Definition: RandomBlockGenerator.h:37
esys::lsm::BlockGenerator::ParticleVector
NTable::ParticleVector ParticleVector
Definition: BlockGenerator.h:75
esys::lsm::FitterPtrVector
std::vector< FitterPtr > FitterPtrVector
Definition: RandomBlockGenerator.h:31
esys::lsm::CircularNeighbourTable
Definition: CircularNeighbourTable.h:34