Wildmeshing Toolkit
wmtk::EdgeMesh Class Reference

#include <EdgeMesh.hpp>

Inheritance diagram for wmtk::EdgeMesh:
[legend]
Collaboration diagram for wmtk::EdgeMesh:
[legend]

Classes

class  EdgeMeshOperationExecutor
 

Public Member Functions

 EdgeMesh ()
 
 ~EdgeMesh () override
 
 EdgeMesh (const EdgeMesh &o)=delete
 
 EdgeMesh (EdgeMesh &&o)=default
 
EdgeMeshoperator= (const EdgeMesh &o)=delete
 
EdgeMeshoperator= (EdgeMesh &&o)=default
 
Tuple switch_tuple (const Tuple &tuple, PrimitiveType type) const override
 switch the orientation of the Tuple of the given dimension More...
 
bool is_ccw (const Tuple &tuple) const override
 TODO this needs dimension? More...
 
bool is_boundary (PrimitiveType, const Tuple &tuple) const override
 check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not More...
 
bool is_boundary_vertex (const Tuple &tuple) const
 
void initialize (Eigen::Ref< const RowVectors2l > E, bool is_free=false)
 
void initialize_free (int64_t count)
 
void initialize (Eigen::Ref< const RowVectors2l > EV, Eigen::Ref< const RowVectors2l > EE, Eigen::Ref< const VectorXl > VE)
 
bool is_valid (const Tuple &tuple) const final override
 check validity of tuple including its hash More...
 
bool is_connectivity_valid () const override
 
std::vector< std::vector< TypedAttributeHandle< int64_t > > > connectivity_attributes () const override
 Returns a vector of vectors of attribute handles. More...
 
Tuple switch_vertex (const Tuple &tuple) const
 
Tuple switch_edge (const Tuple &tuple) const
 
std::vector< Tupleorient_vertices (const Tuple &tuple) const override
 
bool is_boundary (const simplex::Simplex &tuple) const
 check if a simplex lies on a boundary or not More...
 
virtual bool is_boundary (PrimitiveType, const Tuple &tuple) const=0
 check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not More...
 
- Public Member Functions inherited from wmtk::MeshCRTP< EdgeMesh >
EdgeMeshderived ()
 CRTP utility to extract the derived type of this. More...
 
const EdgeMeshderived () const
 CRTP utility to extract the derived type of this with constnesss. More...
 
Tuple switch_tuple (const Tuple &tuple, PrimitiveType type) const override
 switch the orientation of the Tuple of the given dimension More...
 
Tuple switch_tuples (const Tuple &tuple, const ContainerType &op_sequence) const
 Performs a sequence of switch_tuple operations in the order specified in op_sequence. More...
 
