Wildmeshing Toolkit
wmtk::TriMesh Class Reference

#include <TriMesh.hpp>

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

Classes

class  TriMeshOperationExecutor
 

Public Member Functions

 TriMesh ()
 
 TriMesh (const TriMesh &o)=delete
 
TriMeshoperator= (const TriMesh &o)=delete
 
 TriMesh (TriMesh &&o)
 
TriMeshoperator= (TriMesh &&o)
 
 ~TriMesh () override
 
void make_cached_accessors ()
 
Tuple switch_tuple (const Tuple &tuple, PrimitiveType type) const final override
 switch the orientation of the Tuple of the given dimension More...
 
bool is_ccw (const Tuple &tuple) const final override
 TODO this needs dimension? More...
 
bool is_boundary (PrimitiveType pt, const Tuple &tuple) const final 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
 
bool is_boundary_edge (const Tuple &tuple) const
 
void initialize (Eigen::Ref< const RowVectors3l > FV, Eigen::Ref< const RowVectors3l > FE, Eigen::Ref< const RowVectors3l > FF, Eigen::Ref< const VectorXl > VF, Eigen::Ref< const VectorXl > EF)
 
void initialize (Eigen::Ref< const RowVectors3l > F, bool make_free=false)
 
void initialize_free (int64_t count)
 
bool is_valid (const Tuple &tuple) const final override
 check validity of tuple including its hash More...
 
bool is_connectivity_valid () const final 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
 
Tuple switch_face (const Tuple &tuple) const
 
std::vector< Tupleorient_vertices (const Tuple &t) 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< TriMesh >
TriMeshderived ()
 CRTP utility to extract the derived type of this. More...
 
const TriMeshderived () 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, TriMesh, Dim > create_accessor (const TypedAttributeHandle< T > &handle)
 constructs an accessor that is aware of the derived mesh's type More...
 
attribute::Accessor< T, TriMesh, Dim > create_accessor (const attribute::MeshAttributeHandle &handle)
 constructs a accessor that is aware of the derived mesh's type More...
 
const attribute::Accessor< T, TriMesh, 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, TriMesh, 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::Accessor< char > get_flag_accessor (PrimitiveType type) const
 
const attribute::Accessor< char > get_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
 
int64_t id_face (const Tuple &tuple) const
 
Tuple tuple_from_id (const PrimitiveType type, const int64_t gid) const final override
 internal function that returns the tuple of requested type, and has the global index cid More...
 
Tuple tuple_from_global_ids (int64_t fid, 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
 
Tuple face_tuple_from_id (int64_t id) const
 
- Protected Member Functions inherited from wmtk::MeshCRTP< TriMesh >
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::Accessor< char > 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
 

Static Protected Member Functions

static Tuple with_different_cid (const Tuple &t, int64_t cid)
 
- 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)
 

Protected Attributes

attribute::TypedAttributeHandle< int64_t > m_vf_handle
 
attribute::TypedAttributeHandle< int64_t > m_ef_handle
 
attribute::TypedAttributeHandle< int64_t > m_fv_handle
 
attribute::TypedAttributeHandle< int64_t > m_fe_handle
 
attribute::TypedAttributeHandle< int64_t > m_ff_handle
 
std::unique_ptr< attribute::Accessor< int64_t, TriMesh > > m_vf_accessor = nullptr
 
std::unique_ptr< attribute::Accessor< int64_t, TriMesh > > m_ef_accessor = nullptr
 
std::unique_ptr< attribute::Accessor< int64_t, TriMesh > > m_fv_accessor = nullptr
 
std::unique_ptr< attribute::Accessor< int64_t, TriMesh > > m_fe_accessor = nullptr
 
std::unique_ptr< attribute::Accessor< int64_t, TriMesh > > m_ff_accessor = nullptr
 
- 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< TriMesh >
 
class operations::utils::MultiMeshEdgeCollapseFunctor
 
class operations::utils::MultiMeshEdgeSplitFunctor
 
class operations::utils::UpdateEdgeOperationMultiMeshMapFunctor
 
template<typename U , typename MeshType , int Dim>
class attribute::Accessor
 

Detailed Description

Definition at line 18 of file TriMesh.hpp.

Constructor & Destructor Documentation

◆ TriMesh() [1/3]

wmtk::TriMesh::TriMesh ( )

Definition at line 12 of file TriMesh.cpp.

References wmtk::Edge, make_cached_accessors(), wmtk::Triangle, and wmtk::Vertex.

