ESyS-Particle
2.2
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
TriMesh.h
Go to the documentation of this file.
1
2
// //
3
// Copyright (c) 2003-2013 by The University of Queensland //
4
// Earth Systems Science Computational Centre (ESSCC) //
5
// http://www.uq.edu.au/esscc //
6
// //
7
// Primary Business: Brisbane, Queensland, Australia //
8
// Licensed under the Open Software License version 3.0 //
9
// http://www.opensource.org/licenses/osl-3.0.php //
10
// //
12
13
#ifndef __TRIMESH_H
14
#define __TRIMESH_H
15
16
//--- TML includes ---
17
#include "
tml/comm/comm.h
"
18
19
// -- Project includes --
20
#include "
Geometry/Triangle.h
"
21
#include "
Geometry/Edge.h
"
22
#include "
Geometry/Corner.h
"
23
#include "
Model/MeshData.h
"
24
#include "
Foundation/vec3.h
"
25
26
// -- STL includes --
27
#include <vector>
28
#include <map>
29
#include <string>
30
31
using
std::vector;
32
using
std::multimap;
33
using
std::map;
34
using
std::string;
35
36
// -- IO includes ---
37
#include <iostream>
38
39
using
std::ostream;
40
41
50
class
TriMesh
51
{
52
private
:
53
vector<Triangle>
m_triangles
;
54
vector<Edge>
m_edges
;
55
vector<Corner>
m_corners
;
56
multimap<int,Triangle*>
m_triangle_by_node_id
;
57
multimap<int,Edge*>
m_edge_by_node_id
;
58
map<int,int>
m_corner_by_id
;
59
60
map<int,int>
m_tri_index_by_id
;
61
62
public
:
63
// types
64
typedef
vector<Triangle>::iterator
triangle_iterator
;
65
typedef
vector<Edge>::iterator
edge_iterator
;
66
typedef
vector<Corner>::iterator
corner_iterator
;
67
68
// functions
69
TriMesh
();
70
71
virtual
~TriMesh
()
72
{
73
}
74
75
void
LoadMesh
(
const
vector<MeshNodeData>&,
const
vector<MeshTriData>&);
76
void
moveNode
(
int
,
const
Vec3
&);
77
void
translateBy
(
const
Vec3
&translation);
78
triangle_iterator
triangles_begin
(){
return
m_triangles
.begin();};
79
triangle_iterator
triangles_end
(){
return
m_triangles
.end();};
80
edge_iterator
edges_begin
(){
return
m_edges
.begin();};
81
edge_iterator
edges_end
(){
return
m_edges
.end();};
82
corner_iterator
corners_begin
(){
return
m_corners
.begin();};
83
corner_iterator
corners_end
(){
return
m_corners
.end();};
84
Triangle
*
getTriangleById
(
int
);
85
bool
hasMovedBy
(
double
);
86
void
resetCurrentDisplacement
();
87
88
void
zeroForces
();
89
virtual
void
writeCheckPoint
(ostream&,
const
string
&)
const
;
90
virtual
void
loadCheckPoint
(istream&);
91
92
// triangle data access functions
93
template
<
typename
P>
void
forAllTrianglesGet
(P&,
typename
P::value_type (
Triangle
::*rdf)()
const
);
94
template
<
typename
P> vector<pair<int,P> >
forAllTrianglesGetIndexed
(P (
Triangle
::*rdf)()
const
);
95
};
96
97
#include "
TriMesh.hpp
"
98
99
#endif // __TRIMESH_H
Model
TriMesh.h
Generated on Mon May 6 2013 23:26:30 for ESyS-Particle by
1.8.3.1