ESyS-Particle  2.3.4
SphAggGougeBlock.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 #ifndef __ESYS_LSM_SPHAGGGOUGEBLOCK3D_H
14 #define __ESYS_LSM_SPHAGGGOUGEBLOCK3D_H
15 
16 // --- project includes --
17 #include "Foundation/vec3.h"
18 #include "Geometry/GougeBlock3D.h"
21 
22 // --- STL includes ---
23 #include <vector>
24 using std::vector;
25 
26 namespace esys {
27  namespace lsm {
28 
34  {
35  public:
36  typedef boost::shared_ptr<SphereBlockGenerator> SBG_ptr;
37 
38  protected:
41  vector<SimpleParticle> m_macro_grains;
45  vector<SBG_ptr> m_grainParticleGen;
47 
48  void generateMacroGrains();
49  void fillMacroGrains();
50  void setupNT2();
51  void createInteractionSet();
52  virtual void createGougeBlockGenerators();
53 
54  public:
55  SphAggGougeBlock(const GougeBlockPrms&,double,double,int);
56  virtual void generate();
57 
58  template <typename TmplVisitor> void visitParticles(TmplVisitor&);
59  template <typename TmplVisitor> void visitParticles(TmplVisitor&) const;
60  };
61 
71  {
72  private:
74  double m_tolerance;
76 
77  public:
78  SphAggInteractionValidator(const SphAggGougeBlock&, double,int);
79  bool isValid(const SimpleParticle&, const SimpleParticle&) const;
80  };
81  }
82 }
83 
84 #include "SphAggGougeBlock.hpp"
85 
86 #endif // __ESYS_LSM_SPHAGGGOUGEBLOCK3D_H
SimpleParticle::getRad
double getRad() const
Definition: SimpleParticle.hpp:70
esys::lsm::GougeBlock3D
Block consisting of regular padding, random layer and gouge.
Definition: GougeBlock3D.h:169
esys::lsm::GougeBlock3D::m_nTablePtr
NTablePtr m_nTablePtr
Definition: GougeBlock3D.h:270
esys::lsm::SphAggGougeBlock::m_min_rad_grain
double m_min_rad_grain
Definition: SphAggGougeBlock.h:39
esys::lsm::SimpleParticleData::getID
Id getID() const
Definition: SimpleParticleData.hpp:109
esys::lsm::GougeBlock3D::GeneratorPtr
boost::shared_ptr< BlockGenerator > GeneratorPtr
Definition: GougeBlock3D.h:182
esys::lsm::CircularNeighbourTable::ParticleVector
Inherited::ParticleVector ParticleVector
Definition: CircularNeighbourTable.h:38
RandomBlockGenerator.h
esys::lsm::SphAggGougeBlock::SphAggGougeBlock
SphAggGougeBlock(const GougeBlockPrms &, double, double, int)
Definition: SphAggGougeBlock.cpp:33
esys::lsm::Plane3D
::Plane3D Plane3D
Definition: Plane3D.h:60
esys::lsm::GougeBlockPrms
Definition: GougeBlock3D.h:92
esys::lsm::GougeBlock3D::createFaultBlockGenerators
void createFaultBlockGenerators()
Definition: GougeBlock3D.cpp:498
SimpleParticle::getPos
const Vec3 & getPos() const
Definition: SimpleParticle.hpp:30
esys::lsm::BoundingBox::getMaxPt
const Vec3 & getMaxPt() const
Definition: BoundingBox.hpp:45
esys::lsm::SphAggGougeBlock::m_grainParticleGen
vector< SBG_ptr > m_grainParticleGen
Definition: SphAggGougeBlock.h:45
esys::lsm::GougeBlockPrms::getTolerance
double getTolerance() const
Definition: GougeBlock3D.cpp:197
esys::lsm::GougeBlock3D::m_prms
GougeBlockPrms m_prms
Definition: GougeBlock3D.h:271
esys::lsm::ForwardIterator::hasNext
bool hasNext() const
Definition: StlIterator.h:48
esys::lsm::SphAggGougeBlock::m_max_rad_grain
double m_max_rad_grain
Definition: SphAggGougeBlock.h:40
esys::lsm::SphAggInteractionValidator
Used to check the validity of an interaction in a SphAggGougeBlock.
Definition: SphAggGougeBlock.h:71
esys::lsm::ForwardIterator::next
reference next()
Definition: StlIterator.h:60
esys::lsm::SphAggInteractionValidator::m_tolerance
double m_tolerance
Definition: SphAggGougeBlock.h:74
SimpleParticle
Definition: SimpleParticle.h:25
esys::lsm::GougeBlockPrms::getMaxRadius
double getMaxRadius() const
Definition: GougeBlock3D.cpp:396
esys::lsm::PlaneVector
std::vector< Plane3D > PlaneVector
Definition: GougeBlock3D.h:32
Vec3::X
VEC3_INLINE double & X()
Definition: vec3.h:119
esys::lsm::SphAggGougeBlock::generateMacroGrains
void generateMacroGrains()
Definition: SphAggGougeBlock.cpp:45
esys::lsm::BoundingBox
3D bounding box
Definition: BoundingBox.h:28
esys
Definition: CheckPointable.cpp:17
esys::lsm::SphAggGougeBlock
Block of gouge consisting of spherical aggregate grains
Definition: SphAggGougeBlock.h:34
esys::lsm::SphAggGougeBlock::m_nTablePtr2
NTablePtr m_nTablePtr2
Definition: SphAggGougeBlock.h:42
esys::lsm::SphAggInteractionValidator::isValid
bool isValid(const SimpleParticle &, const SimpleParticle &) const
Definition: SphAggGougeBlock.cpp:255
SimpleParticle.h
esys::lsm::GougeBlockPrms::getFaultPackingInfoVector
PackingInfoVector getFaultPackingInfoVector() const
Definition: GougeBlock3D.cpp:356
esys::lsm::GougeBlockPrms::getBBox
const BoundingBox & getBBox() const
Definition: GougeBlock3D.cpp:177
BasicInteraction
Class to represent the common part of a pair interaction, i.e. the IDs of the particles and the inter...
Definition: BasicInteraction.h:28
esys::lsm::GougeBlockPrms::getGougePackingInfoVector
PackingInfoVector getGougePackingInfoVector() const
Definition: GougeBlock3D.cpp:331
esys::lsm::SphAggGougeBlock::createInteractionSet
void createInteractionSet()
Definition: SphAggGougeBlock.cpp:192
Vec3::Z
VEC3_INLINE double & Z()
Definition: vec3.h:121
esys::lsm::CircularNeighbourTable::Particle
Inherited::Particle Particle
Definition: CircularNeighbourTable.h:37
esys::lsm::BoundingBox::getMinPt
const Vec3 & getMinPt() const
Definition: BoundingBox.hpp:40
SphereBlockGenerator.h
esys::lsm::SphAggInteractionValidator::SphAggInteractionValidator
SphAggInteractionValidator(const SphAggGougeBlock &, double, int)
Definition: SphAggGougeBlock.cpp:247
esys::lsm::SphAggGougeBlock::SBG_ptr
boost::shared_ptr< SphereBlockGenerator > SBG_ptr
Definition: SphAggGougeBlock.h:36
esys::lsm::SphereBlockGenerator
Definition: SphereBlockGenerator.h:32
Vec3::Y
VEC3_INLINE double & Y()
Definition: vec3.h:120
esys::lsm::SphAggGougeBlock::m_grainGen
GeneratorPtr m_grainGen
Definition: SphAggGougeBlock.h:44
esys::lsm::GougeBlock3D::ParticlePool
NTable::ParticlePool ParticlePool
Definition: GougeBlock3D.h:184
esys::lsm::SphAggGougeBlock::m_macro_grains
vector< SimpleParticle > m_macro_grains
Definition: SphAggGougeBlock.h:41
esys::lsm::GougeBlockPrms::getConnectionTolerance
double getConnectionTolerance() const
Definition: GougeBlock3D.cpp:202
esys::lsm::SphAggGougeBlock::fillMacroGrains
void fillMacroGrains()
Definition: SphAggGougeBlock.cpp:112
SphAggGougeBlock.hpp
esys::lsm::SphAggGougeBlock::m_min_grain_tag
int m_min_grain_tag
Definition: SphAggGougeBlock.h:46
esys::lsm::GougeBlock3D::createRegularBlockGenerators
void createRegularBlockGenerators()
Definition: GougeBlock3D.cpp:473
esys::lsm::SphAggGougeBlock::m_particlePoolPtr2
ParticlePoolPtr m_particlePoolPtr2
Definition: SphAggGougeBlock.h:43
esys::lsm::BoolVector
std::vector< bool > BoolVector
Definition: BlockGenerator.h:28
Vec3
Definition: vec3.h:47
esys::lsm::ForwardIterator
Definition: StlIterator.h:30
esys::lsm::SphAggInteractionValidator::m_pGougeBlock
const SphAggGougeBlock * m_pGougeBlock
Definition: SphAggGougeBlock.h:73
esys::lsm::GougeBlock3D::NTable
CircularNeighbourTable< SimpleParticle > NTable
Definition: GougeBlock3D.h:180
vec3.h
esys::lsm::GougeBlock3D::m_particlePoolPtr
ParticlePoolPtr m_particlePoolPtr
Definition: GougeBlock3D.h:275
esys::lsm::GougeBlock3D::NTablePtr
boost::shared_ptr< NTable > NTablePtr
Definition: GougeBlock3D.h:181
esys::lsm::SphAggGougeBlock::generate
virtual void generate()
Definition: SphAggGougeBlock.cpp:215
esys::lsm::SphAggGougeBlock::setupNT2
void setupNT2()
Definition: SphAggGougeBlock.cpp:160
esys::lsm::BoundingBox::getSizes
Vec3 getSizes() const
Definition: BoundingBox.hpp:78
esys::lsm::SphAggInteractionValidator::m_grain_tag
int m_grain_tag
Definition: SphAggGougeBlock.h:75
esys::lsm::RandomBlockGenerator
Definition: RandomBlockGenerator.h:37
esys::lsm::GougeBlockPrms::getMaxInsertionFailures
int getMaxInsertionFailures() const
Definition: GougeBlock3D.cpp:182
esys::lsm::GougeBlock3D::ParticlePoolPtr
NTable::ParticlePoolPtr ParticlePoolPtr
Definition: GougeBlock3D.h:185
esys::lsm::SphAggGougeBlock::visitParticles
void visitParticles(TmplVisitor &)
Definition: SphAggGougeBlock.hpp:19
GougeBlock3D.h
SphAggGougeBlock.h
esys::lsm::GougeBlock3D::m_interactionSet
InteractionSet m_interactionSet
Definition: GougeBlock3D.h:272
esys::lsm::GougeBlock3D::m_genPtrVector
GeneratorPtrVector m_genPtrVector
Definition: GougeBlock3D.h:274
esys::lsm::SimpleParticleData::getTag
Tag getTag() const
Definition: SimpleParticleData.hpp:124
esys::lsm::SphAggGougeBlock::createGougeBlockGenerators
virtual void createGougeBlockGenerators()
Definition: SphAggGougeBlock.cpp:184
esys::lsm::PackingInfoVector
std::vector< PackingInfo > PackingInfoVector
Definition: GougeBlock3D.h:90