ESyS-Particle  2.3
GougeConfig.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 
14 #ifndef ESYS_LSMGOUGECONFIG_H
15 #define ESYS_LSMGOUGECONFIG_H
16 
17 #include "Foundation/BoundingBox.h"
19 #include "Geometry/Plane3D.h"
24 
25 #include <boost/shared_ptr.hpp>
26 
27 #include <vector>
28 #include <float.h>
29 
30 namespace esys
31 {
32  namespace lsm
33  {
34  typedef std::vector<Plane3D> PlaneVector;
36  {
37  XY,
38  XZ,
39  YZ
40  };
41 
43  {
44  public:
45  inline ParticleRndPackPrms();
46 
47  inline ParticleRndPackPrms(double size, double minRadius, double maxRadius);
48 
49  inline ~ParticleRndPackPrms();
50 
51  inline double getSize() const;
52 
53  inline double getMinParticleRadius() const;
54 
55  inline double getMaxParticleRadius() const;
56 
57  private:
58  double m_size;
61  };
62 
63  template <typename TmplParticleGrainGen>
65  {
66  public:
67  typedef TmplParticleGrainGen ParticleGrainGen;
69 
71 
73  double size,
74  ParticleGrainGen &particleGrainGen,
75  int connectionTag=0
76  );
77 
78  double getMinGrainRadius();
79 
80  double getMaxGrainRadius();
81 
82  ParticleGrainGen &getParticleGrainGen() const;
83 
84  int getConnectionTag() const;
85  private:
86  ParticleGrainGen *m_pParticleGrainGen;
88  };
89 
90  typedef std::vector<bool> BoolVector;
91  typedef std::vector<BoundingBox> BoundingBoxVector;
92 
93  class PackingInfo
94  {
95  public:
96  inline PackingInfo(
97  const BoundingBox &bBox,
98  const BoolVector &periodicDimensions,
99  Orientation orientation,
100  double minRadius,
101  double maxRadius
102  );
103 
104  inline bool is3d() const;
105 
106  inline void initialiseFitPlaneVector();
107 
108  inline const BoundingBox &getBBox() const;
109 
110  inline const PlaneVector &getFitPlaneVector() const;
111 
112  inline double getMinParticleRadius() const;
113 
114  inline double getMaxParticleRadius() const;
115 
116  inline const BoolVector &getPeriodicDimensions() const;
117  private:
119  BoolVector m_periodicDimensions;
121  double m_minRadius;
122  double m_maxRadius;
123  PlaneVector m_fitPlaneVector;
124  };
125 
126  template <typename TmplParticleGrainGen>
128  {
129  public:
130  typedef TmplParticleGrainGen ParticleGrainGen;
132 
134  const BoundingBox &bBox,
135  const BoolVector &periodicDimensions,
136  Orientation orientation,
137  ParticleGrainGen &particleGrainGen
138  );
139 
140  double getMinGrainRadius() const;
141 
142  double getMaxGrainRadius() const;
143 
144  ParticleGrainGen &getParticleGrainGen() const;
145 
146  private:
147  ParticleGrainGen *m_pParticleGrainGen;
148  };
149 
150  typedef std::vector<PackingInfo> PackingInfoVector;
151 
152  template <typename TmplParticleGrainGen>
154  {
155  public:
156  typedef TmplParticleGrainGen ParticleGrainGen;
160  typedef std::vector<GougePackInfo> GougePackingInfoVector;
161 
162  GougeConfigPrms();
167  const BoundingBox &bBox,
168  double padRadius,
169  Orientation orientation,
170  const ParticleRndPackPrms &faultRegionPrms,
171  const GrainRPackPrms &gougeRegionPrms,
172  const BoolVector &peridicDimensions=BoolVector(3, false),
173  int maxInsertionFailures=100,
174  double tolerance = DBL_EPSILON*128,
175  double connectionTolerance = DBL_EPSILON*128*10,
176  int blockConnectionTag = 0
177  );
178 
180 
181  double getTolerance() const;
182 
183  double getConnectionTolerance() const;
184 
185  const BoundingBox &getBBox() const;
186 
187  int getMaxInsertionFailures() const;
188 
189  double getRegularBlockRadius() const;
190 
191  double getFaultMinRadius() const;
192 
193  double getFaultMaxRadius() const;
194 
195  double getGougeMinRadius() const;
196 
197  double getGougeMaxRadius() const;
198 
199  int getGougeConnectionTag() const;
200 
201  int getBlockConnectionTag() const;
202 
203  const BoolVector &getPeriodicDimensions() const;
204 
205  BoundingBoxVector getRegularBBoxVector() const;
206 
207  GougePackingInfoVector getGougePackingInfoVector() const;
208 
209  PackingInfoVector getFaultPackingInfoVector() const;
210 
211  BoundingBox cutFromCentre(double d1, double d2) const;
212 
213  Orientation getOrientation() const;
214 
215  int getOrientationIndex() const;
216 
217  double getOrientationSize() const;
218 
219  double getMaxRadius() const;
220 
221  double getMinRadius() const;
222 
223  bool is2d() const;
224 
225  private:
227  double m_padRadius;
229  ParticleRndPackPrms m_faultPrms;
230  GrainRPackPrms m_gougePrms;
233  double m_tolerance;
236  };
237 
241  template <
242  typename TmplGrainRandomBoxPacker,
243  typename TmplParticleRandomBoxPacker,
244  typename TmplConnection
245  >
247  {
248  public:
249  typedef TmplConnection Connection;
250  typedef TmplGrainRandomBoxPacker GrainRandomPacker;
251  typedef boost::shared_ptr<GrainRandomPacker> GrainRandomPackerPtr;
256  typedef typename GrainRandomPacker::ParticleIterator ParticleIterator;
257  typedef typename GrainRandomPacker::ParticleConstIterator ParticleConstIterator;
258  typedef typename GrainRandomPacker::ParticleCollection ParticleCollection;
259  typedef typename GrainRandomPacker::Grain Grain;
263 
264  typedef typename GrainRandomPacker::PackerBase APacker;
265  typedef typename GrainRandomPacker::BoxPackerBase ABoxPacker;
266 
270 
271  typedef TmplParticleRandomBoxPacker RndBoxPacker;
274 
277  typedef boost::shared_ptr<APacker> GeneratorPtr;
278  typedef std::vector<GeneratorPtr> GeneratorPtrVector;
279  typedef std::vector<GrainRandomPackerPtr> GrainRndPackerPtrVector;
284 
286  {
287  public:
288  bool operator()(const Connection &i1, const Connection &i2) const
289  {
290  return
291  (
292  (i1.getP1Id() < i2.getP1Id())
293  ||
294  (
295  (i1.getP1Id() == i2.getP1Id())
296  &&
297  (
298  (i1.getP2Id() < i2.getP2Id())
299  ||
300  (
301  (i1.getP2Id() == i2.getP2Id())
302  &&
303  (i1.getTag() < i2.getTag())
304  )
305  )
306  )
307  );
308  }
309 
310  bool operator()(const Connection *i1, const Connection *i2) const
311  {
312  return (*this)(*i1, *i2);
313  }
314  };
315  typedef std::set<Connection,ConnectionCmp> ConnectionSet;
317 
318  GougeConfig(const GougeConfPrms &prms);
319 
320  virtual ~GougeConfig();
321 
322  virtual void generate();
323 
324  int getNumParticles() const;
325 
326  int getNumGrains() const;
327 
328  int getNumConnections() const;
329 
330  const GrainRndPackerPtrVector &getGougeGeneratorVector() const;
331 
332  GrainRndPackerPtrVector &getGougeGeneratorVector();
333 
334  const GeneratorPtrVector &getFaultGeneratorVector() const;
335 
336  bool isGougeParticle(const Particle &particle) const;
337 
339  const Particle &p1,
340  const Particle &p2
341  ) const;
342 
343  virtual void write(std::ostream &oStream) const;
344 
345  void writeToFile(const std::string &fileName) const;
346 
347  void tagGougeParticles(int tag);
348 
349  void tagRndBlockParticles(int tag);
350 
352  int minDrivingTag,
353  int maxDrivingTag,
354  double distanceFromBBoxEdge
355  );
356 
357  virtual void createConnectionSet();
358 
359  const ConnectionSet &getConnectionSet() const;
360 
361  GrainCollection getGrainCollection();
362 
363  ParticleCollection getParticleCollection();
364 
365  template <typename TmplVisitor>
366  void visitParticles(TmplVisitor &visitor)
367  {
368  for (
369  typename GeneratorPtrVector::iterator it = m_genPtrVector.begin();
370  it != m_genPtrVector.end();
371  it++
372  )
373  {
374  ParticleIterator particleIt = (*it)->getParticleIterator();
375  while (particleIt.hasNext()) {
376  particleIt.next().visit(visitor);
377  }
378  }
379  }
380 
381  template <typename TmplVisitor>
382  void visitParticles(const TmplVisitor &visitor) const
383  {
384  for (
385  typename GeneratorPtrVector::const_iterator it = m_genPtrVector.begin();
386  it != m_genPtrVector.end();
387  it++
388  )
389  {
390  ParticleIterator particleIt = (*it)->getParticleIterator();
391  while (particleIt.hasNext()) {
392  particleIt.next().visit(visitor);
393  }
394  }
395  }
396 
397  template <typename TmplVisitor>
398  void visitConnections(TmplVisitor &visitor) const
399  {
400  const ConnectionSet &connectionSet = getConnectionSet();
401  for (
402  typename ConnectionSet::const_iterator it = connectionSet.begin();
403  it != connectionSet.end();
404  it++
405  )
406  {
407  it->visit(visitor);
408  }
409  }
410 
411  const GougeConfPrms &getPrms() const
412  {
413  return m_prms;
414  }
415 
416  class IdCompare
417  {
418  public:
419  bool operator()(const Particle *p1, const Particle *p2) const
420  {
421  return (p1->getID() < p2->getID());
422  }
423  };
424 
426  {
427  public:
428  inline ConnectionValidator(const GougeConfig &gougeBlock, double tolerance)
429  : m_pGougeConfig(&gougeBlock),
430  m_tolerance(tolerance)
431  {
432  }
433 
434  inline bool isValid(const Particle &p1, const Particle &p2) const
435  {
436  return
437  (
438  (p1.getID() < p2.getID())
439  &&
440  ((p1.getPos() - p2.getPos()).norm() < (m_tolerance + (p1.getRad() + p2.getRad())))
441  &&
443  &&
445  );
446  }
447 
448  private:
450  double m_tolerance;
451  };
452 
454  {
455  public:
456  GeoParticleWriter(std::ostream &oStream, int precision)
457  : m_pOStream(&oStream),
458  m_precision(precision)
459  {
460  }
461 
462  void visitParticle(const Particle &particle) const
463  {
464  (*m_pOStream)
465  << std::setprecision(m_precision)
466  << particle.getPos() << " "
467  << particle.getRad() << " "
468  << particle.getID() << " "
469  << particle.getTag() << "\n";
470  }
471 
472  private:
473  std::ostream *m_pOStream;
475  };
476 
478  {
479  public:
480  GeoConnectionWriter(std::ostream &oStream)
481  : m_pOStream(&oStream)
482  {
483  }
484 
485  void visitBasicInteraction(const BasicInteraction &connection)
486  {
487  (*m_pOStream)
488  << connection.first() << " "
489  << connection.second() << " "
490  << 0 << "\n";
491  }
492 
493  private:
494  std::ostream *m_pOStream;
496  };
497 
498  protected:
499  NTablePtr m_nTablePtr;
500  GougeConfPrms m_prms;
501  ConnectionSet m_connectionSet;
502  GrainRndPackerPtrVector m_gougeGenPtrVector;
503  GeneratorPtrVector m_genPtrVector;
504  ParticlePoolPtr m_particlePoolPtr;
505  GrainPoolPtr m_grainPoolPtr;
506 
509  virtual void createGougeConfigGenerators();
510 
511  private:
512  GeneratorPtrVector m_regularGenPtrVector;
513  GeneratorPtrVector m_faultGenPtrVector;
514  };
515  }
516 }
517 
518 #include "Geometry/GougeConfig.hpp"
519 
520 #endif
GrainCollection getGrainCollection()
Definition: GougeConfig.hpp:976
Definition: GrainCollection.h:70
Orientation
Definition: GougeBlock3D.h:33
GrainCollection::GrainPool GrainPool
Definition: GrainRandomBoxPacker.h:40
double getFaultMinRadius() const
Definition: GougeConfig.hpp:419
double m_connectionTolerance
Definition: GougeConfig.h:234
const GeneratorPtrVector & getFaultGeneratorVector() const
Definition: GougeConfig.hpp:822
GrainRandomPacker::GrainCollection GrainCollection
Definition: GougeConfig.h:262
GougeConfigPrms< ParticleGrainGen > GougeConfPrms
Definition: GougeConfig.h:253
int m_maxInsertionFailures
Definition: GougeConfig.h:232
const BoolVector & getPeriodicDimensions() const
Definition: GougeConfig.hpp:328
Definition: GougeBlock3D.h:37
BoundingBox m_bBox
Definition: GougeConfig.h:226
GrainRandomPacker::ParticleIterator ParticleIterator
Definition: GougeConfig.h:256
virtual void createConnectionSet()
Definition: GougeConfig.hpp:870
RndBoxPacker::ParticleGenerator RndRadiusGen
Definition: GougeConfig.h:272
GrainRandomPacker::ParticlePool ParticlePool
Definition: GougeConfig.h:280
GrainPoolPtr m_grainPoolPtr
Definition: GougeConfig.h:505
BoolVector m_periodicDimensions
Definition: GougeBlock3D.h:83
GrainRandomPacker::PackerBase APacker
Definition: GougeConfig.h:264
std::vector< PackingInfo > PackingInfoVector
Definition: GougeBlock3D.h:90
double getMinParticleRadius() const
Definition: GougeConfig.hpp:185
Definition: GougeConfig.h:153
bool operator()(const Connection &i1, const Connection &i2) const
Definition: GougeConfig.h:288
const PlaneVector & getFitPlaneVector() const
Definition: GougeBlock3D.cpp:92
int m_connectionTag
Definition: GougeConfig.h:87
TmplParticleGrainGen ParticleGrainGen
Definition: GougeConfig.h:67
void createFaultBlockGenerators()
Definition: GougeConfig.hpp:703
Definition: GrainCollection.h:50
ParticleGrainGen & getParticleGrainGen() const
Definition: GougeConfig.hpp:222
double getGougeMaxRadius() const
Definition: GougeConfig.hpp:437
GrainRandomPacker::GrainConstIterator GrainConstIterator
Definition: GougeConfig.h:261
int getMaxInsertionFailures() const
Definition: GougeConfig.hpp:322
PackingInfo(const BoundingBox &bBox, const BoolVector &periodicDimensions, Orientation orientation, double minRadius, double maxRadius)
Definition: GougeBlock3D.cpp:32
Id first() const
Definition: BasicInteraction.h:42
GrainCollection::GrainPoolPtr GrainPoolPtr
Definition: GrainRandomBoxPacker.h:41
NTablePtr m_nTablePtr
Definition: GougeConfig.h:499
bool operator()(const Connection *i1, const Connection *i2) const
Definition: GougeConfig.h:310
int getOrientationIndex() const
Definition: GougeConfig.hpp:352
double m_minRadius
Definition: GougeBlock3D.h:85
Definition: GougeConfig.h:425
std::vector< Plane3D > PlaneVector
Definition: GougeBlock3D.h:32
ParticleGrainGen * m_pParticleGrainGen
Definition: GougeConfig.h:86
GrainRandomPacker::ParticlePoolPtr ParticlePoolPtr
Definition: GougeConfig.h:281
double m_padRadius
Definition: GougeConfig.h:227
virtual ~GougeConfig()
Definition: GougeConfig.hpp:774
GrainRandomPacker::NTablePtr NTablePtr
Definition: GougeConfig.h:276
DistConnections< Particle, Connection > ConnectionFinder
Definition: GougeConfig.h:316
ParticleGrainGen & getParticleGrainGen() const
Definition: GougeConfig.hpp:131
boost::shared_ptr< ParticleGenerator > ParticleGeneratorPtr
Definition: CubicBoxPacker.h:32
Inherited::ParticleGeneratorPtr ParticleGeneratorPtr
Definition: RandomBoxPacker.h:118
TmplGrainRandomBoxPacker GrainRandomPacker
Definition: GougeConfig.h:250
ParticleRndPackPrms m_faultPrms
Definition: GougeConfig.h:229
Definition: GougeConfig.h:453
BoolVector m_periodicDimensions
Definition: GougeConfig.h:231
int getBlockConnectionTag() const
Definition: GougeConfig.hpp:316
GrainRandomPacker::ParticleGrainGen ParticleGrainGen
Definition: GougeConfig.h:252
void visitBasicInteraction(const BasicInteraction &connection)
Definition: GougeConfig.h:485
TmplConnection Connection
Definition: GougeConfig.h:249
GeoParticleWriter(std::ostream &oStream, int precision)
Definition: GougeConfig.h:456
Definition: CheckPointable.cpp:16
GrainRndPackPrms()
Definition: GougeConfig.hpp:198
Class to represent the common part of a pair interaction, i.e. the IDs of the particles and the inter...
Definition: BasicInteraction.h:27
RegBoxPacker::ParticleGeneratorPtr RegRadiusGenPtr
Definition: GougeConfig.h:269
GrainRndPackerPtrVector m_gougeGenPtrVector
Definition: GougeConfig.h:502
int getNumConnections() const
Definition: GougeConfig.hpp:626
boost::shared_ptr< GrainRandomPacker > GrainRandomPackerPtr
Definition: GougeConfig.h:251
std::vector< GeneratorPtr > GeneratorPtrVector
Definition: GougeConfig.h:278
Definition: CubicBoxPacker.h:28
void visitConnections(TmplVisitor &visitor) const
Definition: GougeConfig.h:398
Definition: DistConnections.h:35
Definition: GougeConfig.h:64
void tagGougeParticles(int tag)
Definition: GougeConfig.hpp:1084
PlaneVector m_fitPlaneVector
Definition: GougeBlock3D.h:87
Definition: GougeBlock3D.h:36
const GrainRndPackerPtrVector & getGougeGeneratorVector() const
Definition: GougeConfig.hpp:808
std::set< Connection, ConnectionCmp > ConnectionSet
Definition: GougeConfig.h:315
std::vector< GrainRandomPackerPtr > GrainRndPackerPtrVector
Definition: GougeConfig.h:279
ParticlePoolPtr m_particlePoolPtr
Definition: GougeConfig.h:504
Inherited::ParticleGenerator ParticleGenerator
Definition: RandomBoxPacker.h:117
void visitParticles(TmplVisitor &visitor)
Definition: GougeConfig.h:366
TmplParticleGrainGen ParticleGrainGen
Definition: GougeConfig.h:130
Orientation m_orientation
Definition: GougeBlock3D.h:84
std::vector< BoundingBox > BoundingBoxVector
Definition: GougeBlock3D.h:55
Id second() const
Definition: BasicInteraction.h:44
3D bounding box
Definition: BoundingBox.h:27
double getTolerance() const
Definition: GougeConfig.hpp:340
Inherited::Particle Particle
Definition: GrainRandomBoxPacker.h:48
Definition: GougeBlock3D.h:57
double getMinGrainRadius()
Definition: GougeConfig.hpp:244
const BoundingBox & getBBox() const
Definition: GougeConfig.hpp:304
GrainRandomPacker::Grain Grain
Definition: GougeConfig.h:259
void createRegularBlockGenerators()
Definition: GougeConfig.hpp:672
double getConnectionTolerance() const
Definition: GougeConfig.hpp:346
Definition: GougeConfig.h:477
std::ostream * m_pOStream
Definition: GougeConfig.h:494
GougePackingInfoVector getGougePackingInfoVector() const
Definition: GougeConfig.hpp:482
Definition: GougeConfig.h:42
double m_maxParticleRadius
Definition: GougeConfig.h:60
BoundingBox cutFromCentre(double d1, double d2) const
Definition: GougeConfig.hpp:382
double m_size
Definition: GougeConfig.h:58
bool is3d() const
Definition: GougeBlock3D.cpp:47
Inherited::ParticleGenerator ParticleGrainGen
Definition: GrainRandomBoxPacker.h:46
void initialiseFitPlaneVector()
Definition: GougeBlock3D.cpp:52
TmplParticleGrainGen ParticleGrainGen
Definition: GougeConfig.h:156
TmplGrainCollection GrainCollection
Definition: GrainRandomBoxPacker.h:34
ParticleCollection getParticleCollection()
Definition: GougeConfig.hpp:956
ConstRadiusGen< Particle > RegRadiusGen
Definition: GougeConfig.h:267
double getFaultMaxRadius() const
Definition: GougeConfig.hpp:425
double getMaxParticleRadius() const
Definition: GougeConfig.hpp:99
GeneratorPtrVector m_genPtrVector
Definition: GougeConfig.h:503
double getMinRadius() const
Definition: GougeConfig.hpp:577
Inherited::NTable NTable
Definition: GrainRandomBoxPacker.h:49
Inherited::NTablePtr NTablePtr
Definition: GrainRandomBoxPacker.h:50
~GougeConfigPrms()
Definition: GougeConfig.hpp:299
const GougeConfPrms & getPrms() const
Definition: GougeConfig.h:411
const BoolVector & getPeriodicDimensions() const
Definition: GougeBlock3D.cpp:107
GougePackingInfo(const BoundingBox &bBox, const BoolVector &periodicDimensions, Orientation orientation, ParticleGrainGen &particleGrainGen)
Definition: GougeConfig.hpp:112
ParticleGrainGen * m_pParticleGrainGen
Definition: GougeConfig.h:147
GrainRandomPacker::ParticleConstIterator ParticleConstIterator
Definition: GougeConfig.h:257
Orientation m_orientation
Definition: GougeConfig.h:228
int m_precision
Definition: GougeConfig.h:495
Inherited::Grain Grain
Definition: PackerPy.h:186
ConnectionSet m_connectionSet
Definition: GougeConfig.h:501
GeoConnectionWriter(std::ostream &oStream)
Definition: GougeConfig.h:480
GrainRPackPrms m_gougePrms
Definition: GougeConfig.h:230
Inherited::ParticlePool ParticlePool
Definition: GrainRandomBoxPacker.h:52
void visitParticles(const TmplVisitor &visitor) const
Definition: GougeConfig.h:382
GrainRPackPrms::Inherited ParticleRndPackPrms
Definition: GougeConfig.h:158
GougeConfig(const GougeConfPrms &prms)
Definition: GougeConfig.hpp:632
GrainRandomPacker::BoxPackerBase ABoxPacker
Definition: GougeConfig.h:265
Definition: PackerGenerators.h:27
ConnectionValidator(const GougeConfig &gougeBlock, double tolerance)
Definition: GougeConfig.h:428
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
void visitParticle(const Particle &particle) const
Definition: GougeConfig.h:462
Definition: GougeConfig.h:127
ParticleRndPackPrms()
Definition: GougeConfig.hpp:159
double getOrientationSize() const
Definition: GougeConfig.hpp:443
double getMaxRadius() const
Definition: GougeConfig.hpp:567
double getRegularBlockRadius() const
Definition: GougeConfig.hpp:413
BoundingBoxVector getRegularBBoxVector() const
Definition: GougeConfig.hpp:454
Orientation getOrientation() const
Definition: GougeConfig.hpp:334
GrainRandomPacker::GrainIterator GrainIterator
Definition: GougeConfig.h:260
double getSize() const
Definition: GougeConfig.hpp:180
std::vector< GougePackInfo > GougePackingInfoVector
Definition: GougeConfig.h:160
GougePackingInfo< ParticleGrainGen > GougePackInfo
Definition: GougeConfig.h:159
double getGougeMinRadius() const
Definition: GougeConfig.hpp:431
BoundingBox m_bBox
Definition: GougeBlock3D.h:82
double getMaxParticleRadius() const
Definition: GougeConfig.hpp:190
GrainRandomPacker::ParticleCollection ParticleCollection
Definition: GougeConfig.h:258
const ConnectionSet & getConnectionSet() const
Definition: GougeConfig.hpp:997
double m_tolerance
Definition: GougeConfig.h:233
const GougeConfig * m_pGougeConfig
Definition: GougeConfig.h:449
GrainRandomPacker::NTable NTable
Definition: GougeConfig.h:275
virtual void write(std::ostream &oStream) const
Definition: GougeConfig.hpp:1003
int m_blockConnectionTag
Definition: GougeConfig.h:235
double getMaxGrainRadius()
Definition: GougeConfig.hpp:250
GrainRandomPacker::GrainPool GrainPool
Definition: GougeConfig.h:282
GougeConfPrms::GougePackingInfoVector GougePackingInfoVector
Definition: GougeConfig.h:254
double getMaxGrainRadius() const
Definition: GougeConfig.hpp:152
GougeConfigPrms()
Definition: GougeConfig.hpp:258
RndBoxPacker::ParticleGeneratorPtr RndRadiusGenPtr
Definition: GougeConfig.h:273
bool areInDifferentFaultBlocks(const Particle &p1, const Particle &p2) const
Definition: GougeConfig.hpp:828
void writeToFile(const std::string &fileName) const
Definition: GougeConfig.hpp:800
double m_minParticleRadius
Definition: GougeConfig.h:59
bool isValid(const Particle &p1, const Particle &p2) const
Definition: GougeConfig.h:434
~ParticleRndPackPrms()
Definition: GougeConfig.hpp:176
GeneratorPtrVector m_regularGenPtrVector
Definition: GougeConfig.h:512
bool is2d() const
Definition: GougeConfig.hpp:587
PackingInfo Inherited
Definition: GougeConfig.h:131
GougeConfPrms m_prms
Definition: GougeConfig.h:500
Definition: GougeConfig.h:246
TmplParticleRandomBoxPacker RndBoxPacker
Definition: GougeConfig.h:271
virtual void createGougeConfigGenerators()
Definition: GougeConfig.hpp:740
const BoundingBox & getBBox() const
Definition: GougeBlock3D.cpp:87
Inherited::ParticlePoolPtr ParticlePoolPtr
Definition: GrainRandomBoxPacker.h:53
int getNumGrains() const
Definition: GougeConfig.hpp:610
double m_maxRadius
Definition: GougeBlock3D.h:86
GrainRandomPacker::Particle Particle
Definition: GougeConfig.h:255
int m_precision
Definition: GougeConfig.h:474
GeneratorPtrVector m_faultGenPtrVector
Definition: GougeConfig.h:513
virtual void generate()
Definition: GougeConfig.hpp:779
int getNumParticles() const
Definition: GougeConfig.hpp:595
bool isGougeParticle(const Particle &particle) const
Definition: GougeConfig.hpp:853
void tagRndBlockParticles(int tag)
Definition: GougeConfig.hpp:1101
std::ostream * m_pOStream
Definition: GougeConfig.h:473
boost::shared_ptr< APacker > GeneratorPtr
Definition: GougeConfig.h:277
GrainRandomPacker::GrainPoolPtr GrainPoolPtr
Definition: GougeConfig.h:283
double m_tolerance
Definition: GougeConfig.h:450
CubicBoxPacker< RegRadiusGen, ABoxPacker > RegBoxPacker
Definition: GougeConfig.h:268
Definition: GougeConfig.h:285
Definition: GougeBlock3D.h:35
int getConnectionTag() const
Definition: GougeConfig.hpp:229
bool operator()(const Particle *p1, const Particle *p2) const
Definition: GougeConfig.h:419
ParticleRndPackPrms Inherited
Definition: GougeConfig.h:68
double getMinParticleRadius() const
Definition: GougeConfig.hpp:94
int getGougeConnectionTag() const
Definition: GougeConfig.hpp:310
void tagDrivingPlateParticles(int minDrivingTag, int maxDrivingTag, double distanceFromBBoxEdge)
Definition: GougeConfig.hpp:1117
PackingInfoVector getFaultPackingInfoVector() const
Definition: GougeConfig.hpp:507
double getMinGrainRadius() const
Definition: GougeConfig.hpp:146
Definition: GougeConfig.h:416
GrainRndPackPrms< ParticleGrainGen > GrainRPackPrms
Definition: GougeConfig.h:157