Here is the call graph for this function:

◆ TriMesh() [2/3]

wmtk::TriMesh::TriMesh ( const TriMesh o)
delete

◆ TriMesh() [3/3]

wmtk::TriMesh::TriMesh ( TriMesh &&  o)

Definition at line 32 of file TriMesh.cpp.

References m_ef_handle, m_fe_handle, m_ff_handle, m_fv_handle, m_vf_handle, and make_cached_accessors().

Here is the call graph for this function:

◆ ~TriMesh()

wmtk::TriMesh::~TriMesh ( )
overridedefault

Member Function Documentation

◆ connectivity_attributes()

std::vector< std::vector< TypedAttributeHandle< int64_t > > > wmtk::TriMesh::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 525 of file TriMesh.cpp.

References m_ef_handle, m_fe_handle, m_ff_handle, m_fv_handle, and m_vf_handle.

◆ edge_tuple_from_id()

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

Definition at line 307 of file TriMesh.cpp.

References wmtk::autogen::tri_mesh::auto_2d_table_complete_edge, wmtk::MeshCRTP< TriMesh >::id(), is_ccw(), is_valid(), m_ef_accessor, and m_fe_accessor.

Referenced by tuple_from_id().

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

◆ face_tuple_from_id()

Tuple wmtk::TriMesh::face_tuple_from_id ( int64_t  id) const
protected

Definition at line 328 of file TriMesh.cpp.

References wmtk::autogen::tri_mesh::auto_2d_table_complete_vertex, is_ccw(), and 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::TriMesh::id ( const Tuple tuple,
PrimitiveType  type 
) const
inlineprotected

Definition at line 125 of file TriMesh.hpp.

References wmtk::Edge, wmtk::Mesh::is_valid(), m_fe_accessor, m_fv_accessor, wmtk::Tuple::m_global_cid, wmtk::Tetrahedron, wmtk::Triangle, and wmtk::Vertex.

Referenced by wmtk::TriMesh::TriMeshOperationExecutor::get_collapse_simplices_to_delete(), and wmtk::TriMesh::TriMeshOperationExecutor::get_split_simplices_to_delete().

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

◆ id_edge()

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

Definition at line 75 of file TriMesh.hpp.

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

Here is the call graph for this function:

◆ id_face()

int64_t wmtk::TriMesh::id_face ( const Tuple tuple) const
inlineprotected

Definition at line 76 of file TriMesh.hpp.

References wmtk::MeshCRTP< TriMesh >::id(), and wmtk::Triangle.

Here is the call graph for this function:

◆ id_vertex()

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

Definition at line 74 of file TriMesh.hpp.

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

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

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

◆ initialize() [1/2]

void wmtk::TriMesh::initialize ( Eigen::Ref< const RowVectors3l F,
bool  make_free = false 
)

Definition at line 226 of file TriMesh.cpp.

References initialize(), wmtk::Mesh::is_free(), wmtk::Mesh::m_is_free, and wmtk::trimesh_topology_initialization().

Here is the call graph for this function:

◆ initialize() [2/2]

void wmtk::TriMesh::initialize ( Eigen::Ref< const RowVectors3l FV,
Eigen::Ref< const RowVectors3l FE,
Eigen::Ref< const RowVectors3l FF,
Eigen::Ref< const VectorXl VF,
Eigen::Ref< const VectorXl EF 
)

Definition at line 175 of file TriMesh.cpp.

References wmtk::Mesh::capacity(), wmtk::Edge, wmtk::Mesh::get_flag_accessor(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), m_ef_handle, m_fe_handle, m_ff_handle, m_fv_handle, m_vf_handle, wmtk::attribute::CachingAccessor< T, Dim >::scalar_attribute(), wmtk::Mesh::set_capacities(), wmtk::Triangle, wmtk::attribute::CachingAccessor< T, Dim >::vector_attribute(), and wmtk::Vertex.

Referenced by wmtk::components::multimesh::axis_aligned_fusion(), wmtk::components::internal::MultiMeshFromTag::compute_substructure_mesh(), initialize(), initialize_free(), and wmtk::components::procedural::make_mesh().

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

◆ initialize_free()

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

Definition at line 235 of file TriMesh.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 423 of file Mesh.cpp.

Referenced by is_connectivity_valid().

Here is the caller graph for this function:

◆ is_boundary() [2/3]

