Wildmeshing Toolkit
wmtk::PointMesh Class Reference

#include <PointMesh.hpp>

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

Public Member Functions

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

Protected Member Functions

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

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

- Static Protected Member Functions inherited from wmtk::Mesh
template<typename T , typename MeshType >
static auto & get_index_access (attribute::Accessor< T, MeshType > &attr)
 
template<typename T , typename MeshType >
static auto & get_index_access (const attribute::Accessor< T, MeshType > &attr)
 
- Protected Attributes inherited from wmtk::Mesh
attribute::AttributeManager m_attribute_manager
 
multimesh::MultiMeshManager m_multi_mesh_manager
 
int64_t m_top_cell_dimension = -1
 
bool m_is_free = false
 

Detailed Description

Definition at line 11 of file PointMesh.hpp.

Constructor & Destructor Documentation

◆ PointMesh() [1/4]

wmtk::PointMesh::PointMesh ( )

Definition at line 10 of file PointMesh.cpp.

◆ ~PointMesh()

wmtk::PointMesh::~PointMesh ( )
overridedefault

◆ PointMesh() [2/4]

wmtk::PointMesh::PointMesh ( int64_t  size)

Definition at line 15 of file PointMesh.cpp.

References initialize().

Here is the call graph for this function:

◆ PointMesh() [3/4]

wmtk::PointMesh::PointMesh ( const PointMesh o)
delete

◆ PointMesh() [4/4]

wmtk::PointMesh::PointMesh ( PointMesh &&  o)
default

Member Function Documentation

◆ connectivity_attributes()

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

Returns a vector of vectors of attribute handles.

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

Implements wmtk::Mesh.

Definition at line 77 of file PointMesh.cpp.

◆ id()

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

◆ initialize()

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().

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

◆ is_boundary() [1/3]

bool wmtk::Mesh::is_boundary

check if a simplex lies on a boundary or not

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

Definition at line 424 of file Mesh.cpp.

◆ is_boundary() [2/3]

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

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

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

Implements wmtk::Mesh.

Definition at line 30 of file PointMesh.cpp.

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

Here is the call graph for this function:

◆ is_boundary() [3/3]

virtual bool wmtk::Mesh::is_boundary

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

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

◆ is_boundary_vertex()

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

Definition at line 45 of file PointMesh.cpp.

Referenced by is_boundary().

Here is the caller graph for this function:

◆ is_ccw()

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

TODO this needs dimension?

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

Implements wmtk::Mesh.

Definition at line 25 of file PointMesh.cpp.

◆ is_connectivity_valid()

bool wmtk::PointMesh::is_connectivity_valid ( ) const
inlineoverridevirtual

Implements wmtk::Mesh.

Definition at line 40 of file PointMesh.hpp.

◆ is_valid()

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

check validity of tuple including its hash

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

Reimplemented from wmtk::Mesh.

Definition at line 62 of file PointMesh.cpp.

References wmtk::Mesh::is_valid().

Here is the call graph for this function:

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ orient_vertices()

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

Implements wmtk::Mesh.

Definition at line 84 of file PointMesh.cpp.

◆ switch_tuple()

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

switch the orientation of the Tuple of the given dimension

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

Implements wmtk::Mesh.

Definition at line 21 of file PointMesh.cpp.

◆ tuple_from_id()

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

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

Parameters
gid
Returns
Tuple

Implements wmtk::Mesh.

Definition at line 71 of file PointMesh.cpp.

References wmtk::Vertex, and vertex_tuple_from_id().

Here is the call graph for this function:

◆ vertex_tuple_from_id()

Tuple wmtk::PointMesh::vertex_tuple_from_id ( int64_t  id) const
private

Definition at line 4 of file PointMesh.cpp.

Referenced by tuple_from_id().

Here is the caller graph for this function:

Friends And Related Function Documentation

◆ attribute::Accessor

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

Definition at line 19 of file PointMesh.hpp.

◆ MeshCRTP< PointMesh >

friend class MeshCRTP< PointMesh >
friend

Definition at line 14 of file PointMesh.hpp.


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