ESyS-Particle  2.3.4
PackerGenerators.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_LSMPACKERGENERATORS_H
15 #define ESYS_LSMPACKERGENERATORS_H
16 
17 #include "Foundation/vec3.h"
18 
19 namespace esys
20 {
21  namespace lsm
22  {
26  template <typename TmplParticle>
28  {
29  public:
30  typedef TmplParticle Particle;
31 
32  ConstRadiusGen(double radius);
33 
38  const double &getParticleRadius() const;
39 
44  const double &getMinFitRadius() const;
45 
50  const double &getMaxFitRadius() const;
51 
57  Particle getParticle(const Vec3 &posn) const;
58 
65  Particle getParticle(const Vec3 &posn, const double &maxRadius) const;
66 
70  bool isValidFitRadius(const double &fitRadius) const;
71 
72  private:
73  double m_radius;
74  };
75 
80  template <typename TmplParticle>
82  {
83  public:
84  typedef TmplParticle Particle;
85 
86  RangeRadiusGen(double minFitRadius, double maxFitRadius);
87 
88  virtual ~RangeRadiusGen();
89 
94  const double &getMinFitRadius() const;
95 
100  const double &getMaxFitRadius() const;
101 
105  bool isValidFitRadius(const double &fitRadius) const;
106 
107  private:
110  };
111 
116  template <typename TmplParticle>
117  class RndRadiusGen : public RangeRadiusGen<TmplParticle>
118  {
119  public:
121  typedef typename Inherited::Particle Particle;
122 
123  RndRadiusGen(
124  double minFitRadius,
125  double maxFitRadius
126  );
127 
131  double getRandomRadius() const;
132 
133  Particle getParticle(const Vec3 &posn) const;
134 
135  Particle getParticle(const Vec3 &posn, double suggestedRadius) const;
136 
137  private:
138  };
139 
140  template <typename TmplGrain>
141  class GrainRndRadiusGen : public RndRadiusGen<typename TmplGrain::Particle>
142  {
143  public:
145  typedef TmplGrain Grain;
146  typedef typename Grain::Particle Particle;
147 
148  GrainRndRadiusGen(double minGrainRadius, double maxGrainRadius);
149 
150  virtual ~GrainRndRadiusGen();
151 
152  const double &getMinGrainRadius() const;
153 
154  const double &getMaxGrainRadius() const;
155 
156  virtual Grain getGrain(const Particle &p) = 0;
157  };
158 
159  template <typename TmplGrain>
160  class SingleParticleGrainGen : public GrainRndRadiusGen<TmplGrain>
161  {
162  public:
164  typedef typename Inherited::Grain Grain;
165  typedef typename Grain::Particle Particle;
166 
167  SingleParticleGrainGen(double minGrainRadius, double maxGrainRadius);
168 
169  const double &getMinParticleRadius() const;
170 
171  const double &getMaxParticleRadius() const;
172 
173  virtual Grain getGrain(const Particle &p);
174  };
175  }
176 }
177 
179 
180 #endif
esys::lsm::ConstRadiusGen::getMaxFitRadius
const double & getMaxFitRadius() const
Definition: PackerGenerators.hpp:39
esys::lsm::ConstRadiusGen::getMinFitRadius
const double & getMinFitRadius() const
Definition: PackerGenerators.hpp:33
esys::lsm::ConstRadiusGen
Definition: PackerGenerators.h:28
PackerGenerators.hpp
esys::lsm::RangeRadiusGen::RangeRadiusGen
RangeRadiusGen(double minFitRadius, double maxFitRadius)
Definition: PackerGenerators.hpp:72
esys::lsm::GrainRndRadiusGen::getMaxGrainRadius
const double & getMaxGrainRadius() const
Definition: PackerGenerators.hpp:171
esys::lsm::SingleParticleGrainGen::Particle
Grain::Particle Particle
Definition: PackerGenerators.h:165
esys::lsm::GrainRndRadiusGen::getGrain
virtual Grain getGrain(const Particle &p)=0
esys::lsm::RangeRadiusGen::m_minFitRadius
double m_minFitRadius
Definition: PackerGenerators.h:108
esys::lsm::SingleParticleGrainGen
Definition: PackerGenerators.h:161
PackerGenerators.h
esys::lsm::RangeRadiusGen::getMinFitRadius
const double & getMinFitRadius() const
Definition: PackerGenerators.hpp:87
esys::lsm::GrainRndRadiusGen::Inherited
RndRadiusGen< typename TmplGrain::Particle > Inherited
Definition: PackerGenerators.h:144
esys::lsm::RndRadiusGen::Particle
Inherited::Particle Particle
Definition: PackerGenerators.h:121
esys::lsm::RangeRadiusGen::~RangeRadiusGen
virtual ~RangeRadiusGen()
Definition: PackerGenerators.hpp:82
esys::lsm::ConstRadiusGen::Particle
TmplParticle Particle
Definition: PackerGenerators.h:30
esys::lsm::SingleParticleGrainGen::getMinParticleRadius
const double & getMinParticleRadius() const
Definition: PackerGenerators.hpp:189
esys::lsm::SingleParticleGrainGen::getMaxParticleRadius
const double & getMaxParticleRadius() const
Definition: PackerGenerators.hpp:195
esys::lsm::RangeRadiusGen
Definition: PackerGenerators.h:82
esys::lsm::RndRadiusGen::getParticle
Particle getParticle(const Vec3 &posn) const
Definition: PackerGenerators.hpp:134
esys::lsm::GrainRndRadiusGen::Grain
TmplGrain Grain
Definition: PackerGenerators.h:145
esys::lsm::ConstRadiusGen::ConstRadiusGen
ConstRadiusGen(double radius)
Definition: PackerGenerators.hpp:21
esys::lsm::SingleParticleGrainGen::Inherited
GrainRndRadiusGen< TmplGrain > Inherited
Definition: PackerGenerators.h:163
esys::lsm::ConstRadiusGen::m_radius
double m_radius
Definition: PackerGenerators.h:73
esys::lsm::GrainRndRadiusGen::~GrainRndRadiusGen
virtual ~GrainRndRadiusGen()
Definition: PackerGenerators.hpp:160
esys::lsm::Grain::Particle
Inherited::Particle Particle
Definition: Grain.h:31
esys::lsm::ConstRadiusGen::isValidFitRadius
bool isValidFitRadius(const double &fitRadius) const
Definition: PackerGenerators.hpp:62
esys
Definition: CheckPointable.cpp:17
esys::lsm::GrainRndRadiusGen
Definition: PackerGenerators.h:142
esys::lsm::GrainRndRadiusGen::Particle
Grain::Particle Particle
Definition: PackerGenerators.h:146
esys::lsm::RndRadiusGen::Inherited
RangeRadiusGen< TmplParticle > Inherited
Definition: PackerGenerators.h:120
esys::lsm::RangeRadiusGen::isValidFitRadius
bool isValidFitRadius(const double &fitRadius) const
Definition: PackerGenerators.hpp:99
esys::lsm::RangeRadiusGen::Particle
TmplParticle Particle
Definition: PackerGenerators.h:84
esys::lsm::SingleParticleGrainGen::getGrain
virtual Grain getGrain(const Particle &p)
Definition: PackerGenerators.hpp:202
esys::lsm::RndRadiusGen
Definition: PackerGenerators.h:118
esys::lsm::SingleParticleGrainGen::SingleParticleGrainGen
SingleParticleGrainGen(double minGrainRadius, double maxGrainRadius)
Definition: PackerGenerators.hpp:181
esys::lsm::ConstRadiusGen::getParticleRadius
const double & getParticleRadius() const
Definition: PackerGenerators.hpp:27
esys::lsm::ConstRadiusGen::getParticle
Particle getParticle(const Vec3 &posn) const
Definition: PackerGenerators.hpp:46
Vec3
Definition: vec3.h:47
esys::lsm::RangeRadiusGen::getMaxFitRadius
const double & getMaxFitRadius() const
Definition: PackerGenerators.hpp:93
vec3.h
esys::lsm::GrainRndRadiusGen::GrainRndRadiusGen
GrainRndRadiusGen(double minGrainRadius, double maxGrainRadius)
Definition: PackerGenerators.hpp:152
esys::lsm::SingleParticleGrainGen::Grain
Inherited::Grain Grain
Definition: PackerGenerators.h:164
esys::lsm::GrainRndRadiusGen::getMinGrainRadius
const double & getMinGrainRadius() const
Definition: PackerGenerators.hpp:165
esys::lsm::RangeRadiusGen::m_maxFitRadius
double m_maxFitRadius
Definition: PackerGenerators.h:109
esys::lsm::RndRadiusGen::RndRadiusGen
RndRadiusGen(double minFitRadius, double maxFitRadius)
Definition: PackerGenerators.hpp:114
esys::lsm::RndRadiusGen::getRandomRadius
double getRandomRadius() const
Definition: PackerGenerators.hpp:122