5#include <wmtk/utils/TupleUtils.hpp>
15 using Tuple = wmtk::TriMesh::Tuple;
22 const std::pair<size_t, VertexAttributes> &
v0()
const {
return m_v0; }
23 const std::pair<size_t, VertexAttributes> &
v1()
const {
return m_v1; }
25 const std::vector<FaceAttributes> &
faces()
const {
return m_faces; }
32 std::pair<size_t, VertexAttributes>
m_v0;
33 std::pair<size_t, VertexAttributes>
m_v1;
46 using Tuple = wmtk::TetMesh::Tuple;
54 const std::pair<size_t, VertexAttributes> &
v0()
const {
return m_v0; }
55 const std::pair<size_t, VertexAttributes> &
v1()
const {
return m_v1; }
56 const std::optional<std::pair<size_t, VertexAttributes>> &
v2()
const {
return m_v2; }
66 std::pair<size_t, VertexAttributes>
m_v0;
67 std::pair<size_t, VertexAttributes>
m_v1;
68 std::optional<std::pair<size_t, VertexAttributes>>
m_v2;
std::unordered_map< std::array< size_t, 2 >, T, polyfem::utils::HashUnorderedArray< size_t, 2 >, polyfem::utils::EqualUnorderedArray< size_t, 2 > > EdgeMap
Map from a (sorted) edge to an integer (ID)
std::unordered_map< std::array< size_t, 3 >, T, polyfem::utils::HashUnorderedArray< size_t, 3 >, polyfem::utils::EqualUnorderedArray< size_t, 3 > > FaceMap
Map from a (sorted) edge to an integer (ID)
std::unordered_map< std::array< size_t, 4 >, T, polyfem::utils::HashUnorderedArray< size_t, 4 >, polyfem::utils::EqualUnorderedArray< size_t, 4 > > TetMap
CollapseEdgeTo collapse_to
std::pair< size_t, VertexAttributes > m_v0
static std::shared_ptr< TetOperationCache > split_edge(WildTetRemesher &m, const Tuple &t)
bool is_boundary_op() const
Remesher::TetMap< TetAttributes > m_tets
const std::pair< size_t, VertexAttributes > & v1() const
wmtk::TetMesh::Tuple Tuple
static std::shared_ptr< TetOperationCache > collapse_edge(WildTetRemesher &m, const Tuple &t)
const Remesher::FaceMap< FaceAttributes > & faces() const
const std::pair< size_t, VertexAttributes > & v0() const
Remesher::FaceMap< FaceAttributes > m_faces
Remesher::EdgeMap< EdgeAttributes > m_edges
const Remesher::TetMap< TetAttributes > & tets() const
static std::shared_ptr< TetOperationCache > swap_32(WildTetRemesher &m, const Tuple &t)
std::optional< std::pair< size_t, VertexAttributes > > m_v2
const std::optional< std::pair< size_t, VertexAttributes > > & v2() const
std::pair< size_t, VertexAttributes > m_v1
const Remesher::EdgeMap< EdgeAttributes > & edges() const
std::vector< FaceAttributes > m_faces
const std::vector< FaceAttributes > & faces() const
wmtk::TriMesh::Tuple Tuple
const Remesher::EdgeMap< EdgeAttributes > & edges() const
const std::pair< size_t, VertexAttributes > & v0() const
static std::shared_ptr< TriOperationCache > collapse_edge(WildTriRemesher &m, const Tuple &t)
const std::pair< size_t, VertexAttributes > & v1() const
bool is_boundary_op() const
std::pair< size_t, VertexAttributes > m_v0
CollapseEdgeTo collapse_to
Remesher::EdgeMap< EdgeAttributes > m_edges
static std::shared_ptr< TriOperationCache > split_edge(WildTriRemesher &m, const Tuple &t)
Construct a local mesh as an n-ring around a vertex.
static std::shared_ptr< TriOperationCache > swap_edge(WildTriRemesher &m, const Tuple &t)
std::pair< size_t, VertexAttributes > m_v1
WildTetRemesher::Tuple Tuple
void log_and_throw_error(const std::string &msg)