Wildmeshing Toolkit
|
#include <TriMeshOperationExecutor.hpp>
Public Member Functions | |
TriMeshOperationExecutor (TriMesh &m, const Tuple &operating_tuple) | |
void | delete_simplices () |
Tuple | next_edge (const Tuple &tuple) const |
jump to the next edge More... | |
Tuple | prev_edge (const Tuple &tuple) const |
jump to the previous edge More... | |
void | update_ids_in_ear (const EarData &ear, const int64_t new_fid, const int64_t old_fid) |
handling the topology glueing of ear to non-ear face, transfering data from ear-oldface to ear-newface More... | |
void | connect_ears () |
void | split_edge_precompute () |
void | collapse_edge_precompute () |
void | split_edge () |
void | collapse_edge () |
void | replace_incident_face (IncidentFaceData &face_data) |
void | create_spine_simplices () |
void | fill_split_facet_data () |
void | connect_faces_across_spine () |
std::vector< int64_t > | request_simplex_indices (const PrimitiveType type, int64_t count) |
IncidentFaceData | get_incident_face_data (Tuple t) |
Public Member Functions inherited from wmtk::operations::tri_mesh::EdgeOperationData | |
EdgeOperationData ()=default | |
EdgeOperationData (EdgeOperationData &&)=default | |
EdgeOperationData & | operator= (EdgeOperationData &&)=default |
const std::vector< IncidentFaceData > & | incident_face_datas () const |
const std::array< int64_t, 2 > & | incident_vids () const |
int64_t | operating_edge_id () const |
std::vector< std::array< Tuple, 2 > > | ear_edges (const TriMesh &m) const |
std::array< Tuple, 2 > | input_endpoints (const TriMesh &m) const |
std::vector< Tuple > | collapse_merged_ear_edges (const TriMesh &m) const |
std::vector< Tuple > | split_new_rib_edges (const TriMesh &) const |
std::vector< Tuple > | input_faces (const TriMesh &) const |
std::array< Tuple, 2 > | split_output_edges (const TriMesh &) const |
std::vector< std::array< Tuple, 2 > > | split_output_faces (const TriMesh &) const |
std::vector< simplex::Simplex > | new_vertices (const Mesh &) const |
Public Member Functions inherited from wmtk::operations::EdgeOperationData | |
EdgeOperationData () | |
~EdgeOperationData () | |
EdgeOperationData (EdgeOperationData &&) | |
EdgeOperationData & | operator= (EdgeOperationData &&) |
void | set_split () |
void | set_collapse () |
const internal::SplitAlternateFacetData & | const_split_facet_data () const |
Returns facet data held if the edge operation was a split - throws if data does not exist. More... | |
const internal::CollapseAlternateFacetData & | const_collapse_facet_data () const |
Returns facet data held if the edge operation was a collapse- throws if data does not exist. More... | |
Static Public Member Functions | |
static const std::array< std::vector< int64_t >, 3 > | get_split_simplices_to_delete (const Tuple &tuple, const TriMesh &m) |
gather all simplices that are deleted in a split More... | |
static const std::array< std::vector< int64_t >, 3 > | get_collapse_simplices_to_delete (const Tuple &tuple, const TriMesh &m) |
gather all simplices that are deleted in a collapse More... | |
Additional Inherited Members | |
Protected Member Functions inherited from wmtk::operations::EdgeOperationData | |
internal::SplitAlternateFacetData & | split_facet_data () |
Returns facet data held if the edge operation was a split - throws if data does not exist. More... | |
internal::CollapseAlternateFacetData & | collapse_facet_data () |
Returns facet data held if the edge operation was a collapse- throws if data does not exist. More... | |
Static Protected Member Functions inherited from wmtk::operations::EdgeOperationData | |
static Tuple | tuple_from_id (const Mesh &m, const PrimitiveType type, const int64_t gid) |
static simplex::Simplex | simplex_from_id (const Mesh &m, const PrimitiveType type, const int64_t gid) |
static std::vector< int64_t > | request_simplex_indices (Mesh &mesh, const PrimitiveType type, int64_t count) |
Definition at line 9 of file TriMeshOperationExecutor.hpp.
wmtk::TriMesh::TriMeshOperationExecutor::TriMeshOperationExecutor | ( | TriMesh & | m, |
const Tuple & | operating_tuple | ||
) |
Definition at line 103 of file TriMeshOperationExecutor.cpp.
References wmtk::Edge, wmtk::Mesh::get_flag_accessor(), wmtk::Triangle, and wmtk::Vertex.
void wmtk::TriMesh::TriMeshOperationExecutor::collapse_edge | ( | ) |
Definition at line 690 of file TriMeshOperationExecutor.cpp.
References wmtk::utils::DynamicArray< T, ArraySize >::emplace_back(), wmtk::simplex::top_dimension_cofaces_iterable(), wmtk::Triangle, and wmtk::Vertex.
Referenced by wmtk::operations::utils::MultiMeshEdgeCollapseFunctor::operator()().
void wmtk::TriMesh::TriMeshOperationExecutor::collapse_edge_precompute | ( | ) |
Definition at line 627 of file TriMeshOperationExecutor.cpp.
References wmtk::simplex::SimplexCollection::add(), wmtk::simplex::closed_star_iterable(), wmtk::Edge, wmtk::simplex::faces(), wmtk::get_primitive_type_id(), wmtk::simplex::SimplexCollection::reserve(), wmtk::simplex::top_dimension_cofaces_iterable(), wmtk::simplex::top_dimension_cofaces_tuples(), and wmtk::Vertex.
void wmtk::TriMesh::TriMeshOperationExecutor::connect_ears | ( | ) |
Definition at line 226 of file TriMeshOperationExecutor.cpp.
References wmtk::operations::tri_mesh::EdgeOperationData::EarData::eid, and wmtk::operations::tri_mesh::EdgeOperationData::EarData::fid.
void wmtk::TriMesh::TriMeshOperationExecutor::connect_faces_across_spine | ( | ) |
Definition at line 277 of file TriMeshOperationExecutor.cpp.
References wmtk::Triangle.
void wmtk::TriMesh::TriMeshOperationExecutor::create_spine_simplices | ( | ) |
Definition at line 593 of file TriMeshOperationExecutor.cpp.
References wmtk::Edge, wmtk::logger(), wmtk::Mesh::request_simplex_indices(), and wmtk::Vertex.
void wmtk::TriMesh::TriMeshOperationExecutor::delete_simplices | ( | ) |
Definition at line 123 of file TriMeshOperationExecutor.cpp.
References wmtk::logger().
void wmtk::TriMesh::TriMeshOperationExecutor::fill_split_facet_data | ( | ) |
Definition at line 531 of file TriMeshOperationExecutor.cpp.
References wmtk::Mesh::request_simplex_indices(), and wmtk::Triangle.
|
static |
gather all simplices that are deleted in a collapse
The deleted simplices are the intersection of the open star of the vertex and the closed star of the edge. This comes down to one vertex, three edges, and two faces if the edge is on the interior. On the boundary it is one vertex, two edges, and one face.
Definition at line 153 of file TriMeshOperationExecutor.cpp.
References wmtk::simplex::SimplexCollection::add(), wmtk::Edge, wmtk::simplex::faces(), wmtk::get_primitive_type_id(), wmtk::TriMesh::id(), wmtk::Mesh::is_free(), wmtk::TriMesh::switch_edge(), wmtk::simplex::top_dimension_cofaces_iterable(), wmtk::Triangle, and wmtk::Vertex.
auto wmtk::TriMesh::TriMeshOperationExecutor::get_incident_face_data | ( | Tuple | t | ) |
Definition at line 43 of file TriMeshOperationExecutor.cpp.
References wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::ears, wmtk::simplex::Simplex::edge(), wmtk::simplex::utils::SimplexComparisons::equal(), wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::fid, wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::local_operating_tuple, wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::opposite_vid, and wmtk::simplex::Simplex::vertex().
|
static |
gather all simplices that are deleted in a split
The deleted simplices are exactly the open star of the edge
Definition at line 139 of file TriMeshOperationExecutor.cpp.
References wmtk::simplex::Simplex::edge(), wmtk::get_primitive_type_id(), wmtk::TriMesh::id(), and wmtk::simplex::open_star().
jump to the next edge
Definition at line 35 of file TriMeshOperationExecutor.cpp.
References m_mesh, wmtk::PE, wmtk::PV, and wmtk::MeshCRTP< Derived >::switch_tuples().
jump to the previous edge
Definition at line 39 of file TriMeshOperationExecutor.cpp.
void wmtk::TriMesh::TriMeshOperationExecutor::replace_incident_face | ( | IncidentFaceData & | face_data | ) |
new_fids_top | the two new fids on the top sides of AB generated by split_edge(AB) |
new_fids_bottom | the two new fids on the bottom sides of AB generated by split_edge(AB) |
Definition at line 314 of file TriMeshOperationExecutor.cpp.
References wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::ears, wmtk::Edge, wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::fid, wmtk::logger(), wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::new_edge_id, wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::opposite_vid, wmtk::Mesh::request_simplex_indices(), and wmtk::operations::tri_mesh::EdgeOperationData::IncidentFaceData::split_f.
std::vector< int64_t > wmtk::TriMesh::TriMeshOperationExecutor::request_simplex_indices | ( | const PrimitiveType | type, |
int64_t | count | ||
) |
Definition at line 762 of file TriMeshOperationExecutor.cpp.
void wmtk::TriMesh::TriMeshOperationExecutor::split_edge | ( | ) |
Definition at line 550 of file TriMeshOperationExecutor.cpp.
Referenced by wmtk::operations::utils::MultiMeshEdgeSplitFunctor::operator()().
void wmtk::TriMesh::TriMeshOperationExecutor::split_edge_precompute | ( | ) |
Definition at line 444 of file TriMeshOperationExecutor.cpp.
References wmtk::simplex::SimplexCollection::add(), wmtk::simplex::closed_star(), wmtk::simplex::Simplex::edge(), wmtk::simplex::faces(), wmtk::simplex::SimplexCollection::simplex_vector(), wmtk::simplex::SimplexCollection::sort_and_clean(), wmtk::simplex::top_dimension_cofaces(), wmtk::simplex::top_dimension_cofaces_tuples(), wmtk::Triangle, and wmtk::Vertex.
void wmtk::TriMesh::TriMeshOperationExecutor::update_ids_in_ear | ( | const EarData & | ear, |
const int64_t | new_fid, | ||
const int64_t | old_fid | ||
) |
handling the topology glueing of ear to non-ear face, transfering data from ear-oldface to ear-newface
ear_fid | the ear that will be glued |
new_face_fid | |
old_fid | the data where the data is transfered from |
eid | the edge between two glued faces |
Definition at line 199 of file TriMeshOperationExecutor.cpp.
References wmtk::operations::tri_mesh::EdgeOperationData::EarData::eid, and wmtk::operations::tri_mesh::EdgeOperationData::EarData::fid.
attribute::Accessor<int64_t, TriMesh>& wmtk::TriMesh::TriMeshOperationExecutor::ef_accessor |
Definition at line 20 of file TriMeshOperationExecutor.hpp.
attribute::Accessor<int64_t, TriMesh>& wmtk::TriMesh::TriMeshOperationExecutor::fe_accessor |
Definition at line 17 of file TriMeshOperationExecutor.hpp.
attribute::Accessor<int64_t, TriMesh>& wmtk::TriMesh::TriMeshOperationExecutor::ff_accessor |
Definition at line 16 of file TriMeshOperationExecutor.hpp.
std::array<attribute::Accessor<char>, 3> wmtk::TriMesh::TriMeshOperationExecutor::flag_accessors |
Definition at line 15 of file TriMeshOperationExecutor.hpp.
attribute::Accessor<int64_t, TriMesh>& wmtk::TriMesh::TriMeshOperationExecutor::fv_accessor |
Definition at line 18 of file TriMeshOperationExecutor.hpp.
TriMesh& wmtk::TriMesh::TriMeshOperationExecutor::m_mesh |
Definition at line 76 of file TriMeshOperationExecutor.hpp.
Referenced by next_edge().
attribute::Accessor<int64_t, TriMesh>& wmtk::TriMesh::TriMeshOperationExecutor::vf_accessor |
Definition at line 19 of file TriMeshOperationExecutor.hpp.