21 #ifndef bempp_concrete_id_set_hpp
22 #define bempp_concrete_id_set_hpp
24 #include "../common/common.hpp"
27 #include "concrete_entity.hpp"
41 template<
typename DuneGr
id,
typename DuneIdSet>
45 const DuneIdSet* m_dune_id_set;
53 m_dune_id_set(dune_id_set) {
58 return *m_dune_id_set;
62 return entityCodimNId(e);
65 return entityCodimNId(e);
68 return entityCodimNId(e);
71 return entityCodimNId(e);
77 if (codimSub > DuneGrid::dimension)
78 throw std::invalid_argument(
"IndexSet::subEntityIndex(): codimSub exceeds grid dimension");
80 typedef typename DuneGrid::template Codim<0>::Entity DuneEntity;
82 const ConcEntity& ce =
dynamic_cast<const ConcEntity&
>(e);
83 return m_dune_id_set->subId(ce.duneEntity(), i, codimSub);
98 typename boost::disable_if_c<codim <= DuneGrid::dimension, IdType>::type
100 throw std::logic_error(
"IdSet::entityId(): invalid entity codimension");
104 typename boost::enable_if_c<codim <= DuneGrid::dimension, IdType>::type
105 entityCodimNId(
const Entity<codim>& e)
const {
106 typedef typename DuneGrid::template Codim<codim>::Entity DuneEntity;
107 typedef ConcreteEntity<codim, DuneEntity> ConcEntity;
108 const ConcEntity& ce =
dynamic_cast<const ConcEntity&
>(e);
109 return m_dune_id_set->id(ce.duneEntity());
ConcreteIdSet(const DuneIdSet *dune_id_set)
Constructor.
Definition: concrete_id_set.hpp:52
Abstract wrapper of an entity of codimension codim.
Definition: entity.hpp:46
virtual IdType subEntityId(const Entity< 0 > &e, size_t i, int codimSub) const
Id of i'th subentity of codimension codimSub of entity e of codimension 0.
Definition: concrete_id_set.hpp:74
Wrapper of a Dune entity of type DuneEntity and codimension 0.
Definition: concrete_entity_decl.hpp:117
Abstract wrapper of an id set.
Definition: id_set.hpp:37
virtual IdType entityId(const Entity< 2 > &e) const
Id of the entity e of codimension 2.
Definition: concrete_id_set.hpp:67
const DuneIdSet & duneIdSet() const
Read-only access to the underlying Dune id set.
Definition: concrete_id_set.hpp:57
size_t IdType
Id type.
Definition: id_set.hpp:48
virtual IdType entityId(const Entity< 1 > &e) const
Id of the entity e of codimension 1.
Definition: concrete_id_set.hpp:64
virtual IdType entityId(const Entity< 3 > &e) const
Id of the entity e of codimension 3.
Definition: concrete_id_set.hpp:70
Wrapper of a Dune id set of type DuneIdSet providing access to the entities of a Dune grid of type Du...
Definition: concrete_id_set.hpp:42
Abstract wrapper of an entity of codimension 0.
Definition: entity.hpp:81
virtual IdType entityId(const Entity< 0 > &e) const
Id of the entity e of codimension 0.
Definition: concrete_id_set.hpp:61