21 #ifndef bempp_entity_hpp
22 #define bempp_entity_hpp
24 #include "../common/common.hpp"
28 #include <boost/utility/enable_if.hpp>
29 #include <dune/common/static_assert.hh>
30 #include <dune/grid/common/geometry.hh>
39 template<
int codim>
class EntityPointer;
40 template<
int codim>
class EntityIterator;
59 virtual size_t level()
const = 0;
69 virtual const Geometry&
geometry()
const = 0;
97 virtual size_t level()
const = 0;
107 virtual const Geometry&
geometry()
const = 0;
122 template<
int codimSub>
size_t subEntityCount()
const {
131 template<
int codimSub>
132 std::auto_ptr<EntityIterator<codimSub> > subEntityIterator()
const {
133 throw std::logic_error(
"Entity::subEntityIterator(): invalid entity codimension");
141 virtual std::auto_ptr<EntityPointer<0> > father()
const = 0;
146 virtual bool hasFather()
const = 0;
149 virtual bool isLeaf()
const = 0;
155 virtual bool isRegular()
const = 0;
163 virtual std::auto_ptr<EntityIterator<0> > sonIterator(
int maxlevel)
const = 0;
167 virtual bool isNew()
const = 0;
174 virtual bool mightVanish()
const = 0;
177 virtual int domain()
const = 0;
190 virtual std::auto_ptr<EntityIterator<1> > subEntityCodim1Iterator()
const = 0;
192 virtual std::auto_ptr<EntityIterator<2> > subEntityCodim2Iterator()
const = 0;
194 virtual std::auto_ptr<EntityIterator<3> > subEntityCodim3Iterator()
const = 0;
197 virtual size_t subEntityCodim1Count()
const = 0;
199 virtual size_t subEntityCodim2Count()
const = 0;
201 virtual size_t subEntityCodim3Count()
const = 0;
208 #include "entity_iterator.hpp"
216 return subEntityCodim1Iterator();
221 return subEntityCodim2Iterator();
226 return subEntityCodim3Iterator();
232 return subEntityCodim1Count();
237 return subEntityCodim2Count();
242 return subEntityCodim3Count();
size_t subEntityCount() const
Number of subentities of codimension codimSub.
Definition: entity.hpp:120
Abstract wrapper of an entity of codimension codim.
Definition: entity.hpp:46
Dune::GeometryType GeometryType
Identifier of geometry type.
Definition: geometry_type.hpp:34
virtual GeometryType type() const =0
Type of the reference element.
virtual ~Entity()
Destructor.
Definition: entity.hpp:85
virtual ~Entity()
Destructor.
Definition: entity.hpp:50
virtual size_t level() const =0
Entity level.
std::auto_ptr< EntityIterator< codimSub > > subEntityIterator() const
Iterator over subentities of codimension codimSub.
Definition: entity.hpp:130
virtual const Geometry & geometry() const =0
Reference to the geometry of this entity.