ESyS-Particle  4.0.1
GranularGougeBlock3D.h
00001 
00002 //                                                         //
00003 // Copyright (c) 2003-2011 by The University of Queensland //
00004 // Earth Systems Science Computational Centre (ESSCC)      //
00005 // http://www.uq.edu.au/esscc                              //
00006 //                                                         //
00007 // Primary Business: Brisbane, Queensland, Australia       //
00008 // Licensed under the Open Software License version 3.0    //
00009 // http://www.opensource.org/licenses/osl-3.0.php          //
00010 //                                                         //
00012 
00013 #ifndef __ESYS_LSM_GRANULARGOUGEBLOCK3D_H
00014 #define __ESYS_LSM_GRANULARGOUGEBLOCK3D_H
00015 
00016 // --- project includes --
00017 #include "Geometry/GougeBlock3D.h"
00018 
00019 namespace esys {
00020   namespace lsm {
00021 
00031     class GranularGougeBlock3D : public GougeBlock3D
00032       {
00033       private:
00034         vector<Vec3> m_grain_seeds; 
00035 
00036         void generateSeeds(double,double,double,double,double,double); 
00037 
00038       public:
00039         GranularGougeBlock3D(const GougeBlockPrms &prms);
00040         virtual ~GranularGougeBlock3D();
00041 
00042         virtual void createInteractionSet();
00043         virtual void generate();
00044         virtual void generateGrains(double,double,double,double,double,double,int,int rm_threshold=0);
00045       };
00046 
00055     class GranularInteractionValidator
00056       {    
00057       private:
00058         const GranularGougeBlock3D *m_pGougeBlock;
00059         double m_tolerance;
00060 
00061       public:
00062         GranularInteractionValidator(const GranularGougeBlock3D&, double);
00063         bool isValid(const SimpleParticle&, const SimpleParticle&) const;
00064       };
00065   }
00066 }
00067 
00068 #endif // __ESYS_LSM_GRANULARGOUGEBLOCK3D_H