Wildmeshing Toolkit
|
#include <Mesh.hpp>
Public Member Functions | |
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. More... | |
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. 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... | |
virtual std::vector< std::vector< TypedAttributeHandle< int64_t > > > | connectivity_attributes () const =0 |
Returns a vector of vectors of attribute handles. More... | |
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. 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 |
virtual bool | is_connectivity_valid () const =0 |
virtual std::vector< Tuple > | orient_vertices (const Tuple &t) const =0 |
virtual Tuple | switch_tuple (const Tuple &tuple, PrimitiveType type) const =0 |
switch the orientation of the Tuple of the given dimension More... | |
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... | |
virtual bool | is_ccw (const Tuple &tuple) const =0 |
TODO this needs dimension? More... | |
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... | |
bool | is_hash_valid (const Tuple &tuple, const attribute::Accessor< int64_t > &hash_accessor) const |
bool | is_hash_valid (const Tuple &tuple) const |
virtual bool | is_valid (const Tuple &tuple) const |
check validity of tuple including its hash More... | |
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... | |
Mesh & | get_multi_mesh_root () |
returns a reference to the root of a multimesh tree More... | |
const Mesh & | get_multi_mesh_root () const |
returns a const reference to the root of a multimesh tree More... | |
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 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::Simplex > | map (const Mesh &other_mesh, const simplex::Simplex &my_simplex) const |
maps a simplex from this mesh to any other mesh More... | |
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 More... | |
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 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::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 More... | |
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 More... | |
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 More... | |
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 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< 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 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 &&) | |
Hashable & | operator= (const Hashable &) |
Hashable & | operator= (Hashable &&) |
virtual | ~Hashable () |
virtual std::size_t | hash () const |
Protected Member Functions | |
attribute::Accessor< char > | get_flag_accessor (PrimitiveType type) |
virtual Tuple | tuple_from_id (const PrimitiveType type, const int64_t gid) const =0 |
internal function that returns the tuple of requested type, and has the global index cid More... | |
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 |
virtual int64_t | id (const simplex::Simplex &s) const =0 |
Forwarding version of id on simplices that does id caching. More... | |
virtual int64_t | id_virtual (const Tuple &tuple, PrimitiveType type) const =0 |
Internal utility to allow id to be virtual with a non-virtual overload in derived -Mesh classes. More... | |
Static Protected Member Functions | |
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::AttributeManager | m_attribute_manager |
multimesh::MultiMeshManager | m_multi_mesh_manager |
int64_t | m_top_cell_dimension = -1 |
bool | m_is_free = false |
Private Member Functions | |
void | update_child_handles () |
Update the child handles after clearing attributes. More... | |
std::vector< Tuple > | get_all (PrimitiveType type, const bool include_deleted) const |
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index. More... | |
std::vector< simplex::IdSimplex > | get_all_id_simplex (PrimitiveType type, const bool include_deleted) const |
Private Attributes | |
std::vector< TypedAttributeHandle< char > > | m_flag_handles |
0x1 == true = simplex is active (simplex exists) all flag default to 0 More... | |
TypedAttributeHandle< int64_t > | m_cell_hash_handle |
wmtk::Mesh::Mesh | ( | const int64_t & | dimension | ) |
Definition at line 35 of file Mesh_construction.cpp.
wmtk::Mesh::Mesh | ( | const int64_t & | dimension, |
const int64_t & | max_primitive_type_id, | ||
PrimitiveType | hash_type | ||
) |
Definition at line 39 of file Mesh_construction.cpp.
References wmtk::get_primitive_type_from_id(), and m_flag_handles.
wmtk::Mesh::Mesh | ( | Mesh && | other | ) |
Definition at line 12 of file Mesh_construction.cpp.
References m_cell_hash_handle, and m_flag_handles.
|
delete |
|
virtual |
Definition at line 53 of file Mesh_construction.cpp.
References wmtk::multimesh::MultiMeshManager::detach_children(), and m_multi_mesh_manager.
std::vector< int64_t > wmtk::Mesh::absolute_multi_mesh_id | ( | ) | const |
returns a unique identifier for this mesh within a single multimesh structure
Typically the root node should have an empty vector as the id {} Its first child will have an id of {0} Its second child will have an id of {1} Its first child's second child will have an id of {0,1}
Definition at line 12 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::absolute_id(), and m_multi_mesh_manager.
Referenced by wmtk::components::multimesh::NamedMultiMesh::append_child_mesh_names(), wmtk::multimesh::MultiMeshManager::can_map_child(), wmtk::multimesh::utils::MapValidator::check_child_map_attributes_valid(), wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism(), wmtk::multimesh::utils::MapValidator::check_parent_map_attribute_valid(), wmtk::multimesh::MultiMeshManager::child_hashes(), wmtk::components::multimesh::NamedMultiMesh::get_id(), wmtk::multimesh::MultiMeshManager::lub_map_tuples(), wmtk::multimesh::MultiMeshManager::map_tuples(), and wmtk::operations::utils::MultiMeshEdgeSplitFunctor::operator()().
void wmtk::Mesh::assert_capacity_valid | ( | ) | const |
Definition at line 217 of file Mesh.cpp.
References wmtk::attribute::AttributeManager::assert_capacity_valid(), and m_attribute_manager.
std::vector< attribute::MeshAttributeHandle::HandleVariant > wmtk::Mesh::builtin_attributes | ( | ) | const |
Definition at line 313 of file Mesh_attributes.cpp.
References connectivity_attributes(), m_cell_hash_handle, m_flag_handles, m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map_handles().
Referenced by custom_attributes().
bool wmtk::Mesh::can_map | ( | const Mesh & | other_mesh, |
const simplex::Simplex & | my_simplex | ||
) | const |
Definition at line 39 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::can_map(), is_from_same_multi_mesh_structure(), and m_multi_mesh_manager.
Referenced by wmtk::multimesh::BoundaryChecker::is_boundary().
int64_t wmtk::Mesh::capacity | ( | PrimitiveType | type | ) | const |
read in the m_capacities return the upper bound for the number of entities of the given dimension
type |
Definition at line 84 of file Mesh_attributes.cpp.
References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::m_capacities.
Referenced by consolidate(), get_all(), get_all_id_simplex(), wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), wmtk::PointMesh::initialize(), wmtk::TetMesh::is_connectivity_valid(), wmtk::TriMesh::is_connectivity_valid(), wmtk::EdgeMesh::is_connectivity_valid(), wmtk::components::multimesh::multimesh(), request_simplex_indices(), wmtk::multimesh::utils::internal::TupleTag::run(), wmtk::multimesh::same_simplex_dimension_bijection(), and wmtk::multimesh::MultiMeshManager::same_simplex_dimension_surjection().
|
overridevirtual |
Implements wmtk::utils::MerkleTreeInteriorNode.
Definition at line 5 of file Mesh_hash.cpp.
References m_attribute_manager, and m_multi_mesh_manager.
|
overridevirtual |
Reimplemented from wmtk::utils::Hashable.
Definition at line 12 of file Mesh_hash.cpp.
References wmtk::utils::MerkleTreeInteriorNode::child_hashes(), m_cell_hash_handle, and m_flag_handles.
void wmtk::Mesh::clear_attributes | ( | ) |
Definition at line 165 of file Mesh_attributes.cpp.
References wmtk::attribute::AttributeManager::clear_attributes(), custom_attributes(), and m_attribute_manager.
void wmtk::Mesh::clear_attributes | ( | const std::vector< attribute::MeshAttributeHandle > & | keep_attributes | ) |
Definition at line 178 of file Mesh_attributes.cpp.
void wmtk::Mesh::clear_attributes | ( | const std::vector< attribute::MeshAttributeHandle::HandleVariant > & | keep_attributes | ) |
Remove all custom attributes besides the one passed in.
custom_attributes | Vector of attributes that should be kept |
Definition at line 170 of file Mesh_attributes.cpp.
References wmtk::attribute::AttributeManager::clear_attributes(), custom_attributes(), m_attribute_manager, and update_child_handles().
Referenced by wmtk::components::regular_space(), and wmtk::components::tag_intersection().
|
pure virtual |
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].
Implemented in wmtk::TriMesh, wmtk::PointMesh, wmtk::EdgeMesh, and wmtk::TetMesh.
Referenced by builtin_attributes(), and consolidate().
|
virtual |
Consolidate the attributes, moving all valid simplexes at the beginning of the corresponding vector.
Definition at line 209 of file Mesh_attributes.cpp.
References wmtk::attribute::Accessor< T, MeshType, Dim >::attribute(), capacity(), connectivity_attributes(), get_flag_accessor(), wmtk::get_primitive_type_from_id(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), m_attribute_manager, wmtk::attribute::AttributeManager::m_capacities, wmtk::attribute::AttributeManager::m_char_attributes, wmtk::attribute::AttributeManager::m_double_attributes, wmtk::attribute::AttributeManager::m_long_attributes, wmtk::attribute::AttributeManager::m_rational_attributes, wmtk::attribute::CachingAccessor< T, Dim >::scalar_attribute(), and top_cell_dimension().
Referenced by wmtk::components::internal::edge_insertion().
attribute::Accessor<T, Mesh, D> wmtk::Mesh::create_accessor | ( | const attribute::MeshAttributeHandle & | handle | ) |
Referenced by wmtk::components::internal::adjust_sizing_field(), wmtk::components::adjust_sizing_field(), wmtk::components::internal::MultiMeshFromTag::build_adjacency_matrix(), wmtk::components::internal::MultiMeshFromTag::compute_substructure_ids(), wmtk::operations::AMIPSOptimizationSmoothing::execute(), wmtk::operations::AMIPSOptimizationSmoothingPeriodic::execute(), wmtk::operations::OptimizationSmoothing::execute(), wmtk::operations::Rounding::execute(), wmtk::operations::TetWildTangentialLaplacianSmoothing::execute(), wmtk::io::MshReader::extract_element_attribute(), wmtk::components::multimesh::from_boundary(), get_flag_accessor(), wmtk::multimesh::MultiMeshManager::get_map_accessors(), wmtk::components::longest_edge_split::longest_edge_split(), wmtk::components::multimesh::multimesh(), wmtk::operations::VertexLaplacianSmooth::operator()(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::components::internal::periodic_optimization(), wmtk::components::Marching::process(), wmtk::multimesh::MultiMeshManager::register_child_mesh(), wmtk::components::internal::RegularSpace::regularize_tags(), wmtk::Scheduler::run_operation_on_all(), wmtk::Scheduler::run_operation_on_all_coloring(), wmtk::mesh_utils::set_matrix_attribute(), wmtk::components::internal::set_operation_energy_filter(), wmtk::components::set_operation_energy_filter(), wmtk::components::internal::set_operation_energy_filter_after_sizing_field(), wmtk::components::set_operation_energy_filter_after_sizing_field(), wmtk::components::shortest_edge_collapse::shortest_edge_collapse(), wmtk::operations::SplitNewAttributeStrategy< T >::update(), wmtk::operations::CollapseNewAttributeStrategy< T >::update(), and wmtk::multimesh::utils::write_tuple_map_attribute_slow().
|
inline |
attribute::Accessor<T, Mesh, D> wmtk::Mesh::create_accessor | ( | const TypedAttributeHandle< T > & | handle | ) |
|
inline |
const attribute::Accessor<T, Mesh, D> wmtk::Mesh::create_const_accessor | ( | const attribute::MeshAttributeHandle & | handle | ) | const |
Referenced by wmtk::components::internal::adjust_sizing_field(), wmtk::components::adjust_sizing_field(), wmtk::invariants::EnvelopeInvariant::after(), wmtk::invariants::TetMeshSubstructureTopologyPreservingInvariant::before(), wmtk::invariants::TriMeshSubstructureTopologyPreservingInvariant::before(), wmtk::invariants::CollapseEnergyBeforeInvariant::before(), wmtk::invariants::CollapseEnergyBeforeInvariantDouble::before(), wmtk::invariants::CollapseSoftEnergyBeforeInvariant::before(), wmtk::EnergyFilterInvariant::before(), wmtk::invariants::FrozenVertexInvariant::before(), wmtk::invariants::FrozenOppVertexInvariant::before(), wmtk::MaxEdgeLengthInvariant::before(), wmtk::invariants::MinEdgeLengthInvariant::before(), wmtk::RoundedInvariant::before(), wmtk::Swap23EnergyBeforeInvariant::before(), wmtk::Swap2dEdgeLengthInvariant::before(), wmtk::Swap2dUnroundedVertexInvariant::before(), wmtk::Swap32EnergyBeforeInvariant::before(), wmtk::Swap32EnergyBeforeInvariantDouble::before(), wmtk::Swap44EnergyBeforeInvariant::before(), wmtk::Swap44EnergyBeforeInvariantDouble::before(), wmtk::Swap56EnergyBeforeInvariant::before(), wmtk::Swap56EnergyBeforeInvariantDouble::before(), wmtk::TodoInvariant::before(), wmtk::TodoLargerInvariant::before(), wmtk::TodoSmallerInvariant::before(), wmtk::multimesh::utils::MapValidator::check_child_map_attributes_valid(), wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::multimesh::utils::MapValidator::check_parent_map_attribute_valid(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), get_const_flag_accessor(), wmtk::function::PerSimplexAutodiffFunction::get_coordinates(), wmtk::multimesh::MultiMeshManager::get_map_const_accessors(), wmtk::function::AMIPS::get_raw_coordinates(), wmtk::components::longest_edge_split::longest_edge_split(), wmtk::multimesh::MultiMeshManager::map_to_child_tuples(), wmtk::multimesh::MultiMeshManager::map_tuple_to_parent_tuple(), wmtk::components::internal::periodic_optimization(), wmtk::components::Marching::process(), wmtk::multimesh::utils::read_tuple_map_attribute_slow(), wmtk::components::isotropic_remeshing::relative_to_absolute_length(), wmtk::components::internal::set_operation_energy_filter(), wmtk::components::set_operation_energy_filter(), wmtk::components::internal::set_operation_energy_filter_after_sizing_field(), wmtk::components::set_operation_energy_filter_after_sizing_field(), wmtk::components::shortest_edge_collapse::shortest_edge_collapse(), and wmtk::components::to_points().
|
inline |
const attribute::Accessor<T, Mesh, D> wmtk::Mesh::create_const_accessor | ( | const TypedAttributeHandle< T > & | handle | ) | const |
|
inline |
multimesh::attribute::AttributeScopeHandle wmtk::Mesh::create_scope | ( | ) |
Definition at line 199 of file Mesh_attributes.cpp.
Referenced by wmtk::operations::Operation::operator()().
|
protected |
Definition at line 204 of file Mesh_attributes.cpp.
References wmtk::attribute::AttributeManager::create_scope(), and m_attribute_manager.
std::vector< attribute::MeshAttributeHandle::HandleVariant > wmtk::Mesh::custom_attributes | ( | ) | const |
Definition at line 152 of file Mesh_attributes.cpp.
References builtin_attributes(), wmtk::attribute::AttributeManager::get_all_attributes(), and m_attribute_manager.
Referenced by clear_attributes(), wmtk::operations::EdgeCollapse::EdgeCollapse(), and wmtk::operations::EdgeSplit::EdgeSplit().
void wmtk::Mesh::delete_attribute | ( | const attribute::MeshAttributeHandle & | to_delete | ) |
Definition at line 188 of file Mesh_attributes.cpp.
References wmtk::attribute::MeshAttributeHandle::handle(), and wmtk::attribute::MeshAttributeHandle::mesh().
void wmtk::Mesh::delete_attribute | ( | const attribute::MeshAttributeHandle::HandleVariant & | to_delete | ) |
Definition at line 195 of file Mesh_attributes.cpp.
References wmtk::attribute::AttributeManager::delete_attribute(), and m_attribute_manager.
void wmtk::Mesh::deregister_child_mesh | ( | const std::shared_ptr< Mesh > & | child_mesh_ptr | ) |
Deregister a child mesh.
The child mesh is not deleted. It is only detached from the multi-mesh structure. The child mesh becomes the new root for its own children. Attribute handles for the child and parent mesh will be invalidated by deregistration.
Definition at line 23 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::deregister_child_mesh(), and m_multi_mesh_manager.
Referenced by wmtk::components::internal::MultiMeshFromTag::remove_soup().
std::vector< Tuple > wmtk::Mesh::get_all | ( | PrimitiveType | type | ) | const |
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
type | the type of tuple, can be vertex/edge/triangle/tetrahedron |
Definition at line 18 of file Mesh.cpp.
Referenced by wmtk::components::internal::adjust_sizing_field(), wmtk::components::adjust_sizing_field(), wmtk::components::multimesh::axis_aligned_fusion(), wmtk::components::internal::MultiMeshFromTag::build_adjacency_matrix(), wmtk::multimesh::utils::MapValidator::check_child_map_attributes_valid(), wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism(), wmtk::multimesh::utils::MapValidator::check_parent_map_attribute_valid(), wmtk::components::TagIntersection::compute_intersection(), wmtk::components::internal::MultiMeshFromTag::compute_substructure_ids(), wmtk::components::internal::MultiMeshFromTag::compute_substructure_mesh(), wmtk::components::internal::MultiMeshFromTag::create_substructure_soup(), wmtk::components::internal::edge_insertion(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), wmtk::io::MshReader::extract_element_attribute(), wmtk::components::multimesh::from_boundary(), wmtk::multimesh::utils::internal::TupleTag::initialize(), wmtk::components::longest_edge_split::longest_edge_split(), wmtk::components::mesh_info(), wmtk::components::multimesh::multimesh(), wmtk::io::ParaviewWriter::ParaviewWriter(), wmtk::components::internal::periodic_optimization(), wmtk::components::points_to_rowvectors(), wmtk::components::Marching::process(), wmtk::operations::composite::ProjectOperation::ProjectOperation(), wmtk::components::internal::RegularSpace::regularize_tags(), wmtk::components::isotropic_remeshing::relative_to_absolute_length(), wmtk::multimesh::utils::internal::TupleTag::run(), wmtk::operations::AttributeTransferStrategyBase::run_on_all(), wmtk::Scheduler::run_operation_on_all(), wmtk::Scheduler::run_operation_on_all_coloring(), wmtk::mesh_utils::set_matrix_attribute(), wmtk::components::internal::set_operation_energy_filter(), wmtk::components::set_operation_energy_filter(), wmtk::components::internal::set_operation_energy_filter_after_sizing_field(), wmtk::components::set_operation_energy_filter_after_sizing_field(), wmtk::components::shortest_edge_collapse::shortest_edge_collapse(), TEST_CASE(), and wmtk::components::to_points().
|
private |
Generate a vector of Tuples from global vertex/edge/triangle/tetrahedron index.
type | the type of tuple, can be vertex/edge/triangle/tetrahedron |
include_deleted | if true returns also the deleted tuples (default false) |
Definition at line 72 of file Mesh.cpp.
References capacity(), wmtk::attribute::CachingAccessor< T, Dim >::const_scalar_attribute(), get_flag_accessor(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), top_cell_dimension(), and tuple_from_id().
std::vector< std::shared_ptr< Mesh > > wmtk::Mesh::get_all_child_meshes | ( | ) | const |
returns all multimesh child meshes
Definition at line 227 of file Mesh_multimesh.cpp.
References get_child_meshes().
Referenced by wmtk::invariants::SeparateSubstructuresInvariant::before(), wmtk::multimesh::BoundaryChecker::for_all_meshes(), and get_all_meshes().
std::vector< simplex::IdSimplex > wmtk::Mesh::get_all_id_simplex | ( | PrimitiveType | type | ) | const |
|
private |
Definition at line 49 of file Mesh.cpp.
References capacity(), wmtk::attribute::CachingAccessor< T, Dim >::const_scalar_attribute(), get_flag_accessor(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), and top_cell_dimension().
std::vector< std::shared_ptr< const Mesh > > wmtk::Mesh::get_all_meshes | ( | ) | const |
returns all meshes in multimesh
Definition at line 242 of file Mesh_multimesh.cpp.
References get_all_child_meshes().
template const wmtk::Rational & wmtk::Mesh::get_attribute_default_value | ( | const TypedAttributeHandle< T > & | handle | ) | const |
Definition at line 38 of file Mesh_attributes.cpp.
References wmtk::attribute::AttributeManager::get_attribute_default_value(), and m_attribute_manager.
|
inline |
Definition at line 943 of file Mesh.hpp.
References wmtk::attribute::AttributeManager::get_attribute_dimension(), and m_attribute_manager.
Referenced by wmtk::RoundedInvariant::before(), wmtk::Swap2dUnroundedVertexInvariant::before(), wmtk::attribute::MeshAttributeHandle::dimension(), wmtk::operations::Rounding::execute(), and wmtk::HDF5Reader::set_attribute().
|
inline |
Definition at line 917 of file Mesh.hpp.
Referenced by wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::components::internal::edge_insertion(), wmtk::multimesh::utils::extract_and_register_child_mesh_from_tag(), wmtk::components::gather_attributes(), wmtk::components::utils::get_attribute(), wmtk::components::multimesh::utils::detail::get_attribute(), wmtk::components::internal::periodic_optimization(), wmtk::HDF5Reader::set_attribute(), and TEST_CASE().
|
inline |
Definition at line 927 of file Mesh.hpp.
References wmtk::attribute::AttributeManager::get(), m_attribute_manager, wmtk::attribute::TypedAttributeHandle< T >::m_base_handle, and wmtk::attribute::TypedAttributeHandle< T >::m_primitive_type.
Referenced by wmtk::multimesh::MultiMeshManager::update_child_handles().
std::string wmtk::Mesh::get_attribute_name | ( | const attribute::MeshAttributeHandle::HandleVariant & | handle | ) | const |
Definition at line 160 of file Mesh_attributes.cpp.
References wmtk::attribute::AttributeManager::get_name(), and m_attribute_manager.
|
inline |
Definition at line 949 of file Mesh.hpp.
References wmtk::attribute::AttributeManager::get_name(), and m_attribute_manager.
Referenced by wmtk::attribute::MeshAttributeHandle::name(), wmtk::components::output::output(), and wmtk::multimesh::utils::transfer_attribute().
std::vector< std::shared_ptr< Mesh > > wmtk::Mesh::get_child_meshes | ( | ) | const |
returns the direct multimesh child meshes for the current mesh
Definition at line 222 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::get_child_meshes(), and m_multi_mesh_manager.
Referenced by wmtk::invariants::NoChildMeshAttachingInvariant::before(), wmtk::multimesh::utils::MapValidator::check_switch_homomorphism(), wmtk::operations::AMIPSOptimizationSmoothing::execute(), wmtk::operations::AMIPSOptimizationSmoothingPeriodic::execute(), get_all_child_meshes(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), and wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_ear_replacement().
const attribute::Accessor< char > wmtk::Mesh::get_const_flag_accessor | ( | PrimitiveType | type | ) | const |
Definition at line 162 of file Mesh.cpp.
References create_const_accessor(), wmtk::get_primitive_type_id(), and m_flag_handles.
Referenced by wmtk::multimesh::MultiMeshManager::find_valid_tuple_from_alternatives(), get_flag_accessor(), is_removed(), wmtk::multimesh::MultiMeshManager::same_simplex_dimension_surjection(), wmtk::multimesh::MultiMeshManager::update_map_tuple_hashes(), and wmtk::multimesh::MultiMeshManager::update_maps_from_edge_operation().
|
protected |
Definition at line 166 of file Mesh.cpp.
References create_accessor(), wmtk::get_primitive_type_id(), and m_flag_handles.
const attribute::Accessor< char > wmtk::Mesh::get_flag_accessor | ( | PrimitiveType | type | ) | const |
Definition at line 158 of file Mesh.cpp.
References get_const_flag_accessor().
Referenced by wmtk::multimesh::MultiMeshManager::check_child_map_valid(), consolidate(), wmtk::EdgeMesh::EdgeMeshOperationExecutor::EdgeMeshOperationExecutor(), get_all(), get_all_id_simplex(), wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), wmtk::PointMesh::initialize(), wmtk::TetMesh::is_connectivity_valid(), wmtk::TriMesh::is_connectivity_valid(), wmtk::EdgeMesh::is_connectivity_valid(), request_simplex_indices(), wmtk::TetMesh::TetMeshOperationExecutor::TetMeshOperationExecutor(), and wmtk::TriMesh::TriMeshOperationExecutor::TriMeshOperationExecutor().
simplex::IdSimplex wmtk::Mesh::get_id_simplex | ( | const simplex::Simplex & | s | ) | const |
Definition at line 33 of file Mesh.cpp.
References wmtk::simplex::Simplex::primitive_type(), and wmtk::simplex::Simplex::tuple().
simplex::IdSimplex wmtk::Mesh::get_id_simplex | ( | const Tuple & | tuple, |
PrimitiveType | pt | ||
) | const |
Retrieve the IdSimplex that is represented by the tuple and primitive type.
Definition at line 28 of file Mesh.cpp.
Referenced by wmtk::simplex::CofacesSingleDimensionIterable::Iterator::init(), wmtk::simplex::LinkIterable::Iterator::init(), wmtk::simplex::LinkSingleDimensionIterable::Iterator::init(), wmtk::simplex::ClosedStarIterable::Iterator::step_depth_3(), wmtk::simplex::CofacesSingleDimensionIterable::Iterator::step_depth_3(), wmtk::simplex::LinkIterable::Iterator::step_depth_3(), wmtk::simplex::LinkSingleDimensionIterable::Iterator::step_depth_3(), and wmtk::simplex::OpenStarIterable::Iterator::step_depth_3().
|
inlinestaticprotected |
Definition at line 823 of file Mesh.hpp.
References wmtk::attribute::Accessor< T, MeshType, Dim >::index_access().
Referenced by wmtk::multimesh::MultiMeshManager::child_global_cid(), wmtk::multimesh::MultiMeshManager::parent_global_cid(), wmtk::multimesh::MultiMeshManager::parent_local_fid(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_ear_replacement(), wmtk::multimesh::MultiMeshManager::update_map_tuple_hashes(), and wmtk::multimesh::MultiMeshManager::update_maps_from_edge_operation().
|
inlinestaticprotected |
Definition at line 828 of file Mesh.hpp.
References wmtk::attribute::Accessor< T, MeshType, Dim >::index_access().
Mesh & wmtk::Mesh::get_multi_mesh_child_mesh | ( | const std::vector< int64_t > & | relative_id | ) |
Definition at line 213 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::get_child_mesh(), and m_multi_mesh_manager.
const Mesh & wmtk::Mesh::get_multi_mesh_child_mesh | ( | const std::vector< int64_t > & | relative_id | ) | const |
Definition at line 217 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::get_child_mesh(), and m_multi_mesh_manager.
Mesh & wmtk::Mesh::get_multi_mesh_mesh | ( | const std::vector< int64_t > & | absolute_id | ) |
Definition at line 203 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::get_mesh(), and m_multi_mesh_manager.
const Mesh & wmtk::Mesh::get_multi_mesh_mesh | ( | const std::vector< int64_t > & | absolute_id | ) | const |
Definition at line 207 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::get_mesh(), and m_multi_mesh_manager.
Mesh & wmtk::Mesh::get_multi_mesh_root | ( | ) |
returns a reference to the root of a multimesh tree
Definition at line 194 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::get_root_mesh(), and m_multi_mesh_manager.
Referenced by wmtk::multimesh::MultiMeshManager::can_map(), wmtk::multimesh::MultiMeshVisitor< NodeFunctor_ >::execute_from_root(), wmtk::multimesh::MultiMeshSimplexVisitor< cell_dimension_, NodeFunctor_ >::execute_from_root(), wmtk::multimesh::BoundaryChecker::for_all_meshes(), is_from_same_multi_mesh_structure(), and wmtk::components::isotropic_remeshing::isotropic_remeshing().
const Mesh & wmtk::Mesh::get_multi_mesh_root | ( | ) | const |
returns a const reference to the root of a multimesh tree
Definition at line 198 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::get_root_mesh(), and m_multi_mesh_manager.
simplex::Simplex wmtk::Mesh::get_simplex | ( | const simplex::IdSimplex & | s | ) | const |
Convert an IdSimplex into a Simplex.
Definition at line 38 of file Mesh.cpp.
References wmtk::simplex::IdSimplex::index(), wmtk::simplex::IdSimplex::primitive_type(), and tuple_from_id().
Referenced by wmtk::operations::Operation::apply_attribute_transfer().
Tuple wmtk::Mesh::get_tuple_from_id_simplex | ( | const simplex::IdSimplex & | s | ) | const |
Definition at line 44 of file Mesh.cpp.
References wmtk::simplex::IdSimplex::index(), wmtk::simplex::IdSimplex::primitive_type(), and tuple_from_id().
Referenced by wmtk::simplex::IdSimplexCollection::simplex_vector_tuples().
|
protected |
Definition at line 119 of file Mesh_attributes.cpp.
References wmtk::attribute::AttributeManager::guarantee_at_least_attributes(), m_attribute_manager, and top_cell_dimension().
|
protected |
Definition at line 115 of file Mesh_attributes.cpp.
References wmtk::get_primitive_type_id(), wmtk::attribute::AttributeManager::guarantee_at_least_attributes(), and m_attribute_manager.
|
protected |
Definition at line 130 of file Mesh_attributes.cpp.
References wmtk::attribute::AttributeManager::guarantee_more_attributes(), m_attribute_manager, and top_cell_dimension().
|
protected |
Definition at line 126 of file Mesh_attributes.cpp.
References wmtk::get_primitive_type_id(), wmtk::attribute::AttributeManager::guarantee_more_attributes(), and m_attribute_manager.
Referenced by wmtk::operations::EdgeOperationData::request_simplex_indices().
|
inline |
Definition at line 937 of file Mesh.hpp.
References wmtk::attribute::AttributeManager::get(), and m_attribute_manager.
Referenced by wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::components::utils::get_attribute(), wmtk::components::multimesh::utils::detail::get_attribute(), and wmtk::HDF5Reader::set_attribute().
|
inline |
Definition at line 784 of file Mesh.hpp.
References wmtk::multimesh::MultiMeshManager::has_child_mesh(), and m_multi_mesh_manager.
|
inline |
returns if the mesh has a child mesh in the given dimension
dimension |
Definition at line 779 of file Mesh.hpp.
References wmtk::multimesh::MultiMeshManager::has_child_mesh_in_dimension(), and m_multi_mesh_manager.
|
inlineprotected |
Definition at line 813 of file Mesh.hpp.
References wmtk::simplex::IdSimplex::index().
|
inlineprotected |
Definition at line 812 of file Mesh.hpp.
References wmtk::simplex::IdSimplex::index().
|
protectedpure virtual |
Forwarding version of id on simplices that does id caching.
Implemented in wmtk::MeshCRTP< Derived >, wmtk::MeshCRTP< EdgeMesh >, wmtk::MeshCRTP< TriMesh >, wmtk::MeshCRTP< TetMesh >, and wmtk::MeshCRTP< PointMesh >.
|
inlineprotected |
return the global id of the Tuple of the given dimension
This function uses the implementation defined in a derived class (like a Tri/TetMesh) using a virtual function, but to enable more opportunities teh actual virtual function is id_virtual
m | |
type | d-0 -> vertex d-1 -> edge d-2 -> face d-3 -> tetrahedron |
Definition at line 1020 of file Mesh.hpp.
References id_virtual().
Referenced by wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism(), wmtk::simplex::utils::SimplexComparisons::equal(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), wmtk::multimesh::MultiMeshManager::find_valid_tuple_from_split(), wmtk::simplex::IdSimplex::id(), is_valid(), wmtk::simplex::utils::SimplexComparisons::less(), wmtk::simplex::RawSimplex::opposite_face(), wmtk::io::ParaviewWriter::ParaviewWriter(), wmtk::simplex::RawSimplex::RawSimplex(), and wmtk::multimesh::utils::internal::TupleTag::vid().
|
protectedpure virtual |
Internal utility to allow id to be virtual with a non-virtual overload in derived -Mesh classes.
Mesh::id invokes Mesh::id_virtual which is final overriden by MeshCRTP<TriMesh>::id_virtual, which in turn invokes MeshCRTP<TriMesh>::id, and then TriMesh::id. This circuitous mechanism makes MeshCRTP<TriMesh>::id and TriMesh::id fully inlineable, so code that wants to take in any derived class can get optimized results with MeshCRTP, or for cases where classes want to utilize just TriMesh they can get inline/accelerated usage as well.
Implemented in wmtk::MeshCRTP< Derived >, wmtk::MeshCRTP< EdgeMesh >, wmtk::MeshCRTP< TriMesh >, wmtk::MeshCRTP< TetMesh >, and wmtk::MeshCRTP< PointMesh >.
Referenced by id().
bool wmtk::Mesh::is_boundary | ( | const simplex::Simplex & | tuple | ) | const |
check if a simplex lies on a boundary or not
simplex |
Definition at line 106 of file Mesh.cpp.
References wmtk::simplex::Simplex::primitive_type(), and wmtk::simplex::Simplex::tuple().
Referenced by wmtk::simplex::TopDimensionCofacesIterable::Iterator::add_neighbors_to_queue(), wmtk::invariants::FusionEdgeInvariant::before(), wmtk::invariants::uvEdgeInvariant::before(), wmtk::invariants::NoBoundaryCollapseToInteriorInvariant::before(), wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism(), wmtk::operations::TetWildTangentialLaplacianSmoothing::execute(), wmtk::components::multimesh::from_boundary(), wmtk::simplex::TopDimensionCofacesIterable::Iterator::init(), wmtk::multimesh::BoundaryChecker::is_boundary(), wmtk::components::multimesh::multimesh(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::operations::NewAttributeStrategy::set_simplex_predicate(), wmtk::simplex::TopDimensionCofacesIterable::Iterator::step_depth_1(), wmtk::simplex::TopDimensionCofacesIterable::Iterator::step_depth_2(), and switch_tuples().
|
pure virtual |
check if a simplex (encoded as a tuple/primitive pair) lies on a boundary or not
simplex |
Implemented in wmtk::EdgeMesh, wmtk::PointMesh, wmtk::MeshCRTP< Derived >, wmtk::MeshCRTP< EdgeMesh >, wmtk::MeshCRTP< TriMesh >, wmtk::MeshCRTP< TetMesh >, wmtk::MeshCRTP< PointMesh >, wmtk::TriMesh, and wmtk::TetMesh.
|
pure virtual |
TODO this needs dimension?
m |
Implemented in wmtk::PointMesh, wmtk::MeshCRTP< Derived >, wmtk::MeshCRTP< EdgeMesh >, wmtk::MeshCRTP< TriMesh >, wmtk::MeshCRTP< TetMesh >, wmtk::MeshCRTP< PointMesh >, wmtk::EdgeMesh, wmtk::TriMesh, and wmtk::TetMesh.
Referenced by wmtk::invariants::CollapseSoftEnergyBeforeInvariant::before(), and wmtk::function::utils::get_simplex_attributes().
|
pure virtual |
Implemented in wmtk::PointMesh, wmtk::EdgeMesh, wmtk::TriMesh, and wmtk::TetMesh.
|
inline |
Definition at line 987 of file Mesh.hpp.
References m_is_free.
Referenced by wmtk::operations::CollapseNewAttributeStrategy< T >::CollapseNewAttributeStrategy(), wmtk::operations::EdgeCollapse::EdgeCollapse(), wmtk::EdgeMesh::EdgeMeshOperationExecutor::get_collapse_simplices_to_delete(), wmtk::TriMesh::TriMeshOperationExecutor::get_collapse_simplices_to_delete(), wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), wmtk::operations::utils::multi_mesh_edge_collapse_with_modified_simplices(), wmtk::operations::utils::multi_mesh_edge_split_with_modified_simplices(), wmtk::operations::tet_mesh::EdgeOperationData::new_vertices(), wmtk::operations::tri_mesh::EdgeOperationData::new_vertices(), wmtk::operations::edge_mesh::EdgeOperationData::new_vertices(), wmtk::operations::edge_mesh::SplitNewAttributeTopoInfo::output_duplicated_free_simplices(), wmtk::operations::tet_mesh::SplitNewAttributeTopoInfo::output_duplicated_free_simplices(), wmtk::operations::tri_mesh::SplitNewAttributeTopoInfo::output_duplicated_free_simplices(), wmtk::operations::EdgeCollapse::set_new_attribute_strategy(), and wmtk::operations::SplitNewAttributeStrategy< T >::SplitNewAttributeStrategy().
bool wmtk::Mesh::is_from_same_multi_mesh_structure | ( | const Mesh & | other | ) | const |
Definition at line 34 of file Mesh_multimesh.cpp.
References get_multi_mesh_root().
Referenced by can_map(), lub_map(), lub_map_tuples(), map(), map_to_child(), map_to_child_tuples(), and map_tuples().
bool wmtk::Mesh::is_hash_valid | ( | const Tuple & | tuple | ) | const |
bool wmtk::Mesh::is_hash_valid | ( | const Tuple & | tuple, |
const attribute::Accessor< int64_t > & | hash_accessor | ||
) | const |
bool wmtk::Mesh::is_multi_mesh_root | ( | ) | const |
return true if this mesh is the root of a multimesh tree
Definition at line 190 of file Mesh_multimesh.cpp.
References wmtk::multimesh::MultiMeshManager::is_root(), and m_multi_mesh_manager.
Referenced by wmtk::components::longest_edge_split::longest_edge_split(), map_to_parent(), map_to_parent_tuple(), and wmtk::components::shortest_edge_collapse::shortest_edge_collapse().
bool wmtk::Mesh::is_removed | ( | const Tuple & | tuple | ) | const |
Definition at line 117 of file Mesh.cpp.
References wmtk::Tuple::m_global_cid.
Referenced by wmtk::multimesh::MultiMeshManager::find_valid_tuple_from_split(), is_removed(), is_valid(), and wmtk::multimesh::MultiMeshManager::update_maps_from_edge_operation().
bool wmtk::Mesh::is_removed | ( | const Tuple & | tuple, |
PrimitiveType | pt | ||
) | const |
Definition at line 121 of file Mesh.cpp.
References is_removed().
|
protected |
Definition at line 133 of file Mesh.cpp.
References is_removed(), and top_simplex_type().
|
protected |
Definition at line 137 of file Mesh.cpp.
References get_const_flag_accessor().
bool wmtk::Mesh::is_valid | ( | const simplex::Simplex & | s | ) | const |
Check if the cached id in a simplex is up-to-date.
Definition at line 143 of file Mesh.cpp.
References id(), is_removed(), is_valid(), wmtk::simplex::Simplex::primitive_type(), and wmtk::simplex::Simplex::tuple().
|
virtual |
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 in wmtk::TriMesh, wmtk::TetMesh, wmtk::PointMesh, and wmtk::EdgeMesh.
Definition at line 112 of file Mesh.cpp.
References wmtk::Tuple::is_null(), and is_removed().
Referenced by wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::simplex::closed_star(), wmtk::multimesh::MultiMeshSimplexVisitor< cell_dimension_, NodeFunctor_ >::execute_from_root(), wmtk::multimesh::MultiMeshManager::find_valid_tuple_from_split(), wmtk::TriMesh::id(), is_valid(), wmtk::EdgeMesh::is_valid(), wmtk::PointMesh::is_valid(), wmtk::TetMesh::is_valid(), wmtk::TriMesh::is_valid(), wmtk::multimesh::MultiMeshManager::map_tuple_between_meshes(), wmtk::multimesh::MultiMeshManager::map_tuple_to_root_tuple(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::simplex::RawSimplex::opposite_face(), wmtk::components::Marching::process(), wmtk::simplex::RawSimplex::RawSimplex(), wmtk::multimesh::MultiMeshManager::register_child_mesh(), and wmtk::multimesh::MultiMeshManager::update_map_tuple_hashes().
std::vector< simplex::Simplex > wmtk::Mesh::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
Satisfies the same properties of standard map, but uses a the LUB as the root
mesh | the mesh a simplex should be mapped to |
simplex | the simplex being mapped to the child mesh |
Definition at line 72 of file Mesh_multimesh.cpp.
References is_from_same_multi_mesh_structure(), wmtk::multimesh::MultiMeshManager::lub_map(), and m_multi_mesh_manager.
Referenced by lub_map().
std::vector< simplex::Simplex > wmtk::Mesh::lub_map | ( | const Mesh & | other_mesh, |
const std::vector< simplex::Simplex > & | my_simplices | ||
) | const |
Definition at line 83 of file Mesh_multimesh.cpp.
References lub_map().
std::vector< Tuple > wmtk::Mesh::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
Satisfies the same properties of standard map_tuples, but uses a the LUB as the root
mesh | the mesh a simplex should be mapped to |
simplex | the simplex being mapped to the child mesh |
Definition at line 143 of file Mesh_multimesh.cpp.
References is_from_same_multi_mesh_structure(), wmtk::multimesh::MultiMeshManager::lub_map_tuples(), and m_multi_mesh_manager.
Referenced by wmtk::operations::AttributeTransferStrategyBase::get_parent_simplices(), and lub_map_tuples().
std::vector< Tuple > wmtk::Mesh::lub_map_tuples | ( | const Mesh & | other_mesh, |
PrimitiveType | pt, | ||
const std::vector< Tuple > & | my_simplices | ||
) | const |
Definition at line 153 of file Mesh_multimesh.cpp.
References lub_map_tuples().
std::vector< simplex::Simplex > wmtk::Mesh::map | ( | const Mesh & | other_mesh, |
const simplex::Simplex & | my_simplex | ||
) | const |
maps a simplex from this mesh to any other mesh
Generic interface for mapping between two arbitrary meshes in a multi-mesh structure. Note that this finds ALL versions of a simplex, potentially crossing over topological features above the pairs of simplices being mapped. For instance, if we map a trimesh seam edge to itself using this interface it will find the edge on the other side of the seam. If more granular mappings are required consider manually navigating the tree with map_to_parent and map_to_child, which of course require a more particular understanding on how a simplex is mapped. Throws if two meshes are not part of the same multi-mesh structure
mesh | the mesh a simplex should be mapped to |
simplex | the simplex being mapped to the child mesh |
Definition at line 48 of file Mesh_multimesh.cpp.
References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map().
Referenced by wmtk::operations::Operation::apply_attribute_transfer(), wmtk::operations::Operation::before(), wmtk::invariants::InvariantCollection::directly_modified_after(), and map().
std::vector< simplex::Simplex > wmtk::Mesh::map | ( | const Mesh & | other_mesh, |
const std::vector< simplex::Simplex > & | my_simplices | ||
) | const |
Definition at line 58 of file Mesh_multimesh.cpp.
References map().
std::vector< simplex::Simplex > wmtk::Mesh::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
Cannot be used outside of applications with guaranteed multi-mesh structures
child_mesh | the simplex shoudl be mapped to |
my_simplex | the simplex being mapped to the child mesh |
the | set of child mesh's simplices that are equivalent to the input simplex |
Definition at line 110 of file Mesh_multimesh.cpp.
References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map_to_child().
Referenced by wmtk::invariants::FusionEdgeInvariant::before(), wmtk::invariants::uvEdgeInvariant::before(), wmtk::components::internal::MultiMeshFromTag::build_adjacency_matrix(), wmtk::operations::AMIPSOptimizationSmoothingPeriodic::execute(), wmtk::components::internal::MultiMeshFromTag::get_connected_region(), and wmtk::components::internal::MultiMeshFromTag::is_root_simplex_manifold().
std::vector< Tuple > wmtk::Mesh::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
Cannot be used outside of applications with guaranteed multi-mesh structures
child | mesh the simplex shoudl be mapped to |
child_mesh | the simplex being mapped to the child mesh |
my_simplex | the set of child mesh's simplices that are equivalent to the input simplex, without the dimension encoded |
Definition at line 179 of file Mesh_multimesh.cpp.
References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map_to_child_tuples().
Referenced by wmtk::invariants::SeparateSubstructuresInvariant::before().
simplex::Simplex wmtk::Mesh::map_to_parent | ( | const simplex::Simplex & | my_simplex | ) | const |
optimized map from a simplex from this mesh to its direct parent
Maps a simplex to its direct parent in the multi-mesh structure. Cannot be used outside of applications with guaranteed multi-mesh structures
throws if this is the root
my_simplex | the simplex being mapped to the parent mesh |
Definition at line 98 of file Mesh_multimesh.cpp.
References is_multi_mesh_root(), m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map_to_parent().
Referenced by wmtk::invariants::FusionEdgeInvariant::before(), wmtk::components::internal::MultiMeshFromTag::build_adjacency_matrix(), wmtk::operations::AMIPSOptimizationSmoothingPeriodic::execute(), and wmtk::components::internal::MultiMeshFromTag::get_connected_region().
Tuple wmtk::Mesh::map_to_parent_tuple | ( | const simplex::Simplex & | my_simplex | ) | const |
optimized map from a simplex from this mesh to its direct parent
Maps a simplex to its direct parent in the multi-mesh structure. Can only be used in applications with guaranteed multi-mesh structures
throws if this is the root
my_simplex | the simplex being mapped to the parent mesh |
Definition at line 168 of file Mesh_multimesh.cpp.
References is_multi_mesh_root(), m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map_to_parent_tuple().
Referenced by wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism().
simplex::Simplex wmtk::Mesh::map_to_root | ( | const simplex::Simplex & | my_simplex | ) | const |
maps a simplex from this mesh to the root mesh
Cannot be used outside of applications with guaranteed multi-mesh structures
my_simplex | the simplex being mapped to the parent mesh |
Definition at line 105 of file Mesh_multimesh.cpp.
References m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map_to_root().
Referenced by wmtk::multimesh::MultiMeshSimplexVisitor< cell_dimension_, NodeFunctor_ >::execute_from_root().
Tuple wmtk::Mesh::map_to_root_tuple | ( | const simplex::Simplex & | my_simplex | ) | const |
maps a simplex from this mesh to the root mesh
Cannot be used outside of applications with guaranteed multi-mesh structures
my_simplex | the simplex being mapped to the parent mesh |
Definition at line 175 of file Mesh_multimesh.cpp.
References m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map_to_root_tuple().
std::vector< Tuple > wmtk::Mesh::map_tuples | ( | const Mesh & | other_mesh, |
const simplex::Simplex & | my_simplex | ||
) | const |
maps a simplex from this mesh to any other mesh
Generic interface for mapping between two arbitrary meshes in a multi-mesh structure Note that this finds ALL versions of a simplex, potentially crossing over topological features above the pairs of simplices being mapped. For instance, if we map a trimesh seam edge to itself using this interface it will find the edge on the other side of the seam. If more granular mappings are required, consider manually navigating the tree with map_to_parent and map_to_child, which of course requires a more particular understanding on how a simplex is mapped. throws if two meshes are not part of the same multi-mesh structure
other_mesh | the mesh a simplex should be mapped to |
my_simplex | the simplex being mapped to the child mesh |
Definition at line 121 of file Mesh_multimesh.cpp.
References is_from_same_multi_mesh_structure(), m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::map_tuples().
Referenced by wmtk::invariants::InvariantCollection::after(), wmtk::operations::composite::ProjectOperation::execute(), wmtk::multimesh::BoundaryChecker::is_boundary(), map_tuples(), and register_child_mesh().
std::vector< Tuple > wmtk::Mesh::map_tuples | ( | const Mesh & | other_mesh, |
PrimitiveType | pt, | ||
const std::vector< Tuple > & | my_simplices | ||
) | const |
Definition at line 132 of file Mesh_multimesh.cpp.
References map_tuples().
Referenced by wmtk::TetMesh::operator=(), and wmtk::TriMesh::operator=().
Definition at line 23 of file Mesh_construction.cpp.
References m_attribute_manager, m_cell_hash_handle, m_flag_handles, m_is_free, m_multi_mesh_manager, and m_top_cell_dimension.
bool wmtk::Mesh::operator== | ( | const Mesh & | other | ) | const |
Definition at line 180 of file Mesh.cpp.
References m_attribute_manager.
Implemented in wmtk::PointMesh, wmtk::EdgeMesh, wmtk::TriMesh, and wmtk::TetMesh.
Referenced by wmtk::components::internal::adjust_sizing_field(), wmtk::components::adjust_sizing_field(), wmtk::invariants::CollapseEnergyBeforeInvariant::before(), wmtk::invariants::CollapseEnergyBeforeInvariantDouble::before(), wmtk::function::utils::get_simplex_attributes(), wmtk::components::internal::periodic_optimization(), wmtk::components::internal::set_operation_energy_filter(), wmtk::components::set_operation_energy_filter(), wmtk::components::internal::set_operation_energy_filter_after_sizing_field(), and wmtk::components::set_operation_energy_filter_after_sizing_field().
decltype(auto) wmtk::Mesh::parent_scope | ( | Functor && | f, |
Args &&... | args | ||
) | const |
Evaluate the passed in function inside the parent scope.
The parent_scope function can be nested to reach deeper levels in the scope stack.
f | The function that is evaluated within the parent scope. |
args... | The other arguments to this function |
Referenced by wmtk::invariants::FunctionInvariant::after(), wmtk::invariants::InvariantCollection::after(), wmtk::invariants::MaxFunctionInvariant::after(), wmtk::invariants::Invariant::directly_modified_after(), wmtk::invariants::InvariantCollection::directly_modified_after(), wmtk::operations::NewAttributeStrategy::evaluate_predicate(), wmtk::operations::edge_mesh::SplitNewAttributeTopoInfo::input_ear_simplices(), wmtk::operations::tet_mesh::SplitNewAttributeTopoInfo::input_ear_simplices(), wmtk::operations::tri_mesh::SplitNewAttributeTopoInfo::input_ear_simplices(), wmtk::operations::edge_mesh::CollapseNewAttributeTopoInfo::merged_simplices(), wmtk::operations::tet_mesh::CollapseNewAttributeTopoInfo::merged_simplices(), wmtk::operations::tri_mesh::CollapseNewAttributeTopoInfo::merged_simplices(), wmtk::operations::EdgeCollapse::unmodified_primitives(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_ear_replacement(), and wmtk::multimesh::MultiMeshManager::update_map_tuple_hashes().
template wmtk::attribute::MeshAttributeHandle wmtk::Mesh::register_attribute< Rational > | ( | const std::string & | name, |
PrimitiveType | type, | ||
int64_t | size, | ||
bool | replace = false , |
||
T | default_value = T(0) |
||
) |
Definition at line 11 of file Mesh_attributes.cpp.
Referenced by wmtk::components::internal::MultiMeshFromTag::build_adjacency_matrix(), wmtk::utils::cast_attribute(), wmtk::components::internal::MultiMeshFromTag::compute_substructure_mesh(), wmtk::components::internal::edge_insertion(), wmtk::io::MshReader::extract_element_attribute(), wmtk::components::multimesh::from_boundary(), wmtk::components::gather_attributes(), wmtk::components::longest_edge_split::longest_edge_split(), wmtk::components::multimesh::multimesh(), wmtk::components::internal::periodic_optimization(), wmtk::components::internal::RegularSpace::regularize_tags(), wmtk::HDF5Reader::set_attribute(), wmtk::components::shortest_edge_collapse::shortest_edge_collapse(), and TEST_CASE().
template TypedAttributeHandle< Rational > wmtk::Mesh::register_attribute_typed | ( | const std::string & | name, |
PrimitiveType | type, | ||
int64_t | size, | ||
bool | replace = false , |
||
T | default_value = T(0) |
||
) |
Definition at line 25 of file Mesh_attributes.cpp.
References m_attribute_manager, and wmtk::attribute::AttributeManager::register_attribute().
Referenced by wmtk::components::Marching::process(), and wmtk::multimesh::MultiMeshManager::register_child_mesh().
void wmtk::Mesh::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
The parameter map_tuples is a sequence of {A,B} where A is a tuple of this mesh and B is a tuple of the child mesh. The tuple B is assumed to encode a top dimension simplex in the child mesh, and A is any tuple that corresponds to that simplex in the parent mesh
child_mesh | the mesh that will become a child of this mesh |
mesh_tuples | a sequence of corresponding tuples between meshes |
Definition at line 16 of file Mesh_multimesh.cpp.
References m_multi_mesh_manager, map_tuples(), and wmtk::multimesh::MultiMeshManager::register_child_mesh().
Referenced by wmtk::components::internal::MultiMeshFromTag::compute_substructure_mesh(), wmtk::components::internal::MultiMeshFromTag::create_substructure_soup(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), wmtk::components::multimesh::from_facet_bijection(), and wmtk::components::multimesh::multimesh().
|
protected |
Definition at line 43 of file Mesh_attributes.cpp.
References capacity(), get_flag_accessor(), wmtk::get_primitive_type_id(), wmtk::attribute::Accessor< T, MeshType, Dim >::index_access(), wmtk::logger(), m_attribute_manager, wmtk::attribute::AttributeManager::m_capacities, wmtk::primitive_type_name(), wmtk::attribute::Accessor< T, MeshType, Dim >::reserved_size(), and wmtk::attribute::CachingAccessor< T, Dim >::scalar_attribute().
Referenced by wmtk::TriMesh::TriMeshOperationExecutor::create_spine_simplices(), wmtk::TriMesh::TriMeshOperationExecutor::fill_split_facet_data(), wmtk::TriMesh::TriMeshOperationExecutor::replace_incident_face(), wmtk::operations::EdgeOperationData::request_simplex_indices(), wmtk::TetMesh::TetMeshOperationExecutor::split_edge(), and wmtk::EdgeMesh::EdgeMeshOperationExecutor::split_edge_single_mesh().
|
protected |
|
protected |
Definition at line 93 of file Mesh_attributes.cpp.
References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_attributes().
|
protected |
reserve space for all attributes data types for all dimensional simplices
top_d | the top dimensional simplex |
Definition at line 89 of file Mesh_attributes.cpp.
References m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_to_fit().
Referenced by wmtk::PointMesh::initialize().
|
protected |
Definition at line 108 of file Mesh_attributes.cpp.
References m_attribute_manager, wmtk::attribute::AttributeManager::reserve_more_attributes(), and top_cell_dimension().
|
protected |
Definition at line 103 of file Mesh_attributes.cpp.
References wmtk::get_primitive_type_id(), m_attribute_manager, and wmtk::attribute::AttributeManager::reserve_more_attributes().
void wmtk::Mesh::serialize | ( | MeshWriter & | writer, |
const Mesh * | local_root = nullptr |
||
) | const |
Definition at line 92 of file Mesh.cpp.
References wmtk::multimesh::MultiMeshManager::absolute_id(), m_attribute_manager, m_multi_mesh_manager, wmtk::multimesh::MultiMeshManager::relative_id(), wmtk::attribute::AttributeManager::serialize(), wmtk::multimesh::MultiMeshManager::serialize(), top_simplex_type(), wmtk::MeshWriter::write_absolute_id(), and wmtk::MeshWriter::write_top_simplex_type().
Referenced by wmtk::components::multimesh::axis_aligned_fusion(), wmtk::components::internal::edge_insertion(), wmtk::components::internal::get_vf(), wmtk::components::output::output(), wmtk::components::output::output_hdf5(), TEST_CASE(), wmtk::components::tetwild_simplification(), wmtk::components::triangle_insertion::triangle_insertion(), wmtk::components::internal::winding_number(), wmtk::components::internal::write(), and wmtk::io::Cache::write_mesh().
|
protected |
Definition at line 97 of file Mesh_attributes.cpp.
References m_attribute_manager, and wmtk::attribute::AttributeManager::set_capacities().
Referenced by wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), and wmtk::PointMesh::initialize().
void wmtk::Mesh::set_capacities_from_flags | ( | ) |
Definition at line 172 of file Mesh.cpp.
References m_attribute_manager, wmtk::attribute::AttributeManager::m_capacities, m_flag_handles, and wmtk::attribute::Accessor< T, MeshType, Dim >::reserved_size().
|
protected |
Definition at line 129 of file Mesh.cpp.
References tuple_from_id().
Referenced by wmtk::operations::EdgeOperationData::simplex_from_id().
|
protected |
Definition at line 186 of file Mesh.cpp.
References wmtk::get_primitive_type_id().
|
pure virtual |
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 |
Implemented in wmtk::PointMesh, wmtk::MeshCRTP< Derived >, wmtk::MeshCRTP< EdgeMesh >, wmtk::MeshCRTP< TriMesh >, wmtk::MeshCRTP< TetMesh >, wmtk::MeshCRTP< PointMesh >, wmtk::EdgeMesh, wmtk::TriMesh, and wmtk::TetMesh.
Referenced by wmtk::simplex::TopDimensionCofacesIterable::Iterator::add_neighbors_to_queue(), wmtk::components::internal::adjust_sizing_field(), wmtk::components::adjust_sizing_field(), wmtk::invariants::EnvelopeInvariant::after(), wmtk::invariants::CollapseEnergyBeforeInvariant::before(), wmtk::invariants::CollapseEnergyBeforeInvariantDouble::before(), wmtk::invariants::CollapseSoftEnergyBeforeInvariant::before(), wmtk::MultiMeshEdgeTopologyInvariant::before(), wmtk::Swap23EnergyBeforeInvariant::before(), wmtk::Swap2dEdgeLengthInvariant::before(), wmtk::Swap2dUnroundedVertexInvariant::before(), wmtk::Swap32EnergyBeforeInvariant::before(), wmtk::Swap32EnergyBeforeInvariantDouble::before(), wmtk::Swap44EnergyBeforeInvariant::before(), wmtk::Swap44EnergyBeforeInvariantDouble::before(), wmtk::Swap56EnergyBeforeInvariant::before(), wmtk::Swap56EnergyBeforeInvariantDouble::before(), wmtk::simplex::boundary_tuples(), wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism(), wmtk::operations::TetWildTangentialLaplacianSmoothing::execute(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), wmtk::function::utils::get_simplex_attributes(), wmtk::multimesh::MultiMeshManager::map_tuple_between_meshes(), wmtk::simplex::ClosedStarIterable::Iterator::navigate_to_link(), wmtk::simplex::LinkIterable::Iterator::navigate_to_link(), wmtk::simplex::LinkSingleDimensionIterable::Iterator::navigate_to_link(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::simplex::CofacesInSimplexIterable::Iterator::operator++(), wmtk::io::ParaviewWriter::ParaviewWriter(), wmtk::components::internal::periodic_optimization(), wmtk::components::Marching::process(), wmtk::multimesh::utils::internal::TupleTag::run(), wmtk::simplex::TopDimensionCofacesIterable::Iterator::step_depth_1(), wmtk::simplex::TopDimensionCofacesIterable::Iterator::step_depth_2(), wmtk::simplex::ClosedStarIterable::Iterator::step_edge_mesh(), wmtk::simplex::ClosedStarIterable::Iterator::step_tet_mesh(), wmtk::simplex::ClosedStarIterable::Iterator::step_tri_mesh(), wmtk::simplex::HalfClosedStarIterable::Iterator::step_tri_mesh(), switch_tuples(), switch_tuples_unsafe(), wmtk::simplex::tuples_preserving_primitive_types(), and wmtk::simplex::vertices().
|
inline |
Definition at line 967 of file Mesh.hpp.
References is_boundary(), switch_tuple(), top_cell_dimension(), and top_simplex_type().
Referenced by wmtk::simplex::TopDimensionCofacesIterable::Iterator::add_neighbors_to_queue(), wmtk::invariants::CollapseSoftEnergyBeforeInvariant::before(), wmtk::Swap23EnergyBeforeInvariant::before(), wmtk::Swap2dEdgeLengthInvariant::before(), wmtk::Swap2dUnroundedVertexInvariant::before(), wmtk::Swap32EnergyBeforeInvariant::before(), wmtk::Swap32EnergyBeforeInvariantDouble::before(), wmtk::Swap44EnergyBeforeInvariant::before(), wmtk::Swap44EnergyBeforeInvariantDouble::before(), wmtk::Swap56EnergyBeforeInvariant::before(), wmtk::Swap56EnergyBeforeInvariantDouble::before(), wmtk::simplex::boundary_tuples(), wmtk::simplex::internal::boundary_with_preserved_face_tuples(), wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::simplex::edges(), wmtk::operations::composite::TetCellSplit::execute(), wmtk::operations::composite::TetEdgeSwap::execute(), wmtk::operations::composite::TetFaceSwap::execute(), wmtk::operations::composite::TriEdgeSwap::execute(), wmtk::operations::composite::TriFaceSplit::execute(), wmtk::operations::TetWildTangentialLaplacianSmoothing::execute(), wmtk::multimesh::utils::internal::TupleTag::extract_and_register_child_mesh_from_tag_handle(), wmtk::simplex::faces(), wmtk::operations::EdgeSplit::new_spine_edges(), wmtk::operations::VertexTangentialLaplacianSmooth::operator()(), wmtk::components::internal::periodic_optimization(), wmtk::simplex::TopDimensionCofacesIterable::Iterator::step_depth_2(), wmtk::simplex::ClosedStarIterable::Iterator::step_depth_3(), wmtk::simplex::CofacesSingleDimensionIterable::Iterator::step_depth_3(), wmtk::simplex::LinkIterable::Iterator::step_depth_3(), wmtk::simplex::LinkSingleDimensionIterable::Iterator::step_depth_3(), wmtk::simplex::OpenStarIterable::Iterator::step_depth_3(), wmtk::simplex::ClosedStarIterable::Iterator::step_faces_tetrahedron(), wmtk::simplex::ClosedStarIterable::Iterator::step_tet_mesh(), wmtk::simplex::HalfClosedStarIterable::Iterator::step_tet_mesh(), wmtk::simplex::ClosedStarIterable::Iterator::step_tri_mesh(), and wmtk::simplex::vertices().
Tuple wmtk::Mesh::switch_tuples | ( | const Tuple & | tuple, |
const std::initializer_list< PrimitiveType > & | op_sequence | ||
) | const |
|
inline |
Definition at line 1010 of file Mesh.hpp.
References switch_tuple().
Tuple wmtk::Mesh::switch_tuples_unsafe | ( | const Tuple & | tuple, |
const std::initializer_list< PrimitiveType > & | op_sequence | ||
) | const |
|
inline |
Definition at line 992 of file Mesh.hpp.
References m_top_cell_dimension.
Referenced by wmtk::components::multimesh::axis_aligned_fusion(), wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism(), wmtk::multimesh::utils::MapValidator::check_parent_map_attribute_valid(), wmtk::components::TagIntersection::compute_intersection(), consolidate(), wmtk::simplex::ClosedStarIterable::Iterator::depth(), wmtk::simplex::CofacesSingleDimensionIterable::Iterator::depth(), wmtk::simplex::LinkIterable::Iterator::depth(), wmtk::simplex::LinkSingleDimensionIterable::Iterator::depth(), wmtk::simplex::OpenStarIterable::Iterator::depth(), wmtk::simplex::TopDimensionCofacesIterable::Iterator::depth(), get_all(), get_all_id_simplex(), guarantee_at_least_attributes(), guarantee_more_attributes(), wmtk::multimesh::BoundaryChecker::is_boundary(), wmtk::simplex::LinkIterable::Iterator::Iterator(), wmtk::simplex::LinkSingleDimensionIterable::Iterator::Iterator(), wmtk::components::multimesh::multimesh(), wmtk::simplex::ClosedStarIterable::Iterator::navigate_to_link(), wmtk::simplex::LinkIterable::Iterator::navigate_to_link(), wmtk::simplex::LinkSingleDimensionIterable::Iterator::navigate_to_link(), wmtk::simplex::ClosedStarIterable::Iterator::operator++(), wmtk::simplex::LinkIterable::Iterator::operator++(), wmtk::simplex::OpenStarIterable::Iterator::operator++(), wmtk::components::output::output(), wmtk::multimesh::MultiMeshManager::register_child_mesh(), wmtk::components::internal::RegularSpace::regularize_tags(), reserve_more_attributes(), wmtk::components::shortest_edge_collapse::shortest_edge_collapse(), switch_tuples(), and top_simplex_type().
|
inline |
Definition at line 996 of file Mesh.hpp.
References top_cell_dimension().
Referenced by wmtk::simplex::TopDimensionCofacesIterable::Iterator::add_neighbors_to_queue(), wmtk::components::internal::adjust_sizing_field(), wmtk::components::adjust_sizing_field(), wmtk::invariants::EnvelopeInvariant::after(), wmtk::multimesh::MultiMeshManager::can_map_child(), wmtk::multimesh::MultiMeshManager::check_child_map_valid(), wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism(), wmtk::multimesh::utils::MapValidator::check_parent_map_attribute_valid(), wmtk::simplex::closed_star(), wmtk::simplex::cofaces_single_dimension_tuples(), wmtk::simplex::CofacesInSimplexIterable::CofacesInSimplexIterable(), wmtk::operations::CollapseNewAttributeStrategy< T >::CollapseNewAttributeStrategy(), wmtk::multimesh::MultiMeshManager::deregister_child_mesh(), wmtk::multimesh::utils::extract_and_register_child_mesh_from_tag(), wmtk::io::MshReader::extract_element_attribute(), wmtk::simplex::faces_single_dimension(), wmtk::simplex::faces_single_dimension_tuples(), wmtk::multimesh::MultiMeshManager::find_valid_tuple(), wmtk::multimesh::MultiMeshManager::find_valid_tuple_from_split(), wmtk::components::gather_attributes(), wmtk::components::utils::get_attribute(), wmtk::components::multimesh::utils::detail::get_attribute(), wmtk::invariants::Invariant::get_top_dimension_cofaces(), is_removed(), wmtk::simplex::link(), wmtk::simplex::link_single_dimension(), wmtk::function::LocalNeighborsSumFunction::LocalNeighborsSumFunction(), wmtk::components::longest_edge_split::longest_edge_split(), wmtk::multimesh::MultiMeshManager::map_to_child_tuples(), wmtk::multimesh::MultiMeshManager::map_tuple_between_meshes(), wmtk::components::marching(), wmtk::components::multimesh::multimesh(), wmtk::simplex::neighbors_single_dimension_tuples(), wmtk::operations::EdgeSplit::new_spine_edges(), wmtk::simplex::open_star(), wmtk::simplex::ClosedStarIterable::Iterator::operator++(), wmtk::simplex::HalfClosedStarIterable::Iterator::operator++(), wmtk::components::internal::periodic_optimization(), wmtk::multimesh::MultiMeshManager::register_child_mesh(), wmtk::components::internal::RegularSpace::regularize_tags(), wmtk::operations::utils::MultiMeshEdgeSplitFunctor::run(), wmtk::multimesh::same_simplex_dimension_bijection(), wmtk::multimesh::MultiMeshManager::same_simplex_dimension_surjection(), serialize(), wmtk::components::internal::set_operation_energy_filter(), wmtk::components::set_operation_energy_filter(), wmtk::components::internal::set_operation_energy_filter_after_sizing_field(), wmtk::components::set_operation_energy_filter_after_sizing_field(), wmtk::components::shortest_edge_collapse::shortest_edge_collapse(), wmtk::operations::SplitNewAttributeStrategy< T >::SplitNewAttributeStrategy(), wmtk::simplex::ClosedStarIterable::Iterator::step_depth_3(), wmtk::simplex::OpenStarIterable::Iterator::step_depth_3(), wmtk::MeshCRTP< Derived >::switch_tuple(), switch_tuples(), TEST_CASE(), wmtk::components::to_points(), wmtk::simplex::top_dimension_cofaces(), wmtk::simplex::top_dimension_cofaces_tuples(), wmtk::multimesh::MultiMeshManager::update_map_tuple_hashes(), and wmtk::components::internal::winding_number().
|
protectedpure virtual |
internal function that returns the tuple of requested type, and has the global index cid
gid |
Implemented in wmtk::PointMesh, wmtk::MeshCRTP< Derived >, wmtk::MeshCRTP< EdgeMesh >, wmtk::MeshCRTP< TriMesh >, wmtk::MeshCRTP< TetMesh >, wmtk::MeshCRTP< PointMesh >, wmtk::EdgeMesh, wmtk::TriMesh, and wmtk::TetMesh.
Referenced by get_all(), get_simplex(), get_tuple_from_id_simplex(), wmtk::multimesh::MultiMeshManager::same_simplex_dimension_surjection(), simplex_from_id(), and wmtk::multimesh::utils::internal::TupleTag::v_tuple().
|
private |
Update the child handles after clearing attributes.
Definition at line 28 of file Mesh_multimesh.cpp.
References m_multi_mesh_manager, and wmtk::multimesh::MultiMeshManager::update_child_handles().
Referenced by clear_attributes().
void wmtk::Mesh::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
vertex | operating vertex tuple |
hash_accessor | hash accesor of the parent mesh (*this) |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
protected |
Definition at line 839 of file Mesh.hpp.
Referenced by assert_capacity_valid(), capacity(), child_hashables(), clear_attributes(), consolidate(), create_single_mesh_scope(), custom_attributes(), delete_attribute(), wmtk::multimesh::MultiMeshManager::deregister_child_mesh(), get_attribute_default_value(), get_attribute_dimension(), get_attribute_handle_typed(), get_attribute_name(), guarantee_at_least_attributes(), guarantee_more_attributes(), has_attribute(), operator=(), operator==(), register_attribute_typed(), request_simplex_indices(), reserve_attributes(), reserve_attributes_to_fit(), reserve_more_attributes(), serialize(), set_capacities(), set_capacities_from_flags(), and wmtk::multimesh::MultiMeshManager::update_child_handles().
|
private |
Definition at line 868 of file Mesh.hpp.
Referenced by builtin_attributes(), child_hashes(), Mesh(), and operator=().
|
private |
0x1 == true = simplex is active (simplex exists) all flag default to 0
Definition at line 864 of file Mesh.hpp.
Referenced by builtin_attributes(), child_hashes(), get_const_flag_accessor(), get_flag_accessor(), Mesh(), operator=(), and set_capacities_from_flags().
|
protected |
Definition at line 846 of file Mesh.hpp.
Referenced by wmtk::EdgeMesh::initialize(), wmtk::TriMesh::initialize(), wmtk::TetMesh::initialize(), is_free(), and operator=().
|
protected |
Definition at line 841 of file Mesh.hpp.
Referenced by wmtk::multimesh::MultiMeshManager::absolute_id(), absolute_multi_mesh_id(), builtin_attributes(), can_map(), wmtk::multimesh::utils::MapValidator::check_child_map_attributes_valid(), wmtk::multimesh::utils::MapValidator::check_child_switch_homomorphism(), wmtk::multimesh::utils::MapValidator::check_parent_map_attribute_valid(), child_hashables(), deregister_child_mesh(), wmtk::multimesh::MultiMeshManager::deregister_child_mesh(), wmtk::multimesh::MultiMeshManager::get_child_mesh(), get_child_meshes(), wmtk::multimesh::MultiMeshManager::get_map_accessors(), wmtk::multimesh::MultiMeshManager::get_map_const_accessors(), wmtk::multimesh::MultiMeshManager::get_mesh(), get_multi_mesh_child_mesh(), get_multi_mesh_mesh(), get_multi_mesh_root(), wmtk::multimesh::MultiMeshManager::get_root_mesh(), has_child_mesh(), has_child_mesh_in_dimension(), wmtk::multimesh::MultiMeshManager::is_child(), is_multi_mesh_root(), lub_map(), wmtk::multimesh::MultiMeshManager::lub_map_tuples(), lub_map_tuples(), map(), wmtk::multimesh::MultiMeshManager::map_down_relative_tuples(), map_to_child(), map_to_child_tuples(), wmtk::multimesh::MultiMeshManager::map_to_child_tuples(), map_to_parent(), map_to_parent_tuple(), map_to_root(), map_to_root_tuple(), wmtk::multimesh::MultiMeshManager::map_tuple_to_parent_tuple(), wmtk::multimesh::MultiMeshManager::map_tuple_to_root_tuple(), map_tuples(), wmtk::multimesh::MultiMeshManager::map_up_to_tuples(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::operator()(), operator=(), register_child_mesh(), wmtk::multimesh::MultiMeshManager::register_child_mesh(), wmtk::multimesh::MultiMeshManager::relative_id(), serialize(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_all_hashes(), update_child_handles(), wmtk::multimesh::MultiMeshManager::update_child_handles(), wmtk::operations::utils::UpdateEdgeOperationMultiMeshMapFunctor::update_ear_replacement(), and ~Mesh().
|
protected |
Definition at line 843 of file Mesh.hpp.
Referenced by operator=(), and top_cell_dimension().