ESyS-Particle  4.0.1
RoughPaddedBlock3d.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 __ROUGHPADDEDBLOCK3D_H
00014 #define __ROUGHPADDEDBLOCK3D_H
00015 
00016 //-- project includes --
00017 #include "Geometry/PaddedBlock3D.h"
00018 #include "Geometry/Plane.h"
00019 #include "Geometry/RectPatch.h"
00020 
00021 // --- STL includes ---
00022 #include <vector>
00023 
00033 class CRoughPaddedBlock3D : public CPaddedBlock3D
00034 {
00035  protected:
00036   double m_rough_xres,m_rough_yres;
00037   double m_rough_depth; 
00038   double m_rough_prob;
00039 
00040   vector<RectPatch> m_fault; 
00041 
00042   virtual RectPatch getClosestPatch(const SimpleParticle&,double);
00043   virtual Plane getClosestPlane(const SimpleParticle&);
00044  
00045  public:
00046   CRoughPaddedBlock3D(double,double,double,double,double,double,double,double,double,double,bool circ_x=false);
00047   virtual ~CRoughPaddedBlock3D(){};
00048 
00049   void setRoughness(int,int,double,double);
00050 
00051   virtual bool checkAFit(const SimpleParticle&) ;
00052   virtual void generate(int,unsigned int);  
00053 /*   virtual void tagSplit(int,int,double); */
00054 };
00055 
00056 #endif // __ROUGHPADDEDBLOCK3D_H