ESyS-Particle  2.3.4
ARandomAssembly.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 __ARANDOMASSEMBLY2D_H
14 #define __ARANDOMASSEMBLY2D_H
15 
16 //-- project includes --
19 #include "Geometry/SimpleNTable.h"
20 #include "Geometry/Sphere2d.h"
21 #include "Geometry/Line.h"
22 
23 //-- STL includes --
24 #include <vector>
25 #include <set>
26 
27 using std::set;
28 using std::vector;
29 
30 //--- IO includes ---
31 #include <iostream>
32 
42 {
43  protected:
45  static double m_small_value;
46  set<BasicInteraction,BILess> m_iset;
47  vector<SimpleParticle> m_bpart;
48 
49  double m_random(double,double);
50  vector<SimpleParticle> getNeighborList(const SimpleParticle&);
51  vector<SimpleParticle> get3ClosestNeighbors(const SimpleParticle&, const vector<SimpleParticle>&);
52  vector<SimpleParticle> getClosestNeighbors(const SimpleParticle&, int);
53  SimpleParticle getClosestParticle(const SimpleParticle&, const vector<SimpleParticle>&);
54 
55  public:
56  virtual ~ARandomAssembly()
57  {
58  }
59 
60  virtual void generate(int,unsigned int)=0;
61  virtual void insertParticle(const SimpleParticle)=0;
62  virtual void tagParticleClosestTo(const Vec3&,int)=0;
63  virtual void tagEdgeY(int,int,double)=0;
64  virtual void tagEdgeZ(int,int,double)=0;
65  virtual void tagSplit(int,int,double){std::cout <<"ARA::tagSplit" << std::endl;};
66 
67  virtual void writeToGeoFile(const string&)=0;
68  virtual void writeToVtkFile(const string&); //{std::cerr << "writeToVtkFile not implemented" << std::endl;}; // empty default implementation
69  virtual double calcPorosity()=0;
70  virtual vector<pair<double,double> > getSizeDistribution(int)=0;
71 };
72 
73 #endif // __ARANDOMASSEMBLY2D_H
SimpleParticle::getRad
double getRad() const
Definition: SimpleParticle.hpp:70
BasicInteraction.h
ARandomAssembly::m_small_value
static double m_small_value
Definition: ARandomAssembly.h:45
ARandomAssembly::get3ClosestNeighbors
vector< SimpleParticle > get3ClosestNeighbors(const SimpleParticle &, const vector< SimpleParticle > &)
Definition: ARandomAssembly.cpp:100
ARandomAssembly::tagEdgeY
virtual void tagEdgeY(int, int, double)=0
ARandomAssembly::getClosestParticle
SimpleParticle getClosestParticle(const SimpleParticle &, const vector< SimpleParticle > &)
Definition: ARandomAssembly.cpp:142
SimpleNTable.h
ARandomAssembly::m_bpart
vector< SimpleParticle > m_bpart
Definition: ARandomAssembly.h:47
ARandomAssembly::writeToVtkFile
virtual void writeToVtkFile(const string &)
Definition: ARandomAssembly.cpp:158
SimpleParticle::getPos
const Vec3 & getPos() const
Definition: SimpleParticle.hpp:30
ARandomAssembly::getNeighborList
vector< SimpleParticle > getNeighborList(const SimpleParticle &)
Definition: ARandomAssembly.cpp:46
ARandomAssembly
Abstract base class for random assemblies, to be used for initialization of random lattices.
Definition: ARandomAssembly.h:42
ARandomAssembly::writeToGeoFile
virtual void writeToGeoFile(const string &)=0
ARandomAssembly::tagSplit
virtual void tagSplit(int, int, double)
Definition: ARandomAssembly.h:65
SimpleParticle
Definition: SimpleParticle.h:25
ARandomAssembly::calcPorosity
virtual double calcPorosity()=0
ARandomAssembly::getClosestNeighbors
vector< SimpleParticle > getClosestNeighbors(const SimpleParticle &, int)
Definition: ARandomAssembly.cpp:61
Line.h
SimpleParticle.h
ARandomAssembly::tagEdgeZ
virtual void tagEdgeZ(int, int, double)=0
Sphere2d.h
ARandomAssembly::insertParticle
virtual void insertParticle(const SimpleParticle)=0
ARandomAssembly::m_snt
ASimpleNTable * m_snt
Definition: ARandomAssembly.h:44
ARandomAssembly::m_iset
set< BasicInteraction, BILess > m_iset
Definition: ARandomAssembly.h:46
ARandomAssembly.h
ASimpleNTable::getNeighbors
const vector< SimpleParticle > * getNeighbors(const Vec3 &) const
Definition: SimpleNTable.cpp:36
ARandomAssembly::m_random
double m_random(double, double)
Definition: ARandomAssembly.cpp:36
ARandomAssembly::~ARandomAssembly
virtual ~ARandomAssembly()
Definition: ARandomAssembly.h:56
Vec3
Definition: vec3.h:47
esys::lsm::bpu::iter
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
ARandomAssembly::tagParticleClosestTo
virtual void tagParticleClosestTo(const Vec3 &, int)=0
ARandomAssembly::generate
virtual void generate(int, unsigned int)=0
ARandomAssembly::getSizeDistribution
virtual vector< pair< double, double > > getSizeDistribution(int)=0
ASimpleNTable
Abstract base class providing the interface for a simple, serial neighbor table. Used in random initi...
Definition: SimpleNTable.h:36