ESyS-Particle  2.3.4
graph.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 __GRAPH_H
14 #define __GRAPH_H
15 
16 // --- project includes ---
17 #include "Foundation/vec3.h"
18 
19 // --- STL includes ---
20 #include <list>
21 #include <vector>
22 #include <utility>
23 #include <map>
24 #include <iostream>
25 #include <string>
26 
27 using std::list;
28 using std::vector;
29 using std::pair;
30 using std::map;
31 using std::ostream;
32 using std::endl;
33 using std::string;
34 
35 struct pdata{
36  int tag;
37  double mass;
39  double rad;
42 
43  pdata(int t=-1,
44  double m=0.0,
45  Vec3 p=Vec3(0.0,0.0,0.0),
46  double r=0.0,
47  Vec3 v=Vec3(0.0,0.0,0.0),
48  Vec3 av=Vec3(0.0,0.0,0.0))
49  :tag(t),mass(m),pos(p),rad(r),vel(v),angvel(av){};
50 };
51 
52 struct pdata2d{
53  int gid; // grain id
54  Vec3 pos2d; // projected position
55  double rad; // radius
56 };
57 
63 class Graph
64 {
65  public: // types
66  struct Edge{
67  int i,j;
68  Edge(int v=-1,int w=-1):i(v),j(w){}
69  };
70 
71  struct Node{
72  int id;
73  Node(int i=-1):id(i){};
74  };
75  typedef list<int>::iterator adjIterator;
76 
77  private:
78  map<int,list<int> > m_data;
79  map<int,int> cid; // component id for conn. component
80  map<int,pdata> m_vertex_data;
81  map<int,double> m_grain_mass;
82  map<int,Vec3> m_grain_rot;
83  int ccnt;
84 
85  void ccR(int);
86  void dfsIter(int);
87 
88  public: // methods
89  Graph();
90  ~Graph();
91  int numV() const;
92  int numE() const;
93  int getGrainID(int) const;
94  double getParticleMass(int) const;
95  void insert(const Edge&);
96  void insert(const pair<int,int>&);
97  void setVertexData(int,const pdata&);
98  pdata getVertexData(int i) const;
99  void remove(const Edge&);
100  bool isEdge(int,int);
101  void removeDoubles();
102  adjIterator IterBegin(int);
103  adjIterator IterEnd(int);
104  map<int,int>::const_iterator cid_begin() const {return cid.begin();};
105  map<int,int>::const_iterator cid_end() const {return cid.end();};
106  void makeConnComp();
107  void printGrainPCount(ostream&);
108  void printGrainMass(ostream&);
109  void printIdList(const string&);
110  void printRotList(const string&);
111  void printGrainCountDist(const string&);
112  void printGrainDiamDist(const string&,double,int);
113  void printGrainMassDist(const string&,double,int);
114  void printSieveDist(const string&,double);
115  double getPercentile(double);
116  void writeAvgGrainSizeProfile(const string&,double,double,int) ;
117  void writeAvgGrainSizeGrid(const string&,double,double,double,double,double,double,double) ;
118  void writeMatrixFractionProfile(const string&,double,double,int,double) ;
119  void writeMatrixFractionGrid(const string&,double,double,double,double,double,double,double,double) ;
120  void printGrainsAsVtk(const string&,double);
121  void printAllAsVtk(const string&);
122  void printCrossSection(const Vec3&,const Vec3&,const Vec3&,const string&,int,int,double,double,double,double,bool,bool);
123  void printGrainCenterPosition(const string&);
124 };
125 
126 #endif //__GRAPH_H
Graph::getPercentile
double getPercentile(double)
Definition: graph.cpp:529
Graph::printGrainMassDist
void printGrainMassDist(const string &, double, int)
Definition: graph.cpp:418
pdata
Definition: graph.h:35
Graph::writeAvgGrainSizeGrid
void writeAvgGrainSizeGrid(const string &, double, double, double, double, double, double, double)
Definition: graph.cpp:676
Graph::writeAvgGrainSizeProfile
void writeAvgGrainSizeProfile(const string &, double, double, int)
Definition: graph.cpp:568
Graph::numV
int numV() const
Definition: graph.cpp:44
Graph::printCrossSection
void printCrossSection(const Vec3 &, const Vec3 &, const Vec3 &, const string &, int, int, double, double, double, double, bool, bool)
Definition: graph.cpp:1101
Graph::Edge::Edge
Edge(int v=-1, int w=-1)
Definition: graph.h:68
Graph::IterBegin
adjIterator IterBegin(int)
Definition: graph.cpp:139
Graph::printGrainDiamDist
void printGrainDiamDist(const string &, double, int)
Definition: graph.cpp:453
Graph::IterEnd
adjIterator IterEnd(int)
Definition: graph.cpp:144
Graph::Edge
Definition: graph.h:66
Matrix3::invert
void invert()
in-situ inversion
Definition: Matrix3.cpp:48
Graph::setVertexData
void setVertexData(int, const pdata &)
Definition: graph.cpp:209
pdata::vel
Vec3 vel
Definition: graph.h:40
Graph::makeConnComp
void makeConnComp()
Definition: graph.cpp:149
Graph::Node::Node
Node(int i=-1)
Definition: graph.h:73
Graph::removeDoubles
void removeDoubles()
Definition: graph.cpp:91
ProbDist::Write
void Write(const char *filename, double EvRate)
Definition: probdist.cpp:69
Graph::Node::id
int id
Definition: graph.h:72
Graph::cid_end
map< int, int >::const_iterator cid_end() const
Definition: graph.h:105
Triangle2d.h
Graph::remove
void remove(const Edge &)
Definition: graph.cpp:101
Vec3::unit
VEC3_INLINE Vec3 unit() const
Definition: vec3.hpp:225
pdata::tag
int tag
Definition: graph.h:36
Graph::printGrainCenterPosition
void printGrainCenterPosition(const string &)
Definition: graph.cpp:1272
Graph::printGrainsAsVtk
void printGrainsAsVtk(const string &, double)
Definition: graph.cpp:916
Graph::cid_begin
map< int, int >::const_iterator cid_begin() const
Definition: graph.h:104
Graph::writeMatrixFractionProfile
void writeMatrixFractionProfile(const string &, double, double, int, double)
Definition: graph.cpp:766
Matrix3.h
Graph::getParticleMass
double getParticleMass(int) const
Definition: graph.cpp:125
probdist.h
pdata::angvel
Vec3 angvel
Definition: graph.h:41
pdata::pdata
pdata(int t=-1, double m=0.0, Vec3 p=Vec3(0.0, 0.0, 0.0), double r=0.0, Vec3 v=Vec3(0.0, 0.0, 0.0), Vec3 av=Vec3(0.0, 0.0, 0.0))
Definition: graph.h:43
Graph::printRotList
void printRotList(const string &)
Definition: graph.cpp:289
Graph::getVertexData
pdata getVertexData(int i) const
Definition: graph.cpp:217
cross
VEC3_INLINE Vec3 cross(const Vec3 &lhs, const Vec3 &rhs)
Definition: vec3.hpp:187
Graph::m_grain_rot
map< int, Vec3 > m_grain_rot
Definition: graph.h:82
Vec3::X
VEC3_INLINE double & X()
Definition: vec3.h:119
ProbDist::AddSample
void AddSample(double evsize)
Definition: probdist.cpp:55
Graph::dfsIter
void dfsIter(int)
Definition: graph.cpp:183
Vec3::Z
VEC3_INLINE double & Z()
Definition: vec3.h:121
Graph::Graph
Graph()
Definition: graph.cpp:35
Graph::ccR
void ccR(int)
Definition: graph.cpp:164
Graph::Node
Definition: graph.h:71
Triangle2D::isIn
bool isIn(const Vec3 &) const
Definition: Triangle2d.cpp:19
Graph::Edge::i
int i
Definition: graph.h:67
Vec3::Y
VEC3_INLINE double & Y()
Definition: vec3.h:120
pdata2d::gid
int gid
Definition: graph.h:53
pdata::mass
double mass
Definition: graph.h:37
Graph::insert
void insert(const Edge &)
Definition: graph.cpp:68
Graph::printGrainMass
void printGrainMass(ostream &)
Definition: graph.cpp:244
Graph::Edge::j
int j
Definition: graph.h:67
Graph::getGrainID
int getGrainID(int) const
Definition: graph.cpp:111
Vec3
Definition: vec3.h:47
esys::lsm::bpu::iter
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
Graph::cid
map< int, int > cid
Definition: graph.h:79
Graph::m_vertex_data
map< int, pdata > m_vertex_data
Definition: graph.h:80
Graph::printSieveDist
void printSieveDist(const string &, double)
Definition: graph.cpp:492
graph.h
pdata2d::rad
double rad
Definition: graph.h:55
vec3.h
Graph::isEdge
bool isEdge(int, int)
Definition: graph.cpp:105
Matrix3
3x3 Matrix
Definition: Matrix3.h:48
Graph::adjIterator
list< int >::iterator adjIterator
Definition: graph.h:75
Graph::printAllAsVtk
void printAllAsVtk(const string &)
Definition: graph.cpp:1005
Graph::ccnt
int ccnt
Definition: graph.h:83
Graph::printGrainCountDist
void printGrainCountDist(const string &)
Definition: graph.cpp:386
Graph
Graph class, partially based on Sedgewick, "Alg. in C++", progs. 17.1, 17.9 and 17....
Definition: graph.h:64
Graph::printIdList
void printIdList(const string &)
Definition: graph.cpp:260
write_vtk_header
void write_vtk_header(ofstream &outfile, int nx, int ny, int nz, double x0, double dx, double y0, double dy, double z0, double dz)
Definition: graph.cpp:634
Graph::printGrainPCount
void printGrainPCount(ostream &)
Definition: graph.cpp:229
Graph::m_grain_mass
map< int, double > m_grain_mass
Definition: graph.h:81
pdata::rad
double rad
Definition: graph.h:39
Graph::m_data
map< int, list< int > > m_data
Definition: graph.h:78
Triangle2D
Definition: Triangle2d.h:20
Graph::numE
int numE() const
Definition: graph.cpp:52
Graph::writeMatrixFractionGrid
void writeMatrixFractionGrid(const string &, double, double, double, double, double, double, double, double)
Definition: graph.cpp:830
ProbDist
Definition: probdist.h:20
pdata2d::pos2d
Vec3 pos2d
Definition: graph.h:54
Graph::~Graph
~Graph()
Definition: graph.cpp:38
pdata2d
Definition: graph.h:52
pdata::pos
Vec3 pos
Definition: graph.h:38