ESyS-Particle  2.3.2
PackerGenerators.hpp
Go to the documentation of this file.
1 
2 // //
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 
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 }