Wildmeshing Toolkit
|
#include <PointMesh.hpp>
Public Member Functions | |
PointMesh () | |
~PointMesh () override | |
PointMesh (int64_t size) | |
PointMesh (const PointMesh &o)=delete | |
PointMesh (PointMesh &&o)=default | |
PointMesh & | operator= (const PointMesh &o)=delete |
PointMesh & | operator= (PointMesh &&o)=default |
Tuple | switch_tuple (const Tuple &tuple, PrimitiveType type) const override |
switch the orientation of the Tuple of the given dimension | |
bool | is_ccw (const Tuple &tuple) const override |
returns if a tuple is counterclockwise or not | |
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 | |
bool | is_boundary_vertex (const Tuple &tuple) const |
void | initialize (int64_t count) |
bool | is_valid (const Tuple &tuple) const final override |
check validity of tuple including its hash | |
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. | |
std::vector< Tuple > | orient_vertices (const Tuple &tuple) const override |
int64_t | id (const Tuple &tuple, PrimitiveType type) const |
bool | is_boundary (const simplex::Simplex &tuple) const |
check if a simplex lies on a boundary or not | |
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 | |
![]() | |
PointMesh & | derived () |
CRTP utility to extract the derived type of this. | |
const PointMesh & | derived () const |
CRTP utility to extract the derived type of this with constnesss. | |
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. | |
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}) | |
attribute::Accessor< T, PointMesh, Dim > | create_accessor (const TypedAttributeHandle< T > &handle) |
constructs an accessor that is aware of the derived mesh's type | |
attribute::Accessor< T, PointMesh, Dim > | create_accessor (const attribute::MeshAttributeHandle &handle) |
constructs a accessor that is aware of the derived mesh's type | |
const attribute::Accessor< T, PointMesh, Dim > | create_const_accessor (const attribute::TypedAttributeHandle< T > &handle) const |
constructs a const accessor that is aware of the derived mesh's type | |
const attribute::Accessor< T, PointMesh, Dim > | create_const_accessor (const attribute::MeshAttributeHandle &handle) const |
constructs a const accessor that is aware of the derived mesh's type | |
int64_t | id (const Tuple &tuple, PrimitiveType type) const |
Returns the id of a simplex encoded in a tuple. | |
int64_t | id (const simplex::Simplex &s) const final override |
variant of id that can cache internally held values | |
int64_t | id (const Tuple &tuple, PrimitiveType type) const |
return the global id of the Tuple of the given dimension | |
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. | |
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 | |
![]() | |
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 | |
Mesh & | operator= (const Mesh &other)=delete |
Mesh & | operator= (Mesh &&other) |
virtual | ~Mesh () |
void | serialize (MeshWriter &writer, const Mesh *local_root=nullptr) const |
std::vector< Tuple > | get_all (PrimitiveType type) const |
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index. | |
std::vector< simplex::IdSimplex > | get_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. | |
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. | |
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. | |
std::vector< attribute::MeshAttributeHandle::HandleVariant > | builtin_attributes () const |
std::vector< attribute::MeshAttributeHandle::HandleVariant > | custom_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. | |
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. | |
const attribute::FlagAccessor< Mesh > | get_flag_accessor (PrimitiveType type) const |
const attribute::FlagAccessor< Mesh > | 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 | |
bool | is_boundary (const simplex::Simplex &tuple) const |
check if a simplex lies on a boundary or not | |
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. | |
bool | is_multi_mesh_root () const |
return true if this mesh is the root of a multimesh tree | |
Mesh & | get_multi_mesh_root () |
returns a reference to the root of a multimesh tree | |
const Mesh & | get_multi_mesh_root () const |
returns a const reference to the root of a multimesh tree | |
Mesh & | get_multi_mesh_mesh (const std::vector< int64_t > &absolute_id) |
const Mesh & | get_multi_mesh_mesh (const std::vector< int64_t > &absolute_id) const |
Mesh & | get_multi_mesh_child_mesh (const std::vector< int64_t > &relative_id) |
const Mesh & | get_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 | |
std::vector< std::shared_ptr< Mesh > > | get_all_child_meshes () const |
returns all multimesh child meshes | |
std::vector< std::shared_ptr< const Mesh > > | get_all_meshes () const |
returns all meshes in multimesh | |
std::vector< int64_t > | absolute_multi_mesh_id () const |
returns a unique identifier for this mesh within a single multimesh structure | |
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 | |
void | deregister_child_mesh (const std::shared_ptr< Mesh > &child_mesh_ptr) |
Deregister a child mesh. | |
std::vector< simplex::Simplex > | map (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const |
maps a simplex from this mesh to any other mesh | |
std::vector< simplex::Simplex > | map (const Mesh &other_mesh, const std::vector< simplex::Simplex > &my_simplices) const |
std::vector< simplex::Simplex > | lub_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 | |
std::vector< simplex::Simplex > | lub_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 | |
simplex::Simplex | map_to_root (const simplex::Simplex &my_simplex) const |
maps a simplex from this mesh to the root mesh | |
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 | |
std::vector< Tuple > | map_tuples (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const |
maps a simplex from this mesh to any other mesh | |
std::vector< Tuple > | map_tuples (const Mesh &other_mesh, PrimitiveType pt, const std::vector< Tuple > &my_simplices) const |
std::vector< Tuple > | lub_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 | |
std::vector< Tuple > | lub_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 | |
Tuple | map_to_root_tuple (const simplex::Simplex &my_simplex) const |
maps a simplex from this mesh to the root mesh | |
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 | |
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 | |
bool | has_child_mesh_in_dimension (int64_t dimension) const |
returns if the mesh has a child mesh in the given dimension | |
bool | has_child_mesh () const |
bool | is_from_same_multi_mesh_structure (const Mesh &other) const |
int64_t | id (const Tuple &tuple, PrimitiveType type) const |
return the global id of the Tuple of the given dimension | |
int64_t | id (const simplex::NavigatableSimplex &s) const |
int64_t | id (const simplex::IdSimplex &s) 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 > |
![]() | |
Hashable () | |
Hashable (const Hashable &) | |
Hashable (Hashable &&) | |
Hashable & | operator= (const Hashable &) |
Hashable & | operator= (Hashable &&) |
virtual | ~Hashable () |
virtual std::size_t | hash () const |
Protected Member Functions | |
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 | |
![]() | |
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. | |
![]() | |
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 | |
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 () |
Private Member Functions | |
Tuple | vertex_tuple_from_id (int64_t id) const |
Friends | |
class | MeshCRTP< PointMesh > |
template<typename U , typename MeshType , int Dim> | |
class | attribute::Accessor |
Additional Inherited Members | |
![]() | |
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) |
![]() | |
attribute::AttributeManager | m_attribute_manager |
multimesh::MultiMeshManager | m_multi_mesh_manager |
int64_t | m_top_cell_dimension = -1 |
bool | m_is_free = false |
Definition at line 11 of file PointMesh.hpp.
wmtk::PointMesh::PointMesh | ( | ) |
Definition at line 10 of file PointMesh.cpp.
|
overridedefault |
wmtk::PointMesh::PointMesh | ( | int64_t | size | ) |
Definition at line 15 of file PointMesh.cpp.
References initialize().
|
delete |
|
default |
|
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 77 of file PointMesh.cpp.
|
inline |
Definition at line 60 of file PointMesh.hpp.
References wmtk::Edge, wmtk::Tuple::global_cid(), wmtk::Tetrahedron, wmtk::Triangle, and wmtk::Vertex.
void wmtk::PointMesh::initialize | ( | int64_t | count | ) |
Definition at line 51 of file PointMesh.cpp.
References wmtk::attribute::IndexFlagAccessor< MeshType >::activate(), wmtk::Mesh::capacity(), wmtk::Mesh::get_flag_accessor(), wmtk::attribute::FlagAccessor< MeshType >::index_access(), wmtk::Mesh::reserve_attributes_to_fit(), wmtk::Mesh::set_capacities(), and wmtk::Vertex.
Referenced by wmtk::components::internal::MultiMeshFromTag::compute_substructure_mesh(), wmtk::components::internal::MultiMeshFromTag::create_substructure_soup(), and PointMesh().
bool wmtk::Mesh::is_boundary | ( | const simplex::Simplex & | tuple | ) | const |
|
overridevirtual |
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
Reimplemented from wmtk::MeshCRTP< PointMesh >.
Definition at line 30 of file PointMesh.cpp.
References wmtk::Edge, is_boundary_vertex(), wmtk::Tetrahedron, wmtk::Triangle, and wmtk::Vertex.
|
virtual |
check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not
simplex |
Reimplemented from wmtk::MeshCRTP< PointMesh >.
bool wmtk::PointMesh::is_boundary_vertex | ( | const Tuple & | tuple | ) | const |
Definition at line 45 of file PointMesh.cpp.
Referenced by is_boundary().
|
overridevirtual |
returns if a tuple is counterclockwise or not
Reimplemented from wmtk::MeshCRTP< PointMesh >.
Definition at line 25 of file PointMesh.cpp.
|
inlineoverridevirtual |
Implements wmtk::Mesh.
Definition at line 39 of file PointMesh.hpp.
|
finaloverridevirtual |
check validity of tuple including its hash
tuple | the tuple to be checked |
type | only the top cell dimension, other validity follows with assumption of manifoldness. 2->triangle, 3->tetrahedron |
Reimplemented from wmtk::Mesh.
Definition at line 62 of file PointMesh.cpp.
References wmtk::Mesh::is_valid().
Implements wmtk::Mesh.
Definition at line 84 of file PointMesh.cpp.
|
overridevirtual |
switch the orientation of the Tuple of the given dimension
m | |
type | d-0 -> switch vertex d-1 -> switch edge d-2 -> switch face d-3 -> switch tetrahedron |
Reimplemented from wmtk::MeshCRTP< PointMesh >.
Definition at line 21 of file PointMesh.cpp.
|
overrideprotectedvirtual |
internal function that returns the tuple of requested type, and has the global index cid
gid |
Reimplemented from wmtk::MeshCRTP< PointMesh >.
Definition at line 71 of file PointMesh.cpp.
References wmtk::Vertex, and vertex_tuple_from_id().
|
private |
Definition at line 4 of file PointMesh.cpp.
Referenced by tuple_from_id().
|
friend |
Definition at line 19 of file PointMesh.hpp.
Definition at line 14 of file PointMesh.hpp.