Wildmeshing Toolkit
CollapseAlternateFacetOptionData.hpp
Go to the documentation of this file.
1 #pragma once
2 #include <array>
3 #include <wmtk/autogen/Dart.hpp>
5 namespace wmtk {
6 class Mesh;
7 namespace autogen {
8 class SimplexDart;
9 }
10 } // namespace wmtk
13 {
14 public:
16  CollapseAlternateFacetOptionData(const Mesh& m, const Tuple& input_tuple);
18  const Mesh& m,
19  const autogen::SimplexDart& sd,
20  const Tuple& input_tuple);
22 
23  // Stores {ear_global_id, M}
24  // where M is defined by:
25  // Let {G, O} be the input dart
26  // Let {Ge, Oe} be the left/0 or right/1 ear opposite
27  // Let R be such that Oe = R O
28  // We select an arbitrary dart that includes the right face
29  // {G,Oa} a dart that includes the ear face, and
30  // {Ge,Ob} a dart denoting a art on Ge whose D-1 subdart is equivalent
31  // Let M be Ob = M Oa.
32  // Note that for D-1 subdart encoded on G, M will return the equivalent D-1 subdart on Ge
33  //
34  std::array<autogen::Dart, 2> alts;
35  std::array<int8_t, 2> local_boundary_indices;
36 
37  // Let d be a dart where every D-simplex for D <the input mesh dimension
38  // lies in left/index=0 (equivalently right/index=1) ear then
39  // returns a dart such that those simplices are preserved using the other face
40  //
41  // This is given by the definition of alts and applying
42  // Let {G, Od} be d
43  // We compute {G, M Od}
44  //
45  Dart convert(const Dart& d, size_t index) const;
46 
47 
48 private:
49  Dart left_switches(const Mesh& m, const Tuple& t) const;
50  Dart right_switches(const Mesh& m, const Tuple& t) const;
51  // given an ear tuple reports the relative orientation across the edge
52  Dart get_neighbor_action(const Mesh& m, const Tuple& t, int8_t local_action) const;
53 };
54 } // namespace wmtk::operations::internal
Dart convert(const Dart &d, size_t index) const
Dart get_neighbor_action(const Mesh &m, const Tuple &t, int8_t local_action) const
Definition: Accessor.hpp:6