ESyS-Particle  2.3.4
SphereBlockGenerator.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 #ifndef __ESYS_LSM_SPHEREBLOCKGENERATOR
14 #define __ESYS_LSM_SPHEREBLOCKGENERATOR
15 
16 // --- project includes ---
19 
20 // --- STL includes ---
21 #include <set>
22 using std::set;
23 
24 namespace esys
25 {
26  namespace lsm
27  {
32  {
33  public:
34  // types
37  typedef set<int> IdSet;
38 
39  // functions
40  SphereBlockGenerator(NTable&,ParticlePool&,double,const Vec3&,double,double,double,int,int);
41  virtual ~SphereBlockGenerator();
42 
43  virtual void generate();
44  virtual void generateSeedParticles();
45  virtual void generateFillParticles();
46  virtual SimpleParticle generateParticle(const Vec3 &point);
47  virtual void insertParticle(const SimpleParticle&);
48  virtual double getRadius() const;
49  int getNextId();
50  size_t getNumParticles() const {return m_idSet.size();};
51  const BoundingBox getBBox() const;
52  virtual double getGridRadius() const;
53  virtual bool particleFits(const SimpleParticle &particle) const;
55  vector<SimpleParticle*> getClosestNeighbors(const SimpleParticle&,int);
56  bool findAFitWithSphere(SimpleParticle&, const vector<SimpleParticle*>&);
57  bool findAFit(SimpleParticle&, const vector<SimpleParticle*>&);
58  bool checkAFit(const SimpleParticle&);
59  Vec3 getAPoint();
60 
61  private:
63  double m_tol;
66  double m_radius;
67  double m_min_rad;
68  double m_max_rad;
70  int m_tag;
71  };
72  }
73 }
74 
75 #endif // __ESYS_LSM_SPHEREBLOCKGENERATOR
SimpleParticle::getRad
double getRad() const
Definition: SimpleParticle.hpp:70
esys::lsm::ParticleComparer
Definition: ParticleComparer.h:23
esys::lsm::SphereBlockGenerator::m_max_tries
int m_max_tries
Definition: SphereBlockGenerator.h:69
ParticleGenerator.h
esys::lsm::SphereBlockGenerator::ParticleIterator
NTable::ParticleIterator ParticleIterator
Definition: SphereBlockGenerator.h:36
Sphere3d.h
esys::lsm::SimpleParticleData::getID
Id getID() const
Definition: SimpleParticleData.hpp:109
esys::lsm::SphereBlockGenerator::checkAFit
bool checkAFit(const SimpleParticle &)
Definition: SphereBlockGenerator.cpp:261
esys::lsm::SphereBlockGenerator::getParticleIterator
ParticleIterator getParticleIterator()
Definition: SphereBlockGenerator.h:54
esys::lsm::CircularNeighbourTable::ParticleVector
Inherited::ParticleVector ParticleVector
Definition: CircularNeighbourTable.h:38
esys::lsm::SphereBlockGenerator::m_min_rad
double m_min_rad
Definition: SphereBlockGenerator.h:67
GridIterator.h
esys::lsm::ParticleGenerator::getNTable
NTable & getNTable()
Definition: ParticleGenerator.cpp:40
esys::lsm::SphereBlockGenerator::generateSeedParticles
virtual void generateSeedParticles()
Definition: SphereBlockGenerator.cpp:156
esys::lsm::SphereBlockGenerator::getBBox
const BoundingBox getBBox() const
Definition: SphereBlockGenerator.cpp:124
esys::lsm::ParticleGenerator::ParticlePool
boost::object_pool< SimpleParticle > ParticlePool
Definition: ParticleGenerator.h:33
esys::lsm::SphereBlockGenerator::m_tol
double m_tol
Definition: SphereBlockGenerator.h:63
esys::lsm::SphereBlockGenerator::findAFitWithSphere
bool findAFitWithSphere(SimpleParticle &, const vector< SimpleParticle * > &)
Definition: SphereBlockGenerator.cpp:191
esys::lsm::SphereBlockGenerator::particleFits
virtual bool particleFits(const SimpleParticle &particle) const
Definition: SphereBlockGenerator.cpp:113
SimpleParticle::getPos
const Vec3 & getPos() const
Definition: SimpleParticle.hpp:30
esys::lsm::SphereBlockGenerator::m_center
Vec3 m_center
Definition: SphereBlockGenerator.h:65
esys::lsm::SphereBlockGenerator::findAFit
bool findAFit(SimpleParticle &, const vector< SimpleParticle * > &)
Definition: SphereBlockGenerator.cpp:226
esys::lsm::SphereBlockGenerator::getNumParticles
size_t getNumParticles() const
Definition: SphereBlockGenerator.h:50
esys::lsm::SphereBlockGenerator::insertParticle
virtual void insertParticle(const SimpleParticle &)
Definition: SphereBlockGenerator.cpp:136
esys::lsm::ParticleGenerator::getParticlePool
ParticlePool & getParticlePool()
Definition: ParticleGenerator.cpp:50
SimpleParticle
Definition: SimpleParticle.h:25
esys::lsm::SphereBlockGenerator::generate
virtual void generate()
Definition: SphereBlockGenerator.cpp:147
Vec3::norm
VEC3_INLINE double norm() const
Definition: vec3.hpp:211
esys::lsm::BoundingBox
3D bounding box
Definition: BoundingBox.h:28
esys
Definition: CheckPointable.cpp:17
esys::lsm::SphereBlockGenerator::generateFillParticles
virtual void generateFillParticles()
Definition: SphereBlockGenerator.cpp:287
esys::lsm::SphereBlockGenerator::getClosestNeighbors
vector< SimpleParticle * > getClosestNeighbors(const SimpleParticle &, int)
Definition: SphereBlockGenerator.cpp:175
SimpleParticle.h
esys::lsm::SphereBlockGenerator::ParticleVector
NTable::ParticleVector ParticleVector
Definition: SphereBlockGenerator.h:35
esys::lsm::SphereBlockGenerator::getAPoint
Vec3 getAPoint()
Definition: SphereBlockGenerator.cpp:80
SphereBlockGenerator.h
esys::lsm::SphereBlockGenerator::generateParticle
virtual SimpleParticle generateParticle(const Vec3 &point)
Definition: SphereBlockGenerator.cpp:72
esys::lsm::CircularNeighbourTable::insert
void insert(Particle *pParticle)
Definition: CircularNeighbourTable.hpp:224
esys::lsm::SphereBlockGenerator::IdSet
set< int > IdSet
Definition: SphereBlockGenerator.h:37
esys::lsm::SphereBlockGenerator
Definition: SphereBlockGenerator.h:32
esys::lsm::CircularNeighbourTable::getNumParticles
size_t getNumParticles() const
Definition: CircularNeighbourTable.hpp:265
esys::lsm::SphereBlockGenerator::getGridRadius
virtual double getGridRadius() const
Definition: SphereBlockGenerator.cpp:105
esys::lsm::SphereBlockGenerator::m_idSet
IdSet m_idSet
Definition: SphereBlockGenerator.h:64
esys::lsm::SphereBlockGenerator::SphereBlockGenerator
SphereBlockGenerator(NTable &, ParticlePool &, double, const Vec3 &, double, double, double, int, int)
Definition: SphereBlockGenerator.cpp:40
esys::lsm::ParticleGenerator
Definition: ParticleGenerator.h:30
esys::lsm::SimpleParticleData::setTag
void setTag(const Tag &tag)
Definition: SimpleParticleData.hpp:129
esys::lsm::SphereBlockGenerator::m_tag
int m_tag
Definition: SphereBlockGenerator.h:70
Vec3
Definition: vec3.h:47
esys::lsm::bpu::iter
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
esys::lsm::ForwardIterator
Definition: StlIterator.h:30
esys::lsm::SphereBlockGenerator::m_particleVector
ParticleVector m_particleVector
Definition: SphereBlockGenerator.h:62
esys::lsm::SphereBlockGenerator::getRadius
virtual double getRadius() const
Definition: SphereBlockGenerator.cpp:97
SimpleParticle::moveTo
void moveTo(const Vec3 &v)
Definition: SimpleParticle.hpp:40
Sphere3D::FillIn
static bool FillIn(const Vec3 &, const Vec3 &, const Vec3 &, const Vec3 &, double, double, double, double, Vec3 &, double &)
Definition: Sphere3d.cpp:31
esys::lsm::SphereBlockGenerator::m_radius
double m_radius
Definition: SphereBlockGenerator.h:66
esys::lsm::GridIterator::hasNext
bool hasNext() const
Definition: GridIterator.h:207
esys::lsm::SphereBlockGenerator::~SphereBlockGenerator
virtual ~SphereBlockGenerator()
Definition: SphereBlockGenerator.cpp:55
esys::lsm::GridIterator::next
Vec3 next()
Definition: GridIterator.h:255
esys::lsm::NeighbourTable::getUniqueNeighbourVector
ParticleVector getUniqueNeighbourVector(const Vec3 &pt, double radius) const
Definition: NeighbourTable.hpp:206
esys::lsm::SphereBlockGenerator::getNextId
int getNextId()
Definition: SphereBlockGenerator.cpp:61
esys::lsm::SphereBlockGenerator::m_max_rad
double m_max_rad
Definition: SphereBlockGenerator.h:68
esys::lsm::GridIterator
Definition: GridIterator.h:29
esys::lsm::CircularNeighbourTable
Definition: CircularNeighbourTable.h:34
BoundingBox.h