ESyS-Particle  2.3.4
PackerGenerators.hpp
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 #include "Foundation/Rng.h"
15 
16 namespace esys
17 {
18  namespace lsm
19  {
20  template <typename TmplParticle>
22  : m_radius(radius)
23  {
24  }
25 
26  template <typename TmplParticle>
28  {
29  return m_radius;
30  }
31 
32  template <typename TmplParticle>
34  {
35  return this->getParticleRadius();
36  }
37 
38  template <typename TmplParticle>
40  {
41  return this->getParticleRadius();
42  }
43 
44  template <typename TmplParticle>
47  {
48  return Particle(posn, getParticleRadius());
49  }
50 
51  template <typename TmplParticle>
54  const Vec3 &posn,
55  const double &maxRadius
56  ) const
57  {
58  return getParticle(posn);
59  }
60 
61  template <typename TmplParticle>
63  const double &fitRadius
64  ) const
65  {
66  return (fitRadius == getParticleRadius());
67  }
68  //========================================================================
69  //========================================================================
70  //========================================================================
71  template <typename TmplParticle>
73  double minFitRadius,
74  double maxFitRadius
75  )
76  : m_minFitRadius(minFitRadius),
77  m_maxFitRadius(maxFitRadius)
78  {
79  }
80 
81  template <typename TmplParticle>
83  {
84  }
85 
86  template <typename TmplParticle>
88  {
89  return m_minFitRadius;
90  }
91 
92  template <typename TmplParticle>
94  {
95  return m_maxFitRadius;
96  }
97 
98  template <typename TmplParticle>
100  const double &fitRadius
101  ) const
102  {
103  return
104  (
105  (fitRadius >= this->getMinFitRadius())
106  &&
107  (fitRadius <= this->getMaxFitRadius())
108  );
109  }
110  //========================================================================
111  //========================================================================
112  //========================================================================
113  template <typename TmplParticle>
115  double minFitRadius,
116  double maxFitRadius
117  ) : Inherited(minFitRadius, maxFitRadius)
118  {
119  }
120 
121  template <typename TmplParticle>
123  {
124  return
125  this->getMinFitRadius()
126  +
127  (this->getMaxFitRadius()-this->getMinFitRadius())
128  *
130  }
131 
132  template <typename TmplParticle>
135  {
136  return Particle(posn, getRandomRadius());
137  }
138 
139  template <typename TmplParticle>
142  const Vec3 &posn,
143  double suggestedRadius
144  ) const
145  {
146  return getParticle(posn);
147  }
148  //========================================================================
149  //========================================================================
150  //========================================================================
151  template <typename TmplGrain>
153  double minGrainRadius,
154  double maxGrainRadius
155  ) : Inherited(minGrainRadius, maxGrainRadius)
156  {
157  }
158 
159  template <typename TmplGrain>
161  {
162  }
163 
164  template <typename TmplGrain>
166  {
167  return this->getMinFitRadius();
168  }
169 
170  template <typename TmplGrain>
172  {
173  return this->getMaxFitRadius();
174  }
175 
176  //========================================================================
177  //========================================================================
178  //========================================================================
179 
180  template <typename TmplGrain>
182  double minGrainRadius,
183  double maxGrainRadius
184  ) : Inherited(minGrainRadius, maxGrainRadius)
185  {
186  }
187 
188  template <typename TmplGrain>
190  {
191  return this->getMinGrainRadius();
192  }
193 
194  template <typename TmplGrain>
196  {
197  return this->getMaxGrainRadius();
198  }
199 
200  template <typename TmplGrain>
203  {
204  Grain g;
205  g.createParticle(p);
206  return g;
207  }
208  }
209 }
esys::lsm::rng::s_zeroOneUniform
DefaultUniformRng s_zeroOneUniform(0.0, 1.0)
Definition: Rng.h:77
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::RangeRadiusGen::RangeRadiusGen
RangeRadiusGen(double minFitRadius, double maxFitRadius)
Definition: PackerGenerators.hpp:72
Rng.h
esys::lsm::GrainRndRadiusGen::getMaxGrainRadius
const double & getMaxGrainRadius() const
Definition: PackerGenerators.hpp:171
esys::lsm::RangeRadiusGen::getMinFitRadius
const double & getMinFitRadius() const
Definition: PackerGenerators.hpp:87
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::GrainRndRadiusGen::~GrainRndRadiusGen
virtual ~GrainRndRadiusGen()
Definition: PackerGenerators.hpp:160
esys::lsm::ConstRadiusGen::isValidFitRadius
bool isValidFitRadius(const double &fitRadius) const
Definition: PackerGenerators.hpp:62
esys
Definition: CheckPointable.cpp:17
esys::lsm::GrainRndRadiusGen::Particle
Grain::Particle Particle
Definition: PackerGenerators.h:146
esys::lsm::RangeRadiusGen::isValidFitRadius
bool isValidFitRadius(const double &fitRadius) const
Definition: PackerGenerators.hpp:99
esys::lsm::RangeRadiusGen< TmplGrain::Particle >::Particle
TmplGrain::Particle 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
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::RndRadiusGen::RndRadiusGen
RndRadiusGen(double minFitRadius, double maxFitRadius)
Definition: PackerGenerators.hpp:114
esys::lsm::RndRadiusGen::getRandomRadius
double getRandomRadius() const
Definition: PackerGenerators.hpp:122