ESyS-Particle  2.3.2
SphAggGougeBlock.h
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 #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