Tuple switch_tuples (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const
 annoying initializer list prototype to catch switch_tuples(t, {PV,PE}) More...
 
bool is_ccw (const Tuple &tuple) const override
 returns if a tuple is counterclockwise or not More...
 
bool is_boundary (PrimitiveType pt, const Tuple &tuple) const override
 returns if a simplex is on the boundary of hte mesh. For anything but dimension - 1 this checks if this is the face of any boundary dimension-1 facet More...
 
attribute::Accessor< T, EdgeMesh, Dim > create_accessor (const TypedAttributeHandle< T > &handle)
 constructs an accessor that is aware of the derived mesh's type More...
 
attribute::Accessor< T, EdgeMesh, Dim > create_accessor (const attribute::MeshAttributeHandle &handle)
 constructs a accessor that is aware of the derived mesh's type More...
 
const attribute::Accessor< T, EdgeMesh, Dim > create_const_accessor (const attribute::TypedAttributeHandle< T > &handle) const
 constructs a const accessor that is aware of the derived mesh's type More...
 
const attribute::Accessor< T, EdgeMesh, Dim > create_const_accessor (const attribute::MeshAttributeHandle &handle) const
 constructs a const accessor that is aware of the derived mesh's type More...
 
 Mesh (const int64_t &dimension)
 
 Mesh (const int64_t &dimension, const int64_t &max_primitive_type_id, PrimitiveType hash_type)
 
 Mesh (Mesh &&other)
 
 Mesh (const Mesh &other)=delete
 
- Public Member Functions inherited from wmtk::Mesh
int64_t top_cell_dimension () const
 
PrimitiveType top_simplex_type () const
 
bool is_free () const
 
std::map< std::string, const wmtk::utils::Hashable * > child_hashables () const override
 
std::map< std::string, std::size_t > child_hashes () const override
 
 Mesh (const int64_t &dimension)
 
 Mesh (const int64_t &dimension, const int64_t &max_primitive_type_id, PrimitiveType hash_type)
 
 Mesh (Mesh &&other)
 
 Mesh (const Mesh &other)=delete
 
Meshoperator= (const Mesh &other)=delete
 
Meshoperator= (Mesh &&other)
 
virtual ~Mesh ()
 
void serialize (MeshWriter &writer, const Mesh *local_root=nullptr) const
 
std::vector< Tupleget_all (PrimitiveType type) const
 Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index. More...
 
std::vector< simplex::IdSimplexget_all_id_simplex (PrimitiveType type) const
 
simplex::IdSimplex get_id_simplex (const Tuple &tuple, PrimitiveType pt) const
 Retrieve the IdSimplex that is represented by the tuple and primitive type. More...
 
simplex::IdSimplex get_id_simplex (const simplex::Simplex &s) const
 
simplex::Simplex get_simplex (const simplex::IdSimplex &s) const
 Convert an IdSimplex into a Simplex. More...
 
Tuple get_tuple_from_id_simplex (const simplex::IdSimplex &s) const
 
virtual std::tuple< std::vector< std::vector< int64_t > >, std::vector< std::vector< int64_t > > > consolidate ()
 Consolidate the attributes, moving all valid simplexes at the beginning of the corresponding vector. More...
 
std::vector< attribute::MeshAttributeHandle::HandleVariantbuiltin_attributes () const
 
std::vector< attribute::MeshAttributeHandle::HandleVariantcustom_attributes () const
 
template<typename T >
attribute::MeshAttributeHandle register_attribute (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
 
template<typename T >
attribute::TypedAttributeHandle< T > register_attribute_typed (const std::string &name, PrimitiveType type, int64_t size, bool replace=false, T default_value=T(0))
 
template<typename T >
bool has_attribute (const std::string &name, const PrimitiveType ptype) const
 
template<typename T >
attribute::MeshAttributeHandle get_attribute_handle (const std::string &name, const PrimitiveType ptype) const
 
template<typename T >
attribute::TypedAttributeHandle< T > get_attribute_handle_typed (const std::string &name, const PrimitiveType ptype) const
 
template<typename T , int D = Eigen::Dynamic>
attribute::Accessor< T, Mesh, D > create_accessor (const attribute::MeshAttributeHandle &handle)
 
template<typename T , int D = Eigen::Dynamic>
const attribute::Accessor< T, Mesh, D > create_const_accessor (const attribute::MeshAttributeHandle &handle) const
 
template<typename T , int D = Eigen::Dynamic>
attribute::Accessor< T, Mesh, D > create_accessor (const TypedAttributeHandle< T > &handle)
 
template<typename T , int D = Eigen::Dynamic>
const attribute::Accessor< T, Mesh, D > create_const_accessor (const TypedAttributeHandle< T > &handle) const
 
template<typename T >
int64_t get_attribute_dimension (const TypedAttributeHandle< T > &handle) const
 
template<typename T >
const T & get_attribute_default_value (const TypedAttributeHandle< T > &handle) const
 
template<typename T >
std::string get_attribute_name (const TypedAttributeHandle< T > &handle) const
 
std::string get_attribute_name (const attribute::MeshAttributeHandle::HandleVariant &handle) const
 
void clear_attributes (const std::vector< attribute::MeshAttributeHandle::HandleVariant > &keep_attributes)
 Remove all custom attributes besides the one passed in. More...
 
void clear_attributes ()
 
void clear_attributes (const std::vector< attribute::MeshAttributeHandle > &keep_attributes)
 
void delete_attribute (const attribute::MeshAttributeHandle &to_delete)
 
void delete_attribute (const attribute::MeshAttributeHandle::HandleVariant &to_delete)
 
multimesh::attribute::AttributeScopeHandle create_scope ()
 
template<typename Functor , typename... Args>
decltype(auto) parent_scope (Functor &&f, Args &&... args) const
 Evaluate the passed in function inside the parent scope. More...
 
const attribute::FlagAccessor< Meshget_flag_accessor (PrimitiveType type) const
 
const attribute::FlagAccessor< Meshget_const_flag_accessor (PrimitiveType type) const
 
bool operator== (const Mesh &other) const
 
void assert_capacity_valid () const
 
template<typename ContainerType >
Tuple switch_tuples (const Tuple &tuple, const ContainerType &op_sequence) const
 
Tuple switch_tuples (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const
 
template<typename ContainerType >
Tuple switch_tuples_unsafe (const Tuple &tuple, const ContainerType &op_sequence) const
 
Tuple switch_tuples_unsafe (const Tuple &tuple, const std::initializer_list< PrimitiveType > &op_sequence) const
 
void set_capacities_from_flags ()
 
int64_t capacity (PrimitiveType type) const
 read in the m_capacities return the upper bound for the number of entities of the given dimension More...
 
bool is_boundary (const simplex::Simplex &tuple) const
 check if a simplex lies on a boundary or not More...
 
bool is_hash_valid (const Tuple &tuple, const attribute::Accessor< int64_t > &hash_accessor) const
 
bool is_hash_valid (const Tuple &tuple) const
 
bool is_removed (const Tuple &tuple) const
 
bool is_removed (const Tuple &tuple, PrimitiveType pt) const
 
bool is_valid (const simplex::Simplex &s) const
 Check if the cached id in a simplex is up-to-date. More...
 
bool is_multi_mesh_root () const
 return true if this mesh is the root of a multimesh tree More...
 
Meshget_multi_mesh_root ()
 returns a reference to the root of a multimesh tree More...
 
const Meshget_multi_mesh_root () const
 returns a const reference to the root of a multimesh tree More...
 
Meshget_multi_mesh_mesh (const std::vector< int64_t > &absolute_id)
 
const Meshget_multi_mesh_mesh (const std::vector< int64_t > &absolute_id) const
 
Meshget_multi_mesh_child_mesh (const std::vector< int64_t > &relative_id)
 
const Meshget_multi_mesh_child_mesh (const std::vector< int64_t > &relative_id) const
 
std::vector< std::shared_ptr< Mesh > > get_child_meshes () const
 returns the direct multimesh child meshes for the current mesh More...
 
std::vector< std::shared_ptr< Mesh > > get_all_child_meshes () const
 returns all multimesh child meshes More...
 
std::vector< std::shared_ptr< const Mesh > > get_all_meshes () const
 returns all meshes in multimesh More...
 
std::vector< int64_t > absolute_multi_mesh_id () const
 returns a unique identifier for this mesh within a single multimesh structure More...
 
void register_child_mesh (const std::shared_ptr< Mesh > &child_mesh_ptr, const std::vector< std::array< Tuple, 2 >> &map_tuples)
 register a mesh as the child of this mesh More...
 
void deregister_child_mesh (const std::shared_ptr< Mesh > &child_mesh_ptr)
 Deregister a child mesh. More...
 
std::vector< simplex::Simplexmap (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
 maps a simplex from this mesh to any other mesh More...
 
std::vector< simplex::Simplexmap (const Mesh &other_mesh, const std::vector< simplex::Simplex > &my_simplices) const
 
std::vector< simplex::Simplexlub_map (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
 maps a simplex from this mesh to any other mesh using LUB mesh as root More...
 
std::vector< simplex::Simplexlub_map (const Mesh &other_mesh, const std::vector< simplex::Simplex > &my_simplices) const
 
simplex::Simplex map_to_parent (const simplex::Simplex &my_simplex) const
 optimized map from a simplex from this mesh to its direct parent More...
 
simplex::Simplex map_to_root (const simplex::Simplex &my_simplex) const
 maps a simplex from this mesh to the root mesh More...
 
std::vector< simplex::Simplexmap_to_child (const Mesh &child_mesh, const simplex::Simplex &my_simplex) const
 optimized map fromsimplex from this mesh to one of its direct children More...
 
std::vector< Tuplemap_tuples (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
 maps a simplex from this mesh to any other mesh More...
 
std::vector< Tuplemap_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const
 
std::vector< Tuplelub_map_tuples (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
 maps a simplex from this mesh to any other mesh using LUB mesh as root More...
 
std::vector< Tuplelub_map_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const
 
Tuple map_to_parent_tuple (const simplex::Simplex &my_simplex) const
 optimized map from a simplex from this mesh to its direct parent More...
 
Tuple map_to_root_tuple (const simplex::Simplex &my_simplex) const
 maps a simplex from this mesh to the root mesh More...
 
std::vector< Tuplemap_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 More...
 
bool can_map (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const
 
void update_vertex_operation_hashes (const Tuple &vertex, attribute::Accessor< int64_t > &hash_accessor)
 wrapper function to update hashes (for parent mesh *this and its child meshes) after vertex operations More...
 
bool has_child_mesh_in_dimension (int64_t dimension) const
 returns if the mesh has a child mesh in the given dimension More...
 
bool has_child_mesh () const
 
bool is_from_same_multi_mesh_structure (const Mesh &other) const
 
template<typename T , int D>
auto create_accessor (const TypedAttributeHandle< T > &handle) -> attribute::Accessor< T, Mesh, D >
 
template<typename T , int D>
auto create_const_accessor (const TypedAttributeHandle< T > &handle) const -> const attribute::Accessor< T, Mesh, D >
 
template<typename T , int D>
auto create_accessor (const attribute::MeshAttributeHandle &handle) -> attribute::Accessor< T, Mesh, D >
 
template<typename T , int D>
auto create_const_accessor (const attribute::MeshAttributeHandle &handle) const -> const attribute::Accessor< T, Mesh, D >
 
- Public Member Functions inherited from wmtk::utils::MerkleTreeInteriorNode
std::map< std::string, std::size_t > child_hashes () const override
 
- Public Member Functions inherited from wmtk::utils::Hashable
 Hashable ()
 
 Hashable (const Hashable &)
 
 Hashable (Hashable &&)
 
Hashableoperator= (const Hashable &)
 
Hashableoperator= (Hashable &&)
 
virtual ~Hashable ()
 
virtual std::size_t hash () const
 

Protected Member Functions

int64_t id (const Tuple &tuple, PrimitiveType type) const
 
int64_t id_vertex (const Tuple &tuple) const
 
int64_t id_edge (const Tuple &tuple) const
 
Tuple tuple_from_id (const PrimitiveType type, const int64_t gid) const override
 internal function that returns the tuple of requested type, and has the global index cid More...
 
Tuple tuple_from_global_ids (int64_t eid, int64_t vid) const
 
Tuple vertex_tuple_from_id (int64_t id) const
 
Tuple edge_tuple_from_id (int64_t id) const
 
- Protected Member Functions inherited from wmtk::MeshCRTP< EdgeMesh >
int64_t id (const Tuple &tuple, PrimitiveType type) const
 Returns the id of a simplex encoded in a tuple. More...
 
int64_t id (const simplex::Simplex &s) const final override
 variant of id that can cache internally held values More...
 
int64_t id (const Tuple &tuple, PrimitiveType type) const
 return the global id of the Tuple of the given dimension More...
 
int64_t id (const simplex::NavigatableSimplex &s) const
 
int64_t id (const simplex::IdSimplex &s) const
 
virtual int64_t id (const simplex::Simplex &s) const =0
 Forwarding version of id on simplices that does id caching. More...
 
int64_t id_virtual (const Tuple &tuple, PrimitiveType type) const final override
 internal utility for overriding the mesh class's id function without having the final override block the derived class's override (we can't have Mesh::id be virtual, MeshCRTP<Derived>::id final override, and TriMesh::id. More...
 
Tuple tuple_from_id (const PrimitiveType type, const int64_t gid) const override
 internal function that returns the tuple of requested type, and has the global index cid More...
 
- Protected Member Functions inherited from wmtk::Mesh
attribute::FlagAccessor get_flag_accessor (PrimitiveType type)
 
simplex::NavigatableSimplex simplex_from_id (const PrimitiveType type, const int64_t gid) const
 
std::vector< std::vector< int64_t > > simplices_to_gids (const std::vector< std::vector< simplex::Simplex >> &simplices) const
 
void reserve_attributes_to_fit ()
 reserve space for all attributes data types for all dimensional simplices More...
 
void reserve_attributes (PrimitiveType type, int64_t size)
 
void reserve_attributes (int64_t dimension, int64_t size)
 
void set_capacities (std::vector< int64_t > capacities)
 
void reserve_more_attributes (PrimitiveType type, int64_t size)
 
void reserve_more_attributes (const std::vector< int64_t > &sizes)
 
void guarantee_more_attributes (PrimitiveType type, int64_t size)
 
void guarantee_more_attributes (const std::vector< int64_t > &sizes)
 
void guarantee_at_least_attributes (PrimitiveType type, int64_t size)
 
void guarantee_at_least_attributes (const std::vector< int64_t > &sizes)
 
std::vector< int64_t > request_simplex_indices (PrimitiveType type, int64_t count)
 
bool is_removed (int64_t index) const
 
bool is_removed (int64_t index, PrimitiveType pt) const
 
attribute::AttributeScopeHandle create_single_mesh_scope ()
 
int64_t id (const Tuple &tuple, PrimitiveType type) const
 return the global id of the Tuple of the given dimension More...
 
int64_t id (const simplex::NavigatableSimplex &s) const
 
int64_t id (const simplex::IdSimplex &s) const
 

Protected Attributes

attribute::TypedAttributeHandle< int64_t > m_ve_handle
 
attribute::TypedAttributeHandle< int64_t > m_ev_handle
 
attribute::TypedAttributeHandle< int64_t > m_ee_handle
 
- Protected Attributes inherited from wmtk::Mesh
attribute::AttributeManager m_attribute_manager
 
multimesh::MultiMeshManager m_multi_mesh_manager
 
int64_t m_top_cell_dimension = -1
 
bool m_is_free = false
 

Friends

class MeshCRTP< EdgeMesh >
 
template<typename U , typename MeshType , int Dim>
class attribute::Accessor
 
class operations::utils::MultiMeshEdgeSplitFunctor
 
class operations::utils::MultiMeshEdgeCollapseFunctor
 
class operations::utils::UpdateEdgeOperationMultiMeshMapFunctor
 

Additional Inherited Members

- Static Protected Member Functions inherited from wmtk::Mesh
template<typename T , typename MeshType >
static auto & get_index_access (attribute::Accessor< T, MeshType > &attr)
 
template<typename T , typename MeshType >
static auto & get_index_access (const attribute::Accessor< T, MeshType > &attr)
 

Detailed Description

Definition at line 15 of file EdgeMesh.hpp.

Constructor & Destructor Documentation

◆ EdgeMesh() [1/3]

wmtk::EdgeMesh::EdgeMesh ( )

Definition at line 9 of file EdgeMesh.cpp.

References wmtk::Edge, and wmtk::Vertex.

◆ ~EdgeMesh()

wmtk::EdgeMesh::~EdgeMesh ( )
overridedefault

◆ EdgeMesh() [2/3]

wmtk::EdgeMesh::EdgeMesh ( const EdgeMesh o)
delete

◆ EdgeMesh() [3/3]

wmtk::EdgeMesh::EdgeMesh ( EdgeMesh &&  o)
default

Member Function Documentation

◆ connectivity_attributes()

std::vector< std::vector< TypedAttributeHandle< int64_t > > > wmtk::EdgeMesh::connectivity_attributes ( ) const
overridevirtual

Returns a vector of vectors of attribute handles.

The first index denotes the type of simplex pointed by the attribute (i.e. the index type). As an example, the FV relationship points to vertices so it should be returned in the slot [0].

Implements wmtk::Mesh.

Definition at line 282 of file EdgeMesh.cpp.

References m_ee_handle, m_ev_handle, and m_ve_handle.

◆ edge_tuple_from_id()

Tuple wmtk::EdgeMesh::edge_tuple_from_id ( int64_t  id) const
protected

Definition at line 188 of file EdgeMesh.cpp.

References is_valid().

Referenced by tuple_from_id().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ id()

int64_t wmtk::EdgeMesh::id ( const Tuple tuple,
PrimitiveType  type 
) const
inlineprotected

Definition at line 98 of file EdgeMesh.hpp.

References wmtk::attribute::Accessor< T, MeshType, Dim >::const_vector_attribute(), wmtk::Edge, m_ev_handle, wmtk::Tuple::m_global_cid, wmtk::Tuple::m_local_vid, wmtk::Tetrahedron, wmtk::Triangle, and wmtk::Vertex.

Here is the call graph for this function:

◆ id_edge()

int64_t wmtk::EdgeMesh::id_edge ( const Tuple tuple) const
inlineprotected

Definition at line 64 of file EdgeMesh.hpp.

References wmtk::Edge, and wmtk::MeshCRTP< EdgeMesh >::id().

Referenced by wmtk::EdgeMesh::EdgeMeshOperationExecutor::get_collapse_simplices_to_delete(), and wmtk::EdgeMesh::EdgeMeshOperationExecutor::get_split_simplices_to_delete().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ id_vertex()

int64_t wmtk::EdgeMesh::id_vertex ( const Tuple tuple) const
inlineprotected

Definition at line 63 of file EdgeMesh.hpp.

References wmtk::MeshCRTP< EdgeMesh >::id(), and wmtk::Vertex.

Referenced by wmtk::EdgeMesh::EdgeMeshOperationExecutor::get_collapse_simplices_to_delete().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initialize() [1/2]

void wmtk::EdgeMesh::initialize ( Eigen::Ref< const RowVectors2l E,
bool  is_free = false 
)

Definition at line 132 of file EdgeMesh.cpp.

References wmtk::edgemesh_topology_initialization(), wmtk::Mesh::is_free(), and wmtk::Mesh::m_is_free.

Referenced by wmtk::components::internal::MultiMeshFromTag::compute_substructure_mesh(), and initialize_free().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ initialize() [2/2]

void wmtk::EdgeMesh::initialize ( Eigen::Ref< const RowVectors2l EV,
Eigen::Ref< const RowVectors2l EE,
Eigen::Ref< const VectorXl VE 
)

◆ initialize_free()

void wmtk::EdgeMesh::initialize_free ( int64_t  count)

Definition at line 141 of file EdgeMesh.cpp.

References initialize().

Referenced by wmtk::components::internal::MultiMeshFromTag::create_substructure_soup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_boundary() [1/3]

bool wmtk::Mesh::is_boundary

check if a simplex lies on a boundary or not

Parameters
simplex
Returns
true if this simplex lies on the boundary of the mesh
false otherwise

Definition at line 424 of file Mesh.cpp.

◆ is_boundary() [2/3]

bool wmtk::EdgeMesh::is_boundary ( PrimitiveType  ,
const Tuple tuple 
) const
overridevirtual

check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not

Parameters
simplex
Returns
true if this simplex lies on the boundary of the mesh
false otherwise

Implements wmtk::Mesh.

Definition at line 17 of file EdgeMesh.cpp.

References wmtk::Edge, is_boundary_vertex(), wmtk::Tetrahedron, wmtk::Triangle, and wmtk::Vertex.

Here is the call graph for this function:

◆ is_boundary() [3/3]

virtual bool wmtk::Mesh::is_boundary

check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not

Parameters
simplex
Returns
true if this simplex lies on the boundary of the mesh
false otherwise

◆ is_boundary_vertex()

bool wmtk::EdgeMesh::is_boundary_vertex ( const Tuple tuple) const

Definition at line 31 of file EdgeMesh.cpp.

References wmtk::attribute::Accessor< T, MeshType, Dim >::const_vector_attribute(), is_valid(), m_ee_handle, and wmtk::Tuple::m_local_vid.

Referenced by is_boundary(), wmtk::simplex::link_condition(), and wmtk::simplex::top_dimension_cofaces_tuples().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_ccw()

bool wmtk::EdgeMesh::is_ccw ( const Tuple tuple) const
overridevirtual

TODO this needs dimension?

Parameters
m
Returns
true if the Tuple is oriented counter-clockwise
false

Implements wmtk::Mesh.

Definition at line 92 of file EdgeMesh.cpp.

References is_valid(), and wmtk::Tuple::m_local_vid.

Referenced by switch_tuple().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_connectivity_valid()

bool wmtk::EdgeMesh::is_connectivity_valid ( ) const
overridevirtual

Implements wmtk::Mesh.

Definition at line 236 of file EdgeMesh.cpp.

References wmtk::Mesh::capacity(), wmtk::attribute::CachingAccessor< T, Dim >::const_scalar_attribute(), wmtk::attribute::CachingAccessor< T, Dim >::const_vector_attribute(), wmtk::Edge, wmtk::Mesh::get_flag_accessor(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), wmtk::attribute::FlagAccessor< MeshType >::index_access(), wmtk::attribute::IndexFlagAccessor< MeshType >::is_active(), wmtk::logger(), m_ee_handle, m_ev_handle, m_ve_handle, and wmtk::Vertex.

Referenced by wmtk::components::internal::MultiMeshFromTag::compute_substructure_mesh(), and is_valid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_valid()

bool wmtk::EdgeMesh::is_valid ( const Tuple tuple) const
finaloverridevirtual

check validity of tuple including its hash

Parameters
tuplethe tuple to be checked
typeonly the top cell dimension, other validity follows with assumption of manifoldness. 2->triangle, 3->tetrahedron
Returns
true if is valid
false

Reimplemented from wmtk::Mesh.

Definition at line 214 of file EdgeMesh.cpp.

References is_connectivity_valid(), wmtk::Mesh::is_valid(), wmtk::logger(), wmtk::Tuple::m_global_cid, and wmtk::Tuple::m_local_vid.

Referenced by edge_tuple_from_id(), is_boundary_vertex(), is_ccw(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), and switch_tuple().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=() [1/2]

EdgeMesh& wmtk::EdgeMesh::operator= ( const EdgeMesh o)
delete

◆ operator=() [2/2]

EdgeMesh& wmtk::EdgeMesh::operator= ( EdgeMesh &&  o)
default

◆ orient_vertices()

std::vector< Tuple > wmtk::EdgeMesh::orient_vertices ( const Tuple tuple) const
overridevirtual

Implements wmtk::Mesh.

Definition at line 293 of file EdgeMesh.cpp.

References wmtk::Tuple::m_global_cid.

◆ switch_edge()

Tuple wmtk::EdgeMesh::switch_edge ( const Tuple tuple) const
inline

Definition at line 94 of file EdgeMesh.hpp.

References wmtk::Edge, and switch_tuple().

Referenced by wmtk::simplex::top_dimension_cofaces_tuples().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ switch_tuple()

Tuple wmtk::EdgeMesh::switch_tuple ( const Tuple tuple,
PrimitiveType  type 
) const
overridevirtual

switch the orientation of the Tuple of the given dimension

Note
this is not doen in place. Return a new Tuple of the switched state
Parameters
m
typed-0 -> switch vertex d-1 -> switch edge d-2 -> switch face d-3 -> switch tetrahedron

Implements wmtk::Mesh.

Definition at line 38 of file EdgeMesh.cpp.

References wmtk::attribute::Accessor< T, MeshType, Dim >::const_vector_attribute(), wmtk::attribute::CachingAccessor< T, Dim >::const_vector_attribute(), wmtk::Edge, wmtk::MeshCRTP< EdgeMesh >::id(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), is_ccw(), is_valid(), m_ee_handle, m_ev_handle, wmtk::Tuple::m_global_cid, wmtk::Tuple::m_local_eid, wmtk::Tuple::m_local_fid, wmtk::Tuple::m_local_vid, wmtk::Tetrahedron, wmtk::Triangle, and wmtk::Vertex.

Referenced by wmtk::SimplexInversionInvariant< T >::after(), wmtk::EdgeMesh::EdgeMeshOperationExecutor::get_collapse_simplices_to_delete(), wmtk::operations::edge_mesh::EdgeOperationData::input_endpoints(), wmtk::simplex::link_condition(), switch_edge(), and switch_vertex().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ switch_vertex()

Tuple wmtk::EdgeMesh::switch_vertex ( const Tuple tuple) const
inline

Definition at line 90 of file EdgeMesh.hpp.

References switch_tuple(), and wmtk::Vertex.

Here is the call graph for this function:

◆ tuple_from_global_ids()

Tuple wmtk::EdgeMesh::tuple_from_global_ids ( int64_t  eid,
int64_t  vid 
) const
protected

Definition at line 196 of file EdgeMesh.cpp.

References wmtk::attribute::CachingAccessor< T, Dim >::const_vector_attribute(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), and m_ev_handle.

Referenced by wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tuple_from_id()

Tuple wmtk::EdgeMesh::tuple_from_id ( const PrimitiveType  type,
const int64_t  gid 
) const
overrideprotectedvirtual

internal function that returns the tuple of requested type, and has the global index cid

Parameters
gid
Returns
Tuple

Implements wmtk::Mesh.

Definition at line 148 of file EdgeMesh.cpp.

References wmtk::Edge, edge_tuple_from_id(), wmtk::Tetrahedron, wmtk::Triangle, wmtk::Vertex, and vertex_tuple_from_id().

Here is the call graph for this function:

◆ vertex_tuple_from_id()

Tuple wmtk::EdgeMesh::vertex_tuple_from_id ( int64_t  id) const
protected

Definition at line 171 of file EdgeMesh.cpp.

References wmtk::attribute::CachingAccessor< T, Dim >::const_scalar_attribute(), wmtk::attribute::CachingAccessor< T, Dim >::const_vector_attribute(), wmtk::MeshCRTP< EdgeMesh >::id(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), m_ev_handle, and m_ve_handle.

Referenced by tuple_from_id().

Here is the call graph for this function:
Here is the caller graph for this function:

Friends And Related Function Documentation

◆ attribute::Accessor

template<typename U , typename MeshType , int Dim>
friend class attribute::Accessor
friend

Definition at line 20 of file EdgeMesh.hpp.

◆ MeshCRTP< EdgeMesh >

friend class MeshCRTP< EdgeMesh >
friend

Definition at line 98 of file EdgeMesh.hpp.

◆ operations::utils::MultiMeshEdgeCollapseFunctor

Definition at line 22 of file EdgeMesh.hpp.

◆ operations::utils::MultiMeshEdgeSplitFunctor

Definition at line 21 of file EdgeMesh.hpp.

◆ operations::utils::UpdateEdgeOperationMultiMeshMapFunctor

Definition at line 23 of file EdgeMesh.hpp.

Member Data Documentation

◆ m_ee_handle

attribute::TypedAttributeHandle<int64_t> wmtk::EdgeMesh::m_ee_handle
protected

◆ m_ev_handle

◆ m_ve_handle

attribute::TypedAttributeHandle<int64_t> wmtk::EdgeMesh::m_ve_handle
protected

The documentation for this class was generated from the following files: