Wildmeshing Toolkit
Loading...
Searching...
No Matches
UpdateEdgeOperationMultiMeshMapFunctor.hpp
Go to the documentation of this file.
1#pragma once
2#include <Eigen/Core>
3#include <memory>
4#include <vector>
5
6namespace wmtk {
7class Mesh;
8class PointMesh;
9class EdgeMesh;
10class TriMesh;
11class TetMesh;
12class Tuple;
13namespace simplex {
14class Simplex;
15}
16namespace attribute {
17template <typename T, typename MeshType, int Dim>
18class Accessor;
19}
20
21namespace operations {
22class EdgeOperationData;
23namespace edge_mesh {
24class EdgeOperationData;
25}
26namespace tri_mesh {
27class EdgeOperationData;
28}
29namespace tet_mesh {
30class EdgeOperationData;
31}
32} // namespace operations
33
34namespace operations::utils {
35
37{
38public:
39 // edge -> edge
40 [[noreturn]] void operator()(
41 EdgeMesh&,
42 const simplex::Simplex&,
43 const edge_mesh::EdgeOperationData& parent_tmoe,
44 EdgeMesh&,
45 const simplex::Simplex&,
46 const edge_mesh::EdgeOperationData&) const;
47
48 // tri -> edge
49 void operator()(
50 TriMesh&,
51 const simplex::Simplex&,
53 EdgeMesh&,
54 const simplex::Simplex&,
55 const edge_mesh::EdgeOperationData&) const;
56 // tri -> tri
57 void operator()(
58 TriMesh&,
59 const simplex::Simplex&,
61 TriMesh&,
62 const simplex::Simplex&,
63 const tri_mesh::EdgeOperationData&) const;
64
65 // tet -> edge
66 void operator()(
67 TetMesh&,
68 const simplex::Simplex&,
70 EdgeMesh&,
71 const simplex::Simplex&,
72 const edge_mesh::EdgeOperationData&) const;
73 // tet -> tri
74 void operator()(
75 TetMesh&,
76 const simplex::Simplex&,
78 TriMesh&,
79 const simplex::Simplex&,
80 const tri_mesh::EdgeOperationData&) const;
81 // tet -> tet
82 void operator()(
83 TetMesh&,
84 const simplex::Simplex&,
86 TetMesh&,
87 const simplex::Simplex&,
88 const tet_mesh::EdgeOperationData&) const;
89
90 // edge
92
93 // tri
95
96 // tet
98
99private:
100 /*
101 template <typename T>
102 void update_maps(MeshType&, const simplex::Simplex&, const EdgeOperationData&);
103 */
104
105private:
106 int64_t parent_global_cid(
108 int64_t parent_gid) const;
109 int64_t child_global_cid(
111 int64_t parent_gid) const;
113 Mesh& m,
114 const std::vector<std::vector<std::tuple<int64_t, std::vector<Tuple>>>>&
115 simplices_to_update,
116 const std::vector<std::tuple<int64_t, std::array<int64_t, 2>>>& split_cell_maps = {}) const;
118
119 // for tet
120 int64_t parent_local_fid(
122 int64_t parent_gid) const;
123
125};
126} // namespace operations::utils
127} // namespace wmtk
A CachingAccessor that uses tuples for accessing attributes instead of indices.
Definition Accessor.hpp:28
void update_all_hashes(Mesh &m, const std::vector< std::vector< std::tuple< int64_t, std::vector< Tuple > > > > &simplices_to_update, const std::vector< std::tuple< int64_t, std::array< int64_t, 2 > > > &split_cell_maps={}) const
void update_ear_replacement(TriMesh &m, const tri_mesh::EdgeOperationData &fmoe) const
int64_t parent_global_cid(const attribute::Accessor< int64_t, Mesh, Eigen::Dynamic > &parent_to_child, int64_t parent_gid) const
int64_t parent_local_fid(const attribute::Accessor< int64_t, Mesh, Eigen::Dynamic > &parent_to_child, int64_t parent_gid) const
void operator()(EdgeMesh &, const simplex::Simplex &, const edge_mesh::EdgeOperationData &parent_tmoe, EdgeMesh &, const simplex::Simplex &, const edge_mesh::EdgeOperationData &) const
int64_t child_global_cid(const attribute::Accessor< int64_t, Mesh, Eigen::Dynamic > &parent_to_child, int64_t parent_gid) const