11 bool check_condition_2)
13 , m_check_condition_2(check_condition_2)
30 std::vector<std::vector<int64_t>> subs_e;
31 std::vector<std::vector<int64_t>> subs_v0;
32 std::vector<std::vector<int64_t>> subs_v1;
33 subs_e.reserve(substructures.size());
34 subs_v0.reserve(substructures.size());
35 subs_v1.reserve(substructures.size());
37 for (
const auto& sub : substructures) {
38 const std::vector<int64_t>
id = sub->absolute_multi_mesh_id();
41 subs_e.emplace_back(
id);
44 subs_v0.emplace_back(
id);
47 subs_v1.emplace_back(
id);
50 std::sort(subs_e.begin(), subs_e.end());
51 std::sort(subs_v0.begin(), subs_v0.end());
52 std::sort(subs_v1.begin(), subs_v1.end());
55 std::vector<std::vector<int64_t>> subs_v0v1;
61 std::back_inserter(subs_v0v1));
63 if (!std::includes(subs_e.begin(), subs_e.end(), subs_v0v1.begin(), subs_v0v1.end())) {
72 const bool v1_includes_v0 =
73 std ::includes(subs_v1.begin(), subs_v1.end(), subs_v0.begin(), subs_v0.end());
74 const bool v0_includes_v1 =
75 std ::includes(subs_v0.begin(), subs_v0.end(), subs_v1.begin(), subs_v1.end());
76 return v0_includes_v1 || v1_includes_v0;
std::vector< std::shared_ptr< Mesh > > get_all_child_meshes() const
returns all multimesh child meshes
std::vector< Tuple > map_to_child_tuples(const Mesh &child_mesh, const simplex::Simplex &my_simplex) const
optimized map fromsimplex from this mesh to one of its direct children
const Mesh & mesh() const
SeparateSubstructuresInvariant(const Mesh &m, bool check_condition_2=true)
bool before(const simplex::Simplex &s) const override
const bool m_check_condition_2
const Tuple & tuple() const
static Simplex vertex(const Mesh &m, const Tuple &t)
PrimitiveType primitive_type() const
void set_intersection(const std::unordered_set< int > &s1, const std::unordered_set< int > &s2, std::vector< int > &v)