Enmesh
Loading...
Searching...
No Matches
mesh_analysis.h
1#ifndef ANALYSIS_H
2#define ANALYSIS_H
3
4#include <vector>
5#include <array>
6#include <iostream>
7#include <cmath>
8#include <unordered_set>
9#include <unordered_map>
10#include <fstream>
11
12#include "mesh/mesh.h"
13
14
15namespace Enmesh {
16
17// Quality analysis
18
25template <typename T>
26float calculateAspectRatio(const Mesh<T>& mesh, const T& element);
27
28
33template <typename T>
34void calculateAspectRatios(Mesh<T>& mesh);
35
36
37
38// Topology analysis
39
45template <typename T>
46std::unordered_map<Edge, size_t, EdgeHash> getEdgeValences(const Mesh<T>& mesh);
47
48
53std::unordered_map<Triangle, size_t, TriangleHash> getTriangleValences(const Mesh<Tetrahedron>& mesh);
54
55
60template <typename T>
61std::vector<Edge> getBoundaryEdges(const Mesh<T>& mesh);
62
63
68std::vector<Triangle> getBoundaryTriangles(const Mesh<Tetrahedron>& mesh);
69
70
76template <typename T>
77size_t countUniqueEdges(const Mesh<T>& mesh);
78
79
85template <typename T>
86size_t countUniqueTriangles(const Mesh<T>& mesh);
87
88
89
90
91
92
93// Display analysis
94
99template <typename T>
100void analyzeMesh(Mesh<T>& mesh);
101
102} // namespace Enmesh
103
104#include "../../src/mesh/mesh_analysis/mesh_analysis.tpp"
105#include "../../src/mesh/mesh_analysis/mesh_analysis_aspectRatio.tpp"
106#include "../../src/mesh/mesh_analysis/mesh_analysis_count.tpp"
107#include "../../src/mesh/mesh_analysis/mesh_analysis_boundaries.tpp"
108
109
110#endif
A class representing a 3D mesh.
Definition mesh.h:29