Wildmeshing Toolkit
CollapseNewValueApplicator.hpp
Go to the documentation of this file.
2 
3 #include <wmtk/attribute/SmartAttributeHandle.hpp>
4 
6 
8 {
10 
11 public:
13  const ReturnData& ret_data,
14  PrimitiveType pt,
15  const std::array<Tuple, 2>& input_simplices,
16  const Tuple& output_simplex) const = 0;
18  const ReturnData& ret_data,
19  PrimitiveType pt,
20  const std::vector<Tuple>& output_simplex) const;
21 
22  virtual const Mesh& mesh() const = 0;
23 
24 private:
25  // the edge that was collapsed upon
26  Tuple collapsed_edge(const ReturnData& ret_data, const Tuple& input_tuple) const;
27 
28 
29  // the sipmlices that were merged together
30  std::vector<std::array<Tuple, 2>>
31  merged_simplices(const ReturnData& ret_data, const Tuple& input_tuple, PrimitiveType pt) const;
32 
33  // the simplices that were created by merging simplices
34  std::vector<Tuple>
35  new_simplices(const ReturnData& ret_data, const Tuple& input_tuple, PrimitiveType pt) const;
36 
37  // set of faces whose one ring were modified
38  // SHOULD be safe to resurrect to a previous state
39  std::vector<Tuple> output_modified_simplices(
40  const ReturnData& ret_data,
41  const Tuple& output_tuple,
42  const PrimitiveType pt) const;
43 
44 
45  // the top dimension that were removed in the operation
46  // not necessarily used, but defines a unique ordering for
47  // * input_ears
48  // * merged_edges
49  // that defines a correspondence between the two
50  std::vector<Tuple> removed_top_dimension_simplices(
51  const ReturnData& ret_data,
52  const Tuple& input_tuple) const;
53 };
54 template <typename T>
55 
56 SmartAttributeHandle<T>
57 } // namespace wmtk::multimesh::attribute
Tuple collapsed_edge(const ReturnData &ret_data, const Tuple &input_tuple) const
std::vector< Tuple > new_simplices(const ReturnData &ret_data, const Tuple &input_tuple, PrimitiveType pt) const
wmtk::multiesh::operations::CollapseReturnData ReturnData
virtual void update_neighboring_simplices(const ReturnData &ret_data, PrimitiveType pt, const std::vector< Tuple > &output_simplex) const
std::vector< std::array< Tuple, 2 > > merged_simplices(const ReturnData &ret_data, const Tuple &input_tuple, PrimitiveType pt) const
std::vector< Tuple > removed_top_dimension_simplices(const ReturnData &ret_data, const Tuple &input_tuple) const
std::vector< Tuple > output_modified_simplices(const ReturnData &ret_data, const Tuple &output_tuple, const PrimitiveType pt) const
virtual void update_merged_simplices(const ReturnData &ret_data, PrimitiveType pt, const std::array< Tuple, 2 > &input_simplices, const Tuple &output_simplex) const =0
wmtk::utils::metaprogramming::ReferenceWrappedFunctorReturnCacheCustomComparator< wmtk::operations::utils::MultiMeshEdgeCollapseFunctor, wmtk::utils::metaprogramming::MeshVariantTraits, wmtk::simplex::utils::MeshSimplexComparator, simplex::NavigatableSimplex > CollapseReturnData