ESyS-Particle  2.3.4
Mesh2D.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 __MESH2D_H
14 #define __MESH2D_H
15 
16 // -- Project includes --
17 #include "Geometry/Edge2D.h"
18 #include "Geometry/Corner2D.h"
19 #include "Model/MeshData2D.h"
20 #include "Foundation/vec3.h"
21 
22 // -- STL includes --
23 #include <vector>
24 #include <map>
25 #include <string>
26 
27 using std::vector;
28 using std::multimap;
29 using std::map;
30 using std::string;
31 
32 // -- IO includes ---
33 #include <iostream>
34 
35 using std::ostream;
36 
37 //--- TML includes ---
38 #include "tml/comm/comm.h"
39 
46 class Mesh2D
47 {
48  private:
49  vector<Edge2D> m_edges;
50  vector<Corner2D> m_corners;
51  map<int,int> m_corner_by_id;
52  multimap<int,Edge2D*> m_edge_by_node_id;
53  map<int,int> m_edge_index_by_id;
54 
55  public:
56  // types
57  typedef vector<Edge2D>::iterator edge_iterator;
58  typedef vector<Corner2D>::iterator corner_iterator;
59 
60  // functions
61  Mesh2D();
62  virtual ~Mesh2D(){};
63  void LoadMesh(const vector<MeshNodeData2D>&,const vector<MeshEdgeData2D>&);
64  void moveNode(int,const Vec3&);
65  void translateBy(const Vec3 &translation);
66 
67  edge_iterator edges_begin(){return m_edges.begin();};
68  edge_iterator edges_end(){return m_edges.end();};
71  Edge2D* getEdgeById(int);
72  Corner2D* getCornerById(int);
73 
74  void zeroForces();
75  virtual void writeCheckPoint(ostream&,const string&) const;
76  virtual void loadCheckPoint(istream&);
77 
78  // edge data access functions
79  template <typename P> void forAllEdgesGet(P&,typename P::value_type (Edge2D::*rdf)() const);
80  template <typename P> vector<pair<int,P> > forAllEdgesGetIndexed(P (Edge2D::*rdf)() const);
81 };
82 
83 #include "Mesh2D.hpp"
84 
85 #endif // __MESH2D_H
Mesh2D::edges_begin
edge_iterator edges_begin()
Definition: Mesh2D.h:67
Mesh2D::m_edges
vector< Edge2D > m_edges
Definition: Mesh2D.h:49
Mesh2D::corner_iterator
vector< Corner2D >::iterator corner_iterator
Definition: Mesh2D.h:58
Mesh2D::forAllEdgesGet
void forAllEdgesGet(P &, typename P::value_type(Edge2D::*rdf)() const)
Definition: Mesh2D.hpp:27
Console::Debug
Console & Debug()
set verbose level of next message to "dbg"
Mesh2D::moveNode
void moveNode(int, const Vec3 &)
Definition: Mesh2D.cpp:102
Mesh2D::m_corners
vector< Corner2D > m_corners
Definition: Mesh2D.h:50
Mesh2D.hpp
Mesh2D::zeroForces
void zeroForces()
Definition: Mesh2D.cpp:135
Mesh2D::m_edge_by_node_id
multimap< int, Edge2D * > m_edge_by_node_id
Definition: Mesh2D.h:52
console.h
esys::lsm::IterativeReader< IStreamIterator< MeshNodeData2D > >::Iterator
IStreamIterator< MeshNodeData2D > Iterator
Definition: IterativeReader.h:77
Mesh2D
Definition: Mesh2D.h:47
Mesh2D::LoadMesh
void LoadMesh(const vector< MeshNodeData2D > &, const vector< MeshEdgeData2D > &)
Definition: Mesh2D.cpp:35
esys::lsm::Edge2DReader
read a block of edges from a Finley 2D mesh file.
Definition: Mesh2DReader.h:54
MeshData2D.h
Mesh2D::writeCheckPoint
virtual void writeCheckPoint(ostream &, const string &) const
Definition: Mesh2D.cpp:190
Edge2D.h
Mesh2D::corners_end
corner_iterator corners_end()
Definition: Mesh2D.h:70
NULL
#define NULL
Definition: t_list.h:17
Mesh2D::m_corner_by_id
map< int, int > m_corner_by_id
Definition: Mesh2D.h:51
Mesh2D::forAllEdgesGetIndexed
vector< pair< int, P > > forAllEdgesGetIndexed(P(Edge2D::*rdf)() const)
Definition: Mesh2D.hpp:40
Mesh2D::Mesh2D
Mesh2D()
Definition: Mesh2D.cpp:26
esys::lsm::IterativeReader::getIterator
Iterator & getIterator()
Definition: IterativeReader.hpp:113
Mesh2DReader.h
Corner2D.h
Mesh2D::loadCheckPoint
virtual void loadCheckPoint(istream &)
Definition: Mesh2D.cpp:230
comm.h
Corner2D::move
void move(const Vec3 &)
Definition: Corner2D.cpp:87
Vec3
Definition: vec3.h:47
esys::lsm::bpu::iter
boost::python::object iter(const boost::python::object &pyOb)
Definition: Util.h:25
Mesh2D.h
vec3.h
esys::lsm::Node2DReader
read a block of 2D nodes from a Finley mesh file.
Definition: Mesh2DReader.h:38
Mesh2D::edges_end
edge_iterator edges_end()
Definition: Mesh2D.h:68
Mesh2D::m_edge_index_by_id
map< int, int > m_edge_index_by_id
Definition: Mesh2D.h:53
Mesh2D::edge_iterator
vector< Edge2D >::iterator edge_iterator
Definition: Mesh2D.h:57
Mesh2D::translateBy
void translateBy(const Vec3 &translation)
Definition: Mesh2D.cpp:118
Edge2D
class for edge in 2D "mesh"
Definition: Edge2D.h:39
Corner2D
Class representing the corner in a 2D "mesh".
Definition: Corner2D.h:35
console
Console console
Definition: console.cpp:25
Mesh2D::~Mesh2D
virtual ~Mesh2D()
Definition: Mesh2D.h:62
Mesh2D::getCornerById
Corner2D * getCornerById(int)
Definition: Mesh2D.cpp:167
Mesh2D::getEdgeById
Edge2D * getEdgeById(int)
Definition: Mesh2D.cpp:149
Mesh2D::corners_begin
corner_iterator corners_begin()
Definition: Mesh2D.h:69
esys::lsm
Lattice Solid Model namespace.
Definition: CheckPointable.cpp:19