bool wmtk::TriMesh::is_boundary ( PrimitiveType  ,
const Tuple tuple 
) const
finaloverridevirtual

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 57 of file TriMesh.cpp.

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

Referenced by wmtk::components::internal::edge_insertion(), and wmtk::simplex::link_condition().

Here is the call graph for this function:
Here is the caller 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_edge()

bool wmtk::TriMesh::is_boundary_edge ( const Tuple tuple) const

Definition at line 71 of file TriMesh.cpp.

References is_valid(), m_ff_accessor, and wmtk::Tuple::m_local_eid.

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

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

◆ is_boundary_vertex()

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

Definition at line 77 of file TriMesh.cpp.

References is_boundary_edge(), switch_edge(), and switch_face().

Referenced by wmtk::function::EdgeValenceEnergy::get_value(), and is_boundary().

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

◆ is_ccw()

bool wmtk::TriMesh::is_ccw ( const Tuple tuple) const
finaloverridevirtual

TODO this needs dimension?

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

Implements wmtk::Mesh.

Definition at line 169 of file TriMesh.cpp.

References wmtk::autogen::tri_mesh::is_ccw(), and is_valid().

Referenced by wmtk::SimplexInversionInvariant< T >::after(), wmtk::mesh_utils::compute_vertex_normal(), edge_tuple_from_id(), face_tuple_from_id(), switch_tuple(), and vertex_tuple_from_id().

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

◆ is_connectivity_valid()

bool wmtk::TriMesh::is_connectivity_valid ( ) const
finaloverridevirtual

Implements wmtk::Mesh.

Definition at line 370 of file TriMesh.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(), is_boundary(), wmtk::logger(), m_ef_handle, m_fe_handle, m_ff_handle, m_fv_handle, m_vf_handle, wmtk::Triangle, and wmtk::Vertex.

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

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

◆ is_valid()

bool wmtk::TriMesh::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 340 of file TriMesh.cpp.

References is_connectivity_valid(), wmtk::Mesh::is_valid(), wmtk::logger(), wmtk::Tuple::m_global_cid, wmtk::Tuple::m_local_eid, wmtk::Tuple::m_local_vid, and wmtk::autogen::tri_mesh::tuple_is_valid_for_ccw().

Referenced by edge_tuple_from_id(), face_tuple_from_id(), is_boundary_edge(), 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:

◆ make_cached_accessors()

void wmtk::TriMesh::make_cached_accessors ( )

Definition at line 23 of file TriMesh.cpp.

References m_ef_accessor, m_ef_handle, m_fe_accessor, m_fe_handle, m_ff_accessor, m_ff_handle, m_fv_accessor, m_fv_handle, m_vf_accessor, and m_vf_handle.

Referenced by operator=(), and TriMesh().

Here is the caller graph for this function:

◆ operator=() [1/2]

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

◆ operator=() [2/2]

TriMesh & wmtk::TriMesh::operator= ( TriMesh &&  o)

Definition at line 43 of file TriMesh.cpp.

References m_ef_handle, m_fe_handle, m_ff_handle, m_fv_handle, m_vf_handle, make_cached_accessors(), and wmtk::Mesh::operator=().

Here is the call graph for this function:

◆ orient_vertices()

std::vector< Tuple > wmtk::TriMesh::orient_vertices ( const Tuple t) const
overridevirtual

Implements wmtk::Mesh.

Definition at line 540 of file TriMesh.cpp.

References wmtk::Tuple::m_global_cid.

◆ switch_edge()

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

Definition at line 117 of file TriMesh.hpp.

References wmtk::Edge, and switch_tuple().

Referenced by wmtk::mesh_utils::compute_face_normal_area_weighted(), wmtk::TriMesh::TriMeshOperationExecutor::get_collapse_simplices_to_delete(), is_boundary_vertex(), and wmtk::simplex::open_star().

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

◆ switch_face()

Tuple wmtk::TriMesh::switch_face ( const Tuple tuple) const
inline

Definition at line 121 of file TriMesh.hpp.

References switch_tuple(), and wmtk::Triangle.

Referenced by is_boundary_vertex().

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

◆ switch_tuple()

Tuple wmtk::TriMesh::switch_tuple ( const Tuple tuple,
PrimitiveType  type 
) const
finaloverridevirtual

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 98 of file TriMesh.cpp.

References wmtk::Edge, wmtk::MeshCRTP< TriMesh >::id(), is_ccw(), is_valid(), wmtk::autogen::tri_mesh::local_switch_tuple(), m_fe_accessor, m_ff_accessor, m_fv_accessor, 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::components::internal::edge_insertion(), wmtk::operations::tri_mesh::EdgeOperationData::input_endpoints(), wmtk::simplex::link_condition(), wmtk::simplex::link_condition_closed_trimesh(), switch_edge(), switch_face(), and switch_vertex().

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

◆ switch_vertex()

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

Definition at line 113 of file TriMesh.hpp.

References switch_tuple(), and wmtk::Vertex.

Referenced by wmtk::mesh_utils::compute_face_normal_area_weighted(), wmtk::mesh_utils::compute_vertex_normal(), and wmtk::function::EdgeValenceEnergy::get_value().

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

◆ tuple_from_global_ids()

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

Definition at line 244 of file TriMesh.cpp.

References m_fe_accessor, and m_fv_accessor.

Referenced by wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), and wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_ear_replacement().

Here is the caller graph for this function:

◆ tuple_from_id()

Tuple wmtk::TriMesh::tuple_from_id ( const PrimitiveType  type,
const int64_t  gid 
) const
finaloverrideprotectedvirtual

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 267 of file TriMesh.cpp.

References wmtk::Edge, edge_tuple_from_id(), face_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::TriMesh::vertex_tuple_from_id ( int64_t  id) const
protected

Definition at line 288 of file TriMesh.cpp.

References wmtk::autogen::tri_mesh::auto_2d_table_complete_vertex, wmtk::MeshCRTP< TriMesh >::id(), is_ccw(), m_fv_accessor, and m_vf_accessor.

Referenced by tuple_from_id().

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

◆ with_different_cid()

Tuple wmtk::TriMesh::with_different_cid ( const Tuple t,
int64_t  cid 
)
staticprotected

Definition at line 518 of file TriMesh.cpp.

References wmtk::Tuple::m_global_cid.

Friends And Related Function Documentation

◆ attribute::Accessor

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

Definition at line 26 of file TriMesh.hpp.

◆ MeshCRTP< TriMesh >

friend class MeshCRTP< TriMesh >
friend

Definition at line 125 of file TriMesh.hpp.

◆ operations::utils::MultiMeshEdgeCollapseFunctor

Definition at line 22 of file TriMesh.hpp.

◆ operations::utils::MultiMeshEdgeSplitFunctor

Definition at line 23 of file TriMesh.hpp.

◆ operations::utils::UpdateEdgeOperationMultiMeshMapFunctor

Definition at line 24 of file TriMesh.hpp.

Member Data Documentation

◆ m_ef_accessor

std::unique_ptr<attribute::Accessor<int64_t, TriMesh> > wmtk::TriMesh::m_ef_accessor = nullptr
protected

Definition at line 98 of file TriMesh.hpp.

Referenced by edge_tuple_from_id(), and make_cached_accessors().

◆ m_ef_handle

attribute::TypedAttributeHandle<int64_t> wmtk::TriMesh::m_ef_handle
protected

◆ m_fe_accessor

std::unique_ptr<attribute::Accessor<int64_t, TriMesh> > wmtk::TriMesh::m_fe_accessor = nullptr
protected

◆ m_fe_handle

attribute::TypedAttributeHandle<int64_t> wmtk::TriMesh::m_fe_handle
protected

◆ m_ff_accessor

std::unique_ptr<attribute::Accessor<int64_t, TriMesh> > wmtk::TriMesh::m_ff_accessor = nullptr
protected

Definition at line 101 of file TriMesh.hpp.

Referenced by is_boundary_edge(), make_cached_accessors(), and switch_tuple().

◆ m_ff_handle

attribute::TypedAttributeHandle<int64_t> wmtk::TriMesh::m_ff_handle
protected

◆ m_fv_accessor

std::unique_ptr<attribute::Accessor<int64_t, TriMesh> > wmtk::TriMesh::m_fv_accessor = nullptr
protected

◆ m_fv_handle

attribute::TypedAttributeHandle<int64_t> wmtk::TriMesh::m_fv_handle
protected

◆ m_vf_accessor

std::unique_ptr<attribute::Accessor<int64_t, TriMesh> > wmtk::TriMesh::m_vf_accessor = nullptr
protected

Definition at line 97 of file TriMesh.hpp.

Referenced by make_cached_accessors(), and vertex_tuple_from_id().

◆ m_vf_handle

attribute::TypedAttributeHandle<int64_t> wmtk::TriMesh::m_vf_handle
protected

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