ESyS-Particle  2.3
SphereBlockGenerator.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 #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:
62  ParticleVector m_particleVector;
63  double m_tol;
64  IdSet m_idSet;
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
virtual ~SphereBlockGenerator()
Definition: SphereBlockGenerator.cpp:55
Definition: vec3.h:46
NTable::ParticleVector ParticleVector
Definition: SphereBlockGenerator.h:35
double m_min_rad
Definition: SphereBlockGenerator.h:67
double m_radius
Definition: SphereBlockGenerator.h:66
Vec3 getAPoint()
Definition: SphereBlockGenerator.cpp:80
virtual void generateFillParticles()
Definition: SphereBlockGenerator.cpp:287
NTable::ParticleIterator ParticleIterator
Definition: SphereBlockGenerator.h:36
virtual void generate()
Definition: SphereBlockGenerator.cpp:147
Inherited::ParticleVector ParticleVector
Definition: CircularNeighbourTable.h:38
Vec3 m_center
Definition: SphereBlockGenerator.h:65
size_t getNumParticles() const
Definition: SphereBlockGenerator.h:50
virtual bool particleFits(const SimpleParticle &particle) const
Definition: SphereBlockGenerator.cpp:113
Definition: CheckPointable.cpp:16
bool findAFit(SimpleParticle &, const vector< SimpleParticle * > &)
Definition: SphereBlockGenerator.cpp:226
SphereBlockGenerator(NTable &, ParticlePool &, double, const Vec3 &, double, double, double, int, int)
Definition: SphereBlockGenerator.cpp:40
int getNextId()
Definition: SphereBlockGenerator.cpp:61
3D bounding box
Definition: BoundingBox.h:27
IdSet m_idSet
Definition: SphereBlockGenerator.h:64
virtual SimpleParticle generateParticle(const Vec3 &point)
Definition: SphereBlockGenerator.cpp:72
ParticleVector m_particleVector
Definition: SphereBlockGenerator.h:62
double m_tol
Definition: SphereBlockGenerator.h:63
virtual void insertParticle(const SimpleParticle &)
Definition: SphereBlockGenerator.cpp:136
const BoundingBox getBBox() const
Definition: SphereBlockGenerator.cpp:124
Definition: StlIterator.h:29
Definition: ParticleGenerator.h:29
ParticleIterator getParticleIterator()
Definition: SphereBlockGenerator.h:54
bool checkAFit(const SimpleParticle &)
Definition: SphereBlockGenerator.cpp:261
Definition: SphereBlockGenerator.h:31
Definition: CircularNeighbourTable.h:33
bool findAFitWithSphere(SimpleParticle &, const vector< SimpleParticle * > &)
Definition: SphereBlockGenerator.cpp:191
double m_max_rad
Definition: SphereBlockGenerator.h:68
virtual double getRadius() const
Definition: SphereBlockGenerator.cpp:97
virtual double getGridRadius() const
Definition: SphereBlockGenerator.cpp:105
int m_tag
Definition: SphereBlockGenerator.h:70
int m_max_tries
Definition: SphereBlockGenerator.h:69
Definition: SimpleParticle.h:24
boost::object_pool< SimpleParticle > ParticlePool
Definition: ParticleGenerator.h:33
virtual void generateSeedParticles()
Definition: SphereBlockGenerator.cpp:156
vector< SimpleParticle * > getClosestNeighbors(const SimpleParticle &, int)
Definition: SphereBlockGenerator.cpp:175
set< int > IdSet
Definition: SphereBlockGenerator.h:37