ESyS-Particle  2.3.4
esys::lsm::GranularGougeBlock3D Class Reference

Class to generate a 3d block of material consisting of a granular gouge between two solid blocks. More...

#include <GranularGougeBlock3D.h>

Inheritance diagram for esys::lsm::GranularGougeBlock3D:
Collaboration diagram for esys::lsm::GranularGougeBlock3D:

Public Member Functions

 GranularGougeBlock3D (const GougeBlockPrms &prms)
 
virtual ~GranularGougeBlock3D ()
 
virtual void createInteractionSet ()
 
virtual void generate ()
 
virtual void generateGrains (double, double, double, double, double, double, int)
 
- Public Member Functions inherited from esys::lsm::GougeBlock3D
 GougeBlock3D (const GougeBlockPrms &prms)
 
virtual ~GougeBlock3D ()
 
int getNumParticles () const
 
const GeneratorPtrVectorgetGougeGeneratorVector () const
 
const GeneratorPtrVectorgetFaultGeneratorVector () const
 
bool isGougeParticle (const SimpleParticle &particle) const
 
bool areInDifferentFaultBlocks (const SimpleParticle &p1, const SimpleParticle &p2) const
 
virtual void write (std::ostream &oStream) const
 
void writeToFile (const std::string &fileName) const
 
void tagGougeParticles (int tag)
 
void tagFaultParticles (int tag)
 
void tagDrivingPlateParticles (int minDrivingTag, int maxDrivingTag, double distanceFromBBoxEdge)
 
const InteractionSetgetInteractionSet () const
 
template<typename TmplVisitor >
void visitParticles (TmplVisitor &visitor)
 
template<typename TmplVisitor >
void visitParticles (const TmplVisitor &visitor) const
 
template<typename TmplVisitor >
void visitInteractions (TmplVisitor &visitor) const
 
const GougeBlockPrmsgetPrms () const
 

Private Member Functions

void generateSeeds (double, double, double, double, double, double)
 

Private Attributes

vector< Vec3m_grain_seeds
 seed points for grain generation algorithm More...
 

Additional Inherited Members

- Public Types inherited from esys::lsm::GougeBlock3D
typedef SimpleParticle Particle
 
typedef CircularNeighbourTable< SimpleParticleNTable
 
typedef boost::shared_ptr< NTableNTablePtr
 
typedef boost::shared_ptr< BlockGeneratorGeneratorPtr
 
typedef std::vector< GeneratorPtrGeneratorPtrVector
 
typedef NTable::ParticlePool ParticlePool
 
typedef NTable::ParticlePoolPtr ParticlePoolPtr
 
typedef std::set< BasicInteraction, BILessInteractionSet
 
- Protected Member Functions inherited from esys::lsm::GougeBlock3D
void createRegularBlockGenerators ()
 
void createFaultBlockGenerators ()
 
virtual void createGougeBlockGenerators ()
 
- Protected Attributes inherited from esys::lsm::GougeBlock3D
NTablePtr m_nTablePtr
 
GougeBlockPrms m_prms
 
InteractionSet m_interactionSet
 
GeneratorPtrVector m_gougeGenPtrVector
 
GeneratorPtrVector m_genPtrVector
 
ParticlePoolPtr m_particlePoolPtr
 

Detailed Description

Class to generate a 3d block of material consisting of a granular gouge between two solid blocks.

Author
Steffen Abe $Revision$ $Date$

Constructor & Destructor Documentation

◆ GranularGougeBlock3D()

esys::lsm::GranularGougeBlock3D::GranularGougeBlock3D ( const GougeBlockPrms prms)

Constructor for GranularGougeBlock3D. Do nothing and call the base class constructor (GougeBlock3D)

Parameters
prmsthe GougeBlock3D parameters

◆ ~GranularGougeBlock3D()

esys::lsm::GranularGougeBlock3D::~GranularGougeBlock3D ( )
virtual

Destructor. No dynamically allocated data in class -> do nothing

Member Function Documentation

◆ createInteractionSet()

void esys::lsm::GranularGougeBlock3D::createInteractionSet ( )
virtual

Create interaction set. Changed from base class by using a different validator which allows links between particles with the same tag, i.e. belonging to the same composite grain. Refactor ?

Reimplemented from esys::lsm::GougeBlock3D.

References esys::lsm::GougeBlockPrms::getConnectionTolerance(), esys::lsm::ForwardIterator< TmplIteratable >::hasNext(), esys::lsm::GranularInteractionValidator::isValid(), esys::lsm::GougeBlock3D::m_interactionSet, esys::lsm::GougeBlock3D::m_nTablePtr, esys::lsm::GougeBlock3D::m_prms, and esys::lsm::ForwardIterator< TmplIteratable >::next().

Here is the call graph for this function:

◆ generate()

void esys::lsm::GranularGougeBlock3D::generate ( )
virtual

◆ generateGrains()

void esys::lsm::GranularGougeBlock3D::generateGrains ( double  sdx,
double  sdy,
double  sdz,
double  rdx,
double  rdy,
double  rdz,
int  min_tag 
)
virtual

Generate composite grains from the existing gouge particles by randomly distributing seed points within the gouge region, then tagging all particles closest to the same seed point with the same tag.

Warning
currently assumes single gouge layer/generator
Parameters
sdxseed density, i.e. average distance between seeds in x-direction
sdyseed density in y-direction
sdzseed density in z-direction
rdxrandom variation of seed points in x-direction
rdyrandom variation of seed points in y-direction
rdzrandom variation of seed points in z-direction
min_tagminimum tag to be used in order not to collide with allready used tags
rm_thresholdgrains with less then rm_threshold particles get removed. Defaults to 0

References generateSeeds(), SimpleParticle::getPos(), esys::lsm::ForwardIterator< TmplIteratable >::hasNext(), esys::lsm::bpu::iter(), esys::lsm::GougeBlock3D::m_gougeGenPtrVector, m_grain_seeds, esys::lsm::ForwardIterator< TmplIteratable >::next(), and esys::lsm::SimpleParticleData::setTag().

Here is the call graph for this function:

◆ generateSeeds()

void esys::lsm::GranularGougeBlock3D::generateSeeds ( double  sdx,
double  sdy,
double  sdz,
double  rdx,
double  rdy,
double  rdz 
)
private

Create the seed points for the grain generation algorithm. Algorithm currently assumes single gouge layer.

Parameters
sdxseed density, i.e. average distance between seeds in x-direction
sdyseed density in y-direction
sdzseed density in z-direction
rdxrandom variation of seed points in x-direction
rdyrandom variation of seed points in y-direction
rdzrandom variation of seed points in z-direction

References getBBox(), esys::lsm::GougeBlockPrms::getGougePackingInfoVector(), esys::lsm::BoundingBox::getMaxPt(), esys::lsm::BoundingBox::getMinPt(), m_grain_seeds, esys::lsm::GougeBlock3D::m_prms, Vec3::X(), Vec3::Y(), and Vec3::Z().

Referenced by generateGrains().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ m_grain_seeds

vector<Vec3> esys::lsm::GranularGougeBlock3D::m_grain_seeds
private

seed points for grain generation algorithm

Referenced by generateGrains(), and generateSeeds().


The documentation for this class was generated from the following files: