Go to the documentation of this file.
14 #ifndef ESYS_LSMGOUGECONFIG_H
15 #define ESYS_LSMGOUGECONFIG_H
25 #include <boost/shared_ptr.hpp>
63 template <
typename TmplParticleGrainGen>
126 template <
typename TmplParticleGrainGen>
152 template <
typename TmplParticleGrainGen>
173 int maxInsertionFailures=100,
174 double tolerance = DBL_EPSILON*128,
175 double connectionTolerance = DBL_EPSILON*128*10,
176 int blockConnectionTag = 0
242 typename TmplGrainRandomBoxPacker,
243 typename TmplParticleRandomBoxPacker,
244 typename TmplConnection
264 typedef typename GrainRandomPacker::PackerBase
APacker;
265 typedef typename GrainRandomPacker::BoxPackerBase
ABoxPacker;
292 (i1.getP1Id() < i2.getP1Id())
295 (i1.getP1Id() == i2.getP1Id())
298 (i1.getP2Id() < i2.getP2Id())
301 (i1.getP2Id() == i2.getP2Id())
303 (i1.getTag() < i2.getTag())
312 return (*
this)(*i1, *i2);
343 virtual void write(std::ostream &oStream)
const;
345 void writeToFile(
const std::string &fileName)
const;
354 double distanceFromBBoxEdge
365 template <
typename TmplVisitor>
369 typename GeneratorPtrVector::iterator it =
m_genPtrVector.begin();
375 while (particleIt.hasNext()) {
376 particleIt.next().visit(visitor);
381 template <
typename TmplVisitor>
385 typename GeneratorPtrVector::const_iterator it =
m_genPtrVector.begin();
391 while (particleIt.hasNext()) {
392 particleIt.next().visit(visitor);
397 template <
typename TmplVisitor>
402 typename ConnectionSet::const_iterator it = connectionSet.begin();
403 it != connectionSet.end();
421 return (p1->getID() < p2->getID());
438 (p1.getID() < p2.getID())
440 ((p1.getPos() - p2.getPos()).norm() < (
m_tolerance + (p1.getRad() + p2.getRad())))
466 << particle.getPos() <<
" "
467 << particle.getRad() <<
" "
468 << particle.getID() <<
" "
469 << particle.getTag() <<
"\n";
488 << connection.
first() <<
" "
489 << connection.
second() <<
" "
ParticleGrainGen * m_pParticleGrainGen
Definition: GougeConfig.h:147
double getMaxParticleRadius() const
Definition: GougeConfig.hpp:99
GrainRandomPacker::Particle Particle
Definition: GougeConfig.h:255
int getNumParticles() const
Definition: GougeConfig.hpp:595
Definition: GrainCollection.h:71
GrainRndPackPrms< ParticleGrainGen > GrainRPackPrms
Definition: GougeConfig.h:157
GrainRPackPrms m_gougePrms
Definition: GougeConfig.h:230
double getGougeMinRadius() const
Definition: GougeConfig.hpp:431
GrainRandomPacker::GrainConstIterator GrainConstIterator
Definition: GougeConfig.h:261
const BoundingBox & getBBox() const
Definition: GougeConfig.hpp:304
GrainCollection::GrainPoolPtr GrainPoolPtr
Definition: GrainRandomBoxPacker.h:41
@ XY
Definition: GougeBlock3D.h:35
boost::shared_ptr< APacker > GeneratorPtr
Definition: GougeConfig.h:277
Definition: PackerGenerators.h:28
TmplConnection Connection
Definition: GougeConfig.h:249
GrainRandomPacker::ParticlePool ParticlePool
Definition: GougeConfig.h:280
GeneratorPtrVector m_genPtrVector
Definition: GougeConfig.h:503
Orientation m_orientation
Definition: GougeBlock3D.h:84
GougePackingInfoVector getGougePackingInfoVector() const
Definition: GougeConfig.hpp:482
int getOrientationIndex() const
Definition: GougeConfig.hpp:352
bool isGougeParticle(const Particle &particle) const
Definition: GougeConfig.hpp:853
GougePackingInfo(const BoundingBox &bBox, const BoolVector &periodicDimensions, Orientation orientation, ParticleGrainGen &particleGrainGen)
Definition: GougeConfig.hpp:112
GeoConnectionWriter(std::ostream &oStream)
Definition: GougeConfig.h:480
const GougeConfig * m_pGougeConfig
Definition: GougeConfig.h:449
GeneratorPtrVector m_faultGenPtrVector
Definition: GougeConfig.h:513
Orientation
Definition: GougeBlock3D.h:34
virtual void write(std::ostream &oStream) const
Definition: GougeConfig.hpp:1003
boost::shared_ptr< GrainRandomPacker > GrainRandomPackerPtr
Definition: GougeConfig.h:251
GrainRandomPacker::ParticleConstIterator ParticleConstIterator
Definition: GougeConfig.h:257
double m_maxParticleRadius
Definition: GougeConfig.h:60
PackingInfoVector getFaultPackingInfoVector() const
Definition: GougeConfig.hpp:507
virtual void createConnectionSet()
Definition: GougeConfig.hpp:870
double m_padRadius
Definition: GougeConfig.h:227
TmplParticleRandomBoxPacker RndBoxPacker
Definition: GougeConfig.h:271
void visitConnections(TmplVisitor &visitor) const
Definition: GougeConfig.h:398
GrainPoolPtr m_grainPoolPtr
Definition: GougeConfig.h:505
int getBlockConnectionTag() const
Definition: GougeConfig.hpp:316
double getRegularBlockRadius() const
Definition: GougeConfig.hpp:413
double getTolerance() const
Definition: GougeConfig.hpp:340
TmplGrainRandomBoxPacker GrainRandomPacker
Definition: GougeConfig.h:250
int getConnectionTag() const
Definition: GougeConfig.hpp:229
const GeneratorPtrVector & getFaultGeneratorVector() const
Definition: GougeConfig.hpp:822
DistConnections< Particle, Connection > ConnectionFinder
Definition: GougeConfig.h:316
bool isValid(const Particle &p1, const Particle &p2) const
Definition: GougeConfig.h:434
void visitParticles(const TmplVisitor &visitor) const
Definition: GougeConfig.h:382
double getMinGrainRadius()
Definition: GougeConfig.hpp:244
double getOrientationSize() const
Definition: GougeConfig.hpp:443
void tagGougeParticles(int tag)
Definition: GougeConfig.hpp:1084
Definition: GougeConfig.h:43
@ XZ
Definition: GougeBlock3D.h:36
GougeConfig(const GougeConfPrms &prms)
Definition: GougeConfig.hpp:632
GrainRandomPacker::GrainPoolPtr GrainPoolPtr
Definition: GougeConfig.h:283
Inherited::Particle Particle
Definition: GrainRandomBoxPacker.h:48
void writeToFile(const std::string &fileName) const
Definition: GougeConfig.hpp:800
ParticleGrainGen * m_pParticleGrainGen
Definition: GougeConfig.h:86
virtual ~GougeConfig()
Definition: GougeConfig.hpp:774
std::ostream * m_pOStream
Definition: GougeConfig.h:494
GrainRandomPacker::Grain Grain
Definition: GougeConfig.h:259
const BoundingBox & getBBox() const
GrainRandomPacker::NTablePtr NTablePtr
Definition: GougeConfig.h:276
std::vector< GeneratorPtr > GeneratorPtrVector
Definition: GougeConfig.h:278
PackingInfo Inherited
Definition: GougeConfig.h:131
const BoolVector & getPeriodicDimensions() const
bool areInDifferentFaultBlocks(const Particle &p1, const Particle &p2) const
Definition: GougeConfig.hpp:828
Inherited::ParticleGenerator ParticleGrainGen
Definition: GrainRandomBoxPacker.h:46
std::vector< Plane3D > PlaneVector
Definition: GougeBlock3D.h:32
TmplParticleGrainGen ParticleGrainGen
Definition: GougeConfig.h:67
Id first() const
Definition: BasicInteraction.h:42
ConnectionSet m_connectionSet
Definition: GougeConfig.h:501
int m_maxInsertionFailures
Definition: GougeConfig.h:232
NTablePtr m_nTablePtr
Definition: GougeConfig.h:499
double getMaxRadius() const
Definition: GougeConfig.hpp:567
GrainRandomPacker::ParticleIterator ParticleIterator
Definition: GougeConfig.h:256
const GougeConfPrms & getPrms() const
Definition: GougeConfig.h:411
double getFaultMaxRadius() const
Definition: GougeConfig.hpp:425
double getGougeMaxRadius() const
Definition: GougeConfig.hpp:437
int getGougeConnectionTag() const
Definition: GougeConfig.hpp:310
RndBoxPacker::ParticleGenerator RndRadiusGen
Definition: GougeConfig.h:272
Definition: GougeBlock3D.h:58
ConstRadiusGen< Particle > RegRadiusGen
Definition: GougeConfig.h:267
3D bounding box
Definition: BoundingBox.h:28
Definition: CheckPointable.cpp:17
Id second() const
Definition: BasicInteraction.h:44
BoundingBox m_bBox
Definition: GougeBlock3D.h:82
Class to represent the common part of a pair interaction, i.e. the IDs of the particles and the inter...
Definition: BasicInteraction.h:28
std::set< Connection, ConnectionCmp > ConnectionSet
Definition: GougeConfig.h:315
void visitParticles(TmplVisitor &visitor)
Definition: GougeConfig.h:366
const ConnectionSet & getConnectionSet() const
Definition: GougeConfig.hpp:997
virtual void generate()
Definition: GougeConfig.hpp:779
TmplGrainCollection GrainCollection
Definition: GrainRandomBoxPacker.h:34
double m_tolerance
Definition: GougeConfig.h:233
Orientation m_orientation
Definition: GougeConfig.h:228
double m_minParticleRadius
Definition: GougeConfig.h:59
virtual void createGougeConfigGenerators()
Definition: GougeConfig.hpp:740
~GougeConfigPrms()
Definition: GougeConfig.hpp:299
double m_tolerance
Definition: GougeConfig.h:450
void visitBasicInteraction(const BasicInteraction &connection)
Definition: GougeConfig.h:485
Definition: GougeConfig.h:454
Definition: GougeConfig.h:478
Definition: DistConnections.h:36
void tagDrivingPlateParticles(int minDrivingTag, int maxDrivingTag, double distanceFromBBoxEdge)
Definition: GougeConfig.hpp:1117
Definition: GougeConfig.h:286
@ YZ
Definition: GougeBlock3D.h:37
double getMaxGrainRadius() const
Definition: GougeConfig.hpp:152
Definition: GougeConfig.h:128
GrainRndPackPrms()
Definition: GougeConfig.hpp:198
GougeConfigPrms()
Definition: GougeConfig.hpp:258
void createRegularBlockGenerators()
Definition: GougeConfig.hpp:672
Inherited::ParticleGeneratorPtr ParticleGeneratorPtr
Definition: RandomBoxPacker.h:118
double m_connectionTolerance
Definition: GougeConfig.h:234
double getMinParticleRadius() const
Definition: GougeConfig.hpp:185
GrainRandomPacker::GrainIterator GrainIterator
Definition: GougeConfig.h:260
TmplParticleGrainGen ParticleGrainGen
Definition: GougeConfig.h:156
std::vector< BoundingBox > BoundingBoxVector
Definition: GougeBlock3D.h:55
GrainRandomPacker::GrainCollection GrainCollection
Definition: GougeConfig.h:262
bool operator()(const Particle *p1, const Particle *p2) const
Definition: GougeConfig.h:419
double m_size
Definition: GougeConfig.h:58
void visitParticle(const Particle &particle) const
Definition: GougeConfig.h:462
BoolVector m_periodicDimensions
Definition: GougeConfig.h:231
GrainRandomPacker::NTable NTable
Definition: GougeConfig.h:275
CubicBoxPacker< RegRadiusGen, ABoxPacker > RegBoxPacker
Definition: GougeConfig.h:268
ParticleRndPackPrms()
Definition: GougeConfig.hpp:159
double getMaxParticleRadius() const
Definition: GougeConfig.hpp:190
bool operator()(const Connection &i1, const Connection &i2) const
Definition: GougeConfig.h:288
ParticleCollection getParticleCollection()
Definition: GougeConfig.hpp:956
ParticleRndPackPrms m_faultPrms
Definition: GougeConfig.h:229
int m_precision
Definition: GougeConfig.h:474
double m_minRadius
Definition: GougeBlock3D.h:85
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
const GrainRndPackerPtrVector & getGougeGeneratorVector() const
Definition: GougeConfig.hpp:808
int getNumConnections() const
Definition: GougeConfig.hpp:626
Definition: GrainCollection.h:51
boost::shared_ptr< ParticleGenerator > ParticleGeneratorPtr
Definition: CubicBoxPacker.h:32
BoolVector m_periodicDimensions
Definition: GougeBlock3D.h:83
Inherited::NTable NTable
Definition: GrainRandomBoxPacker.h:49
~ParticleRndPackPrms()
Definition: GougeConfig.hpp:176
double getMaxGrainRadius()
Definition: GougeConfig.hpp:250
int m_connectionTag
Definition: GougeConfig.h:87
GougeConfigPrms< ParticleGrainGen > GougeConfPrms
Definition: GougeConfig.h:253
double getSize() const
Definition: GougeConfig.hpp:180
GrainRandomPacker::ParticleGrainGen ParticleGrainGen
Definition: GougeConfig.h:252
void tagRndBlockParticles(int tag)
Definition: GougeConfig.hpp:1101
Definition: GougeConfig.h:154
GougeConfPrms m_prms
Definition: GougeConfig.h:500
int getNumGrains() const
Definition: GougeConfig.hpp:610
Definition: CubicBoxPacker.h:29
ParticlePoolPtr m_particlePoolPtr
Definition: GougeConfig.h:504
Inherited::ParticlePoolPtr ParticlePoolPtr
Definition: GrainRandomBoxPacker.h:53
GougePackingInfo< ParticleGrainGen > GougePackInfo
Definition: GougeConfig.h:159
GeoParticleWriter(std::ostream &oStream, int precision)
Definition: GougeConfig.h:456
GougeConfPrms::GougePackingInfoVector GougePackingInfoVector
Definition: GougeConfig.h:254
GrainRandomPacker::BoxPackerBase ABoxPacker
Definition: GougeConfig.h:265
void initialiseFitPlaneVector()
GeneratorPtrVector m_regularGenPtrVector
Definition: GougeConfig.h:512
GrainRandomPacker::PackerBase APacker
Definition: GougeConfig.h:264
RegBoxPacker::ParticleGeneratorPtr RegRadiusGenPtr
Definition: GougeConfig.h:269
Definition: GougeConfig.h:247
Inherited::ParticleGenerator ParticleGenerator
Definition: RandomBoxPacker.h:117
double getMinParticleRadius() const
Definition: GougeConfig.hpp:94
int m_blockConnectionTag
Definition: GougeConfig.h:235
GrainCollection getGrainCollection()
Definition: GougeConfig.hpp:976
double getMinRadius() const
Definition: GougeConfig.hpp:577
void createFaultBlockGenerators()
Definition: GougeConfig.hpp:703
std::vector< GrainRandomPackerPtr > GrainRndPackerPtrVector
Definition: GougeConfig.h:279
const PlaneVector & getFitPlaneVector() const
ParticleGrainGen & getParticleGrainGen() const
Definition: GougeConfig.hpp:131
GrainRandomPacker::ParticleCollection ParticleCollection
Definition: GougeConfig.h:258
GrainRandomPacker::ParticlePoolPtr ParticlePoolPtr
Definition: GougeConfig.h:281
ParticleRndPackPrms Inherited
Definition: GougeConfig.h:68
bool is2d() const
Definition: GougeConfig.hpp:587
Definition: GougeConfig.h:65
ConnectionValidator(const GougeConfig &gougeBlock, double tolerance)
Definition: GougeConfig.h:428
GrainRndPackerPtrVector m_gougeGenPtrVector
Definition: GougeConfig.h:502
bool operator()(const Connection *i1, const Connection *i2) const
Definition: GougeConfig.h:310
BoundingBox cutFromCentre(double d1, double d2) const
Definition: GougeConfig.hpp:382
double m_maxRadius
Definition: GougeBlock3D.h:86
Definition: GougeConfig.h:426
Inherited::NTablePtr NTablePtr
Definition: GrainRandomBoxPacker.h:50
const BoolVector & getPeriodicDimensions() const
Definition: GougeConfig.hpp:328
GrainCollection::GrainPool GrainPool
Definition: GrainRandomBoxPacker.h:40
int getMaxInsertionFailures() const
Definition: GougeConfig.hpp:322
PlaneVector m_fitPlaneVector
Definition: GougeBlock3D.h:87
std::ostream * m_pOStream
Definition: GougeConfig.h:473
Orientation getOrientation() const
Definition: GougeConfig.hpp:334
double getFaultMinRadius() const
Definition: GougeConfig.hpp:419
Inherited::ParticlePool ParticlePool
Definition: GrainRandomBoxPacker.h:52
GrainRandomPacker::GrainPool GrainPool
Definition: GougeConfig.h:282
std::vector< GougePackInfo > GougePackingInfoVector
Definition: GougeConfig.h:160
TmplParticleGrainGen ParticleGrainGen
Definition: GougeConfig.h:130
BoundingBox m_bBox
Definition: GougeConfig.h:226
RndBoxPacker::ParticleGeneratorPtr RndRadiusGenPtr
Definition: GougeConfig.h:273
ParticleGrainGen & getParticleGrainGen() const
Definition: GougeConfig.hpp:222
double getConnectionTolerance() const
Definition: GougeConfig.hpp:346
int m_precision
Definition: GougeConfig.h:495
PackingInfo(const BoundingBox &bBox, const BoolVector &periodicDimensions, Orientation orientation, double minRadius, double maxRadius)
GrainRPackPrms::Inherited ParticleRndPackPrms
Definition: GougeConfig.h:158
Inherited::Grain Grain
Definition: PackerPy.h:186
double getMinGrainRadius() const
Definition: GougeConfig.hpp:146
BoundingBoxVector getRegularBBoxVector() const
Definition: GougeConfig.hpp:454
Definition: GougeConfig.h:417
std::vector< PackingInfo > PackingInfoVector
Definition: GougeBlock3D.h:90