Wildmeshing Toolkit
SplitNewAttributeTopoInfo.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 
5 namespace wmtk::operations {
7 {
8 public:
10  using ReturnVariant = ReturnData::ReturnVariant;
11 
12  virtual ~SplitNewAttributeTopoInfo() = default;
13 
14  virtual std::vector<std::array<Tuple, 2>> input_ear_simplices(
15  const ReturnVariant& ret_data,
16  const Tuple& input_tuple,
17  PrimitiveType pt) const = 0;
18 
19  // the simplices at the boundary of the pairs of simplices that were split
20  // vertex should return 0
21  // edge should return 2
22  virtual std::vector<Tuple> output_rib_simplices(
23  const ReturnVariant& ret_data,
24  const Tuple& output_tuple,
25  PrimitiveType pt) const = 0;
26 
27 
28  // the sipmlices that were split from one simplex above
29  // vertex should return 1
30  virtual std::vector<std::array<Tuple, 2>> output_split_simplices(
31  const ReturnVariant& ret_data,
32  const Tuple& output_tuple,
33  PrimitiveType pt) const = 0;
34 
35  // the simplices that were split in half
36  // vertex should return 0
37  // edge should return 1 (the input edge)
38  virtual std::vector<Tuple> input_split_simplices(
39  const ReturnVariant& ret_data,
40  const Tuple& input_tuple,
41  PrimitiveType pt) const = 0;
42 
43  virtual std::vector<std::array<int64_t, 2>> output_duplicated_free_simplices(
44  const ReturnVariant& ret_data,
45  PrimitiveType pt) const = 0;
46 
49  // virtual std::vector<Tuple> output_modified_simplices(
50  // const ReturnVariant& ret_data,
51  // const PrimitiveType pt,
52  // const Tuple& output_tuple) const = 0;
53 
54 
60  // std::vector<Tuple> split_top_dimension_simplices(
61  // const ReturnVariant& ret_data,
62  // const Tuple& input_tuple) const;
63 };
64 } // namespace wmtk::operations
virtual std::vector< std::array< Tuple, 2 > > input_ear_simplices(const ReturnVariant &ret_data, const Tuple &input_tuple, PrimitiveType pt) const =0
virtual std::vector< Tuple > output_rib_simplices(const ReturnVariant &ret_data, const Tuple &output_tuple, PrimitiveType pt) const =0
virtual std::vector< std::array< Tuple, 2 > > output_split_simplices(const ReturnVariant &ret_data, const Tuple &output_tuple, PrimitiveType pt) const =0
wmtk::multimesh::operations::SplitReturnData ReturnData
virtual std::vector< Tuple > input_split_simplices(const ReturnVariant &ret_data, const Tuple &input_tuple, PrimitiveType pt) const =0
virtual std::vector< std::array< int64_t, 2 > > output_duplicated_free_simplices(const ReturnVariant &ret_data, PrimitiveType pt) const =0
wmtk::utils::metaprogramming::ReferenceWrappedFunctorReturnCacheCustomComparator< wmtk::operations::utils::MultiMeshEdgeSplitFunctor, wmtk::utils::metaprogramming::MeshVariantTraits, wmtk::simplex::utils::MeshSimplexComparator, simplex::NavigatableSimplex > SplitReturnData