Wildmeshing Toolkit
Loading...
Searching...
No Matches
NoChildMeshAttachingInvariant.cpp
Go to the documentation of this file.
1
#include "
NoChildMeshAttachingInvariant.hpp
"
2
#include <
wmtk/Mesh.hpp
>
3
#include <
wmtk/simplex/Simplex.hpp
>
4
5
namespace
wmtk::invariants
{
6
NoChildMeshAttachingInvariant::NoChildMeshAttachingInvariant
(
const
Mesh
& m)
7
:
Invariant
(m, true, false, false)
8
{}
9
10
bool
NoChildMeshAttachingInvariant::before
(
const
simplex::Simplex
& t)
const
11
{
12
assert(t.
primitive_type
() ==
PrimitiveType::Edge
);
13
14
auto
child_meshes =
mesh
().
get_child_meshes
();
15
16
for
(
auto
child_mesh : child_meshes) {
17
// if (!mesh().map_to_child(*child_mesh, simplex::Simplex::edge(mesh(), t.tuple())).empty())
18
// {
19
// continue;
20
// }
21
if
(!
mesh
()
22
.
map_to_child
(*child_mesh,
simplex::Simplex::vertex
(
mesh
(), t.
tuple
()))
23
.empty() ||
24
!
mesh
()
25
.
map_to_child
(
26
*child_mesh,
27
simplex::Simplex::vertex
(
28
mesh
(),
29
mesh
().switch_tuple(t.
tuple
(),
PrimitiveType::Vertex
)))
30
.empty()) {
31
return
false
;
32
}
33
}
34
35
return
true
;
36
}
37
}
// namespace wmtk::invariants
Mesh.hpp
NoChildMeshAttachingInvariant.hpp
Simplex.hpp
wmtk::Mesh
Definition
Mesh.hpp:95
wmtk::Mesh::map_to_child
std::vector< simplex::Simplex > map_to_child(const Mesh &child_mesh, const simplex::Simplex &my_simplex) const
optimized map fromsimplex from this mesh to one of its direct children
Definition
Mesh_multimesh.cpp:110
wmtk::Mesh::get_child_meshes
std::vector< std::shared_ptr< Mesh > > get_child_meshes() const
returns the direct multimesh child meshes for the current mesh
Definition
Mesh_multimesh.cpp:222
wmtk::invariants::Invariant
Definition
Invariant.hpp:12
wmtk::invariants::Invariant::mesh
const Mesh & mesh() const
Definition
Invariant.cpp:35
wmtk::invariants::NoChildMeshAttachingInvariant::before
bool before(const simplex::Simplex &t) const override
Definition
NoChildMeshAttachingInvariant.cpp:10
wmtk::invariants::NoChildMeshAttachingInvariant::NoChildMeshAttachingInvariant
NoChildMeshAttachingInvariant(const Mesh &m)
Definition
NoChildMeshAttachingInvariant.cpp:6
wmtk::simplex::Simplex
Definition
Simplex.hpp:22
wmtk::simplex::Simplex::vertex
static Simplex vertex(const Mesh &m, const Tuple &t)
Definition
Simplex.hpp:56
wmtk::simplex::Simplex::tuple
const Tuple & tuple() const
Definition
Simplex.hpp:53
wmtk::simplex::Simplex::primitive_type
PrimitiveType primitive_type() const
Definition
Simplex.hpp:51
wmtk::invariants
Definition
CollapseEnergyBeforeInvariant.cpp:11
wmtk::PrimitiveType::Vertex
@ Vertex
wmtk::PrimitiveType::Edge
@ Edge
src
wmtk
invariants
NoChildMeshAttachingInvariant.cpp
Generated by
1.9.8