LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
Loading...
Searching...
No Matches
lf::mesh::utils::CodimMeshDataSet< T > Class Template Reference

A MeshDataSet that attaches data of type T to every entity of a mesh that has a specified codimension. More...

#include <lf/mesh/utils/codim_mesh_data_set.h>

Inheritance diagram for lf::mesh::utils::CodimMeshDataSet< T >:
lf::mesh::utils::MeshDataSet< T >

Public Types

using size_type = Mesh::size_type
 
using dim_t = base::RefEl::dim_t
 

Public Member Functions

 CodimMeshDataSet (std::shared_ptr< const Mesh > mesh, dim_t codim)
 construct data vector indexed by entities of a particular co-dimension
 
 CodimMeshDataSet (std::shared_ptr< const Mesh > mesh, dim_t codim, T init)
 construct and initialize data vector indexed by entities of a particula co-dimension
 
T & operator() (const Entity &e)
 Get a (modifiable) reference to the data stored with entity e.
 
const T & operator() (const Entity &e) const override
 Get the data stored with entity e.
 
bool DefinedOn (const Entity &e) const override
 Does the dataset store information with this entity?
 
- Public Member Functions inherited from lf::mesh::utils::MeshDataSet< T >
virtual ~MeshDataSet ()=default
 Virtual destructor.
 

Private Attributes

std::shared_ptr< const Meshmesh_
 
boost::container::vector< T > data_
 
dim_t codim_
 

Additional Inherited Members

- Protected Member Functions inherited from lf::mesh::utils::MeshDataSet< T >
 MeshDataSet ()=default
 
 MeshDataSet (const MeshDataSet &)=default
 
 MeshDataSet (MeshDataSet &&) noexcept=default
 
MeshDataSetoperator= (const MeshDataSet &)=default
 
MeshDataSetoperator= (MeshDataSet &&) noexcept=default
 

Detailed Description

template<class T>
class lf::mesh::utils::CodimMeshDataSet< T >

A MeshDataSet that attaches data of type T to every entity of a mesh that has a specified codimension.

Template Parameters
TThe type of data that should be stored with the entities.

Example

// Create a mesh
// Create a MeshDataSet that stores a boolean for every cell
auto mesh_data_set_cells = lf::mesh::utils::CodimMeshDataSet<bool>(mesh_p, 0);
// Create a MeshDataSet that stores a boolean for every edge with default
// value
auto mds_edge = lf::mesh::utils::CodimMeshDataSet<bool>(mesh_p, 1, true);
// set the value associated with a cell to false
auto cell = mesh_p->EntityByIndex(0, 0);
mesh_data_set_cells(*cell) = false;
// check if the data set is defined on an entity
bool b = mesh_data_set_cells.DefinedOn(*cell); // returns true

The MeshDataSet interface class provides more information on how to interact with a MeshDataSet.

To set values for all codimension, see AllCodimMeshDataSet.

See also
MeshDataSet

Definition at line 28 of file codim_mesh_data_set.h.

Member Typedef Documentation

◆ dim_t

template<class T>
using lf::mesh::utils::CodimMeshDataSet< T >::dim_t = base::RefEl::dim_t

Definition at line 31 of file codim_mesh_data_set.h.

◆ size_type

template<class T>
using lf::mesh::utils::CodimMeshDataSet< T >::size_type = Mesh::size_type

Definition at line 30 of file codim_mesh_data_set.h.

Constructor & Destructor Documentation

◆ CodimMeshDataSet() [1/2]

template<class T>
lf::mesh::utils::CodimMeshDataSet< T >::CodimMeshDataSet ( std::shared_ptr< const Mesh > mesh,
dim_t codim )
inline

construct data vector indexed by entities of a particular co-dimension

Parameters
meshpointer to underlying mesh
codimco-dimension of indexing entities for the given mesh
Note
This constructor does not initialize the data that is attached to the entities. They are initialized arbitrarily!

Definition at line 42 of file codim_mesh_data_set.h.

References codim_, data_, mesh_, and lf::mesh::utils::MeshDataSet< T >::MeshDataSet().

◆ CodimMeshDataSet() [2/2]

template<class T>
lf::mesh::utils::CodimMeshDataSet< T >::CodimMeshDataSet ( std::shared_ptr< const Mesh > mesh,
dim_t codim,
T init )
inline

construct and initialize data vector indexed by entities of a particula co-dimension

Parameters
meshpointer to underlying mesh
codimco-dimension of indexing entities for the given mesh
initvalue to be copied into all data elements

Definition at line 55 of file codim_mesh_data_set.h.

References mesh_.

Member Function Documentation

◆ DefinedOn()

template<class T>
bool lf::mesh::utils::CodimMeshDataSet< T >::DefinedOn ( const Entity & e) const
inlinenodiscardoverridevirtual

Does the dataset store information with this entity?

Parameters
eThe entity that should be tested.
Returns
true if this dataset associates information with this entity. Otherwise false.

Implements lf::mesh::utils::MeshDataSet< T >.

Definition at line 78 of file codim_mesh_data_set.h.

References lf::mesh::Entity::Codim(), codim_, and mesh_.

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

◆ operator()() [1/2]

template<class T>
T & lf::mesh::utils::CodimMeshDataSet< T >::operator() ( const Entity & e)
inlinenodiscard

Get a (modifiable) reference to the data stored with entity e.

Parameters
eThe entity whose data should be retrieved/modified
Returns
A reference to the stored data.
Note
The behavior of this method is undefined if DefinedOn(e) == false!

Definition at line 69 of file codim_mesh_data_set.h.

References data_, DefinedOn(), and mesh_.

◆ operator()() [2/2]

template<class T>
const T & lf::mesh::utils::CodimMeshDataSet< T >::operator() ( const Entity & e) const
inlinenodiscardoverridevirtual

Get the data stored with entity e.

Parameters
eThe entity whose data should be retrieved.
Returns
The data stored for this entity.
Note
The behavior of this method is undefined if DefinedOn(e) == false!

Implements lf::mesh::utils::MeshDataSet< T >.

Definition at line 74 of file codim_mesh_data_set.h.

References data_, DefinedOn(), and mesh_.

Member Data Documentation

◆ codim_

template<class T>
dim_t lf::mesh::utils::CodimMeshDataSet< T >::codim_
private

co-dimension

Definition at line 88 of file codim_mesh_data_set.h.

Referenced by CodimMeshDataSet(), and DefinedOn().

◆ data_

template<class T>
boost::container::vector<T> lf::mesh::utils::CodimMeshDataSet< T >::data_
private

data vector

Definition at line 86 of file codim_mesh_data_set.h.

Referenced by CodimMeshDataSet(), operator()(), and operator()().

◆ mesh_

template<class T>
std::shared_ptr<const Mesh> lf::mesh::utils::CodimMeshDataSet< T >::mesh_
private

pointer to underlying mesh. Owned by the data set !

Definition at line 84 of file codim_mesh_data_set.h.

Referenced by CodimMeshDataSet(), CodimMeshDataSet(), DefinedOn(), operator()(), and operator()().


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