20 #ifndef bempp_grid_view_hpp
21 #define bempp_grid_view_hpp
23 #include "../common/common.hpp"
26 #include "entity_iterator.hpp"
28 #include "../common/armadillo_fwd.hpp"
29 #include <boost/utility/enable_if.hpp>
30 #include <dune/grid/io/file/vtk/vtkwriter.hh>
38 template<
int codim>
class Entity;
39 template<
int codim>
class EntityCache;
42 class ReverseElementMapper;
56 virtual int dim()
const = 0;
100 throw std::logic_error(
"GridView::entityIterator(): invalid entity codimension");
124 arma::Mat<int>& elementCorners,
125 arma::Mat<char>& auxData )
const;
128 arma::Mat<int>& elementCorners,
129 arma::Mat<char>& auxData )
const;
139 arma::Mat<int>& elementCorners,
140 arma::Mat<char>& auxData,
141 std::vector<int>& domainIndices)
const;
144 arma::Mat<int>& elementCorners,
145 arma::Mat<char>& auxData,
146 std::vector<int>& domainIndices)
const;
163 virtual std::auto_ptr<VtkWriter>
vtkWriter(Dune::VTK::DataMode dm=Dune::VTK::conforming)
const = 0;
169 virtual void getRawElementDataDoubleImpl(
170 arma::Mat<double>& vertices,
171 arma::Mat<int>& elementCorners,
172 arma::Mat<char>& auxData,
173 std::vector<int>* domainIndices)
const = 0;
174 virtual void getRawElementDataFloatImpl(
175 arma::Mat<float>& vertices,
176 arma::Mat<int>& elementCorners,
177 arma::Mat<char>& auxData,
178 std::vector<int>* domainIndices)
const = 0;
191 arma::Mat<int>& elementCorners,
192 arma::Mat<char>& auxData)
const
194 getRawElementDataDoubleImpl(vertices, elementCorners, auxData, 0);
198 arma::Mat<int>& elementCorners,
199 arma::Mat<char>& auxData)
const
201 getRawElementDataFloatImpl(vertices, elementCorners, auxData, 0);
205 arma::Mat<int>& elementCorners,
206 arma::Mat<char>& auxData,
207 std::vector<int>& domainIndices)
const
209 getRawElementDataDoubleImpl(vertices, elementCorners, auxData,
214 arma::Mat<int>& elementCorners,
215 arma::Mat<char>& auxData,
216 std::vector<int>& domainIndices)
const
218 getRawElementDataFloatImpl(vertices, elementCorners, auxData,
224 inline std::auto_ptr<EntityIterator<0> > GridView::entityIterator<0>()
const
226 return entityCodim0Iterator();
229 inline std::auto_ptr<EntityIterator<1> > GridView::entityIterator<1>()
const
231 return entityCodim1Iterator();
234 inline std::auto_ptr<EntityIterator<2> > GridView::entityIterator<2>()
const
236 return entityCodim2Iterator();
239 inline std::auto_ptr<EntityIterator<3> > GridView::entityIterator<3>()
const
241 return entityCodim3Iterator() ;
virtual int dimWorld() const =0
Dimension of the space containing the grid.
virtual int dim() const =0
Dimension of the grid.
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 ~GridView()
Definition: grid_view.hpp:52
virtual const Mapper & elementMapper() const =0
The element mapper.
virtual const IndexSet & indexSet() const =0
The index set.
Abstract wrapper of an index set.
Definition: index_set.hpp:36
void getRawElementData(arma::Mat< float > &vertices, arma::Mat< int > &elementCorners, arma::Mat< char > &auxData) const
Get raw data describing the geometry of all codim-0 entities contained in this grid view...
Definition: grid_view.hpp:197
virtual std::auto_ptr< EntityIterator< 2 > > entityCodim2Iterator() const =0
Iterator over entities of codimension 2 contained in this view.
Mapping from codim-0 entity indices to entity pointers.
Definition: reverse_element_mapper.hpp:37
virtual std::auto_ptr< EntityIterator< 0 > > entityCodim0Iterator() const =0
Iterator over entities of codimension 0 contained in this view.
virtual std::auto_ptr< EntityIterator< 3 > > entityCodim3Iterator() const =0
Iterator over entities of codimension 3 contained in this view.
Abstract wrapper of a grid view.
Definition: grid_view.hpp:48
virtual const ReverseElementMapper & reverseElementMapper() const =0
Mapping from codim-0 entity index to entity pointer.
virtual size_t entityCount(int codim) const =0
Number of entities with codimension codim.
virtual std::auto_ptr< EntityIterator< 1 > > entityCodim1Iterator() const =0
Iterator over entities of codimension 1 contained in this view.
std::auto_ptr< EntityIterator< codim > > entityIterator() const
Iterator over entities of codimension codim contained in this view.
Definition: grid_view.hpp:99
Abstract wrapper of an entity of codimension 0.
Definition: entity.hpp:81
Abstract mapper class.
Definition: mapper.hpp:39
virtual std::auto_ptr< VtkWriter > vtkWriter(Dune::VTK::DataMode dm=Dune::VTK::conforming) const =0
Create a VtkWriter for this grid view.
virtual bool containsEntity(const Entity< 0 > &e) const =0
True if the entity e of codimension 0 is contained in this grid view.