3#ifndef DUNE_GRID_MMESHINCIDENTITERATOR_HH
4#define DUNE_GRID_MMESHINCIDENTITERATOR_HH
15template <
class Gr
idImp,
int dim>
24template <
class Gr
idImp,
int dim>
34template <
class Gr
idImp,
int dim>
44template <
class Gr
idImp,
int dim>
50 Grid::dimension,
Grid,
58template <
class Gr
idImp>
62 typedef typename GridImp::template HostGridEntity<GridImp::dimension>
64 typedef typename GridImp::template HostGridEntity<0> HostGridEntity;
70 enum { codimension = 0 };
75 const HostGridVertex& hostEntity)
76 : mMesh_(mMesh), i_(0) {
77 auto circulator = mMesh->getHostGrid().incident_faces(hostEntity);
78 for (
std::size_t i = 0; i < CGAL::circulator_size(circulator);
80 if (!mMesh->getHostGrid().is_infinite(circulator))
81 elementContainer_.push_back(circulator);
89 const HostGridVertex& hostEntity,
91 : mMesh_(mMesh), i_(0) {
92 auto circulator = mMesh->getHostGrid().incident_faces(hostEntity);
93 for (
std::size_t i = 0; i < CGAL::circulator_size(circulator);
95 if (!mMesh->getHostGrid().is_infinite(circulator)) ++i_;
106 return i_ == iter.i_;
110 const GridImp* mMesh_;
111 ElementContainer elementContainer_;
116template <
class Gr
idImp>
120 typedef typename GridImp::template HostGridEntity<GridImp::dimension>
122 typedef typename GridImp::template HostGridEntity<0> HostGridEntity;
125 using ElementOutput =
typename GridImp::ElementOutput;
131 enum { codimension = 0 };
136 const HostGridVertex& hostEntity)
137 : mMesh_(mMesh), i_(0) {
138 ElementOutput elements;
139 mMesh_->getHostGrid().finite_incident_cells(hostEntity,
142 typename ElementOutput::iterator fit;
143 for (fit = elements.begin(); fit != elements.end(); fit++)
144 elementContainer_.push_back(*fit);
152 const HostGridVertex& hostEntity,
154 : mMesh_(mMesh), i_(0) {
155 ElementOutput elements;
156 mMesh_->getHostGrid().finite_incident_cells(hostEntity,
159 typename ElementOutput::iterator fit;
160 for (fit = elements.begin(); fit != elements.end(); fit++) ++i_;
171 return i_ == iter.i_;
175 const GridImp* mMesh_;
176 ElementContainer elementContainer_;
181template <
class Gr
idImp>
185 typedef typename GridImp::template HostGridEntity<GridImp::dimension - 1>
187 typedef typename GridImp::template HostGridEntity<0> HostGridEntity;
190 using Circulator =
typename GridImp::HostGridType::Cell_circulator;
194 enum { codimension = 0 };
199 const HostGridEdge& hostEntity)
200 : mMesh_(mMesh), i_(0) {
201 Circulator circulator = mMesh_->getHostGrid().incident_cells(hostEntity);
202 for (
std::size_t i = 0; i < CGAL::circulator_size(circulator);
204 if (!mMesh->getHostGrid().is_infinite(circulator))
205 elementContainer_.push_back(circulator);
213 const HostGridEdge& hostEntity,
215 : mMesh_(mMesh), i_(0) {
216 Circulator circulator = mMesh_->getHostGrid().incident_cells(hostEntity);
217 for (
std::size_t i = 0; i < CGAL::circulator_size(circulator);
219 if (!mMesh->getHostGrid().is_infinite(circulator)) ++i_;
230 return i_ == iter.i_;
234 const GridImp* mMesh_;
235 ElementContainer elementContainer_;
244template <
class Gr
idImp>
248 typedef typename GridImp::template HostGridEntity<GridImp::dimension>
250 typedef typename GridImp::template HostGridEntity<1> HostGridEntity;
253 using Circulator =
typename GridImp::HostGridType::Edge_circulator;
257 enum { codimension = 1 };
262 const HostGridVertex& hostEntity)
263 : mMesh_(mMesh), i_(0) {
264 Circulator circulator = mMesh->getHostGrid().incident_edges(hostEntity);
265 for (
std::size_t i = 0; i < CGAL::circulator_size(circulator);
267 if (!mMesh->getHostGrid().is_infinite(circulator))
268 elementContainer_.push_back(*circulator);
276 const HostGridVertex& hostEntity,
278 : mMesh_(mMesh), i_(0) {
279 Circulator circulator = mMesh->getHostGrid().incident_edges(hostEntity);
280 for (
std::size_t i = 0; i < CGAL::circulator_size(circulator);
282 if (!mMesh->getHostGrid().is_infinite(circulator)) ++i_;
293 return i_ == iter.i_;
297 const GridImp* mMesh_;
298 ElementContainer elementContainer_;
303template <
class Gr
idImp>
307 typedef typename GridImp::template HostGridEntity<GridImp::dimension>
309 typedef typename GridImp::template HostGridEntity<1> HostGridEntity;
312 using ElementOutput =
typename GridImp::BoundaryEdgesOutput;
318 enum { codimension = 1 };
323 const HostGridVertex& hostEntity)
324 : mMesh_(mMesh), i_(0) {
325 ElementOutput elements;
326 mMesh_->getHostGrid().finite_incident_facets(hostEntity,
329 typename ElementOutput::iterator fit;
330 for (fit = elements.begin(); fit != elements.end(); fit++)
331 elementContainer_.push_back(*fit);
339 const HostGridVertex& hostEntity,
341 : mMesh_(mMesh), i_(0) {
342 ElementOutput elements;
343 mMesh_->getHostGrid().finite_incident_facets(hostEntity,
346 typename ElementOutput::iterator fit;
347 for (fit = elements.begin(); fit != elements.end(); fit++) ++i_;
358 return i_ == iter.i_;
362 const GridImp* mMesh_;
363 ElementContainer elementContainer_;
372template <
class Gr
idImp>
376 typedef typename GridImp::VertexHandle HostGridVertex;
379 using Circulator =
typename GridImp::HostGridType::Vertex_circulator;
383 enum { codimension = GridImp::dimension };
388 const HostGridVertex& hostEntity,
389 bool includeInfinite)
390 : mMesh_(mMesh), i_(0) {
391 Circulator circulator = mMesh->getHostGrid().incident_vertices(hostEntity);
392 for (
std::size_t i = 0; i < CGAL::circulator_size(circulator);
394 if (includeInfinite || !mMesh->getHostGrid().is_infinite(circulator))
395 elementContainer_.push_back(circulator);
403 const HostGridVertex& hostEntity,
404 bool includeInfinite,
bool endDummy)
405 : mMesh_(mMesh), i_(0) {
406 Circulator circulator = mMesh->getHostGrid().incident_vertices(hostEntity);
407 for (
std::size_t i = 0; i < CGAL::circulator_size(circulator);
409 if (includeInfinite || !mMesh->getHostGrid().is_infinite(circulator))
421 return i_ == iter.i_;
425 const GridImp* mMesh_;
426 ElementContainer elementContainer_;
431template <
class Gr
idImp>
435 typedef typename GridImp::VertexHandle HostGridVertex;
444 enum { codimension = GridImp::dimension };
449 const HostGridVertex& hostEntity,
450 bool includeInfinite)
451 : mMesh_(mMesh), i_(0) {
453 mMesh_->getHostGrid().incident_vertices(hostEntity,
456 typename ElementOutput::iterator fit;
457 for (fit = elements.begin(); fit != elements.end(); fit++)
458 if (includeInfinite || !mMesh->getHostGrid().is_infinite(*fit))
459 elementContainer_.push_back(*fit);
467 const HostGridVertex& hostEntity,
468 bool includeInfinite,
bool endDummy)
469 : mMesh_(mMesh), i_(0) {
471 mMesh_->getHostGrid().incident_vertices(hostEntity,
474 typename ElementOutput::iterator fit;
475 for (fit = elements.begin(); fit != elements.end(); fit++)
476 if (includeInfinite || !mMesh->getHostGrid().is_infinite(*fit)) ++i_;
487 return i_ == iter.i_;
491 const GridImp* mMesh_;
492 ElementContainer elementContainer_;
Forward declaration.
Definition grid/incidentiterator.hh:16
Forward declaration.
Definition grid/incidentiterator.hh:25
Forward declaration.
Definition grid/incidentiterator.hh:35
Forward declaration.
Definition grid/incidentiterator.hh:45
MMeshIncidentIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity, bool endDummy)
Constructor which creates the end iterator.
Definition grid/incidentiterator.hh:88
MMeshIncidentIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity)
Definition grid/incidentiterator.hh:74
bool equals(const MMeshIncidentIteratorImp &iter) const
equality
Definition grid/incidentiterator.hh:105
GridImp::template Codim< 0 >::Entity Entity
Definition grid/incidentiterator.hh:72
void increment()
prefix increment
Definition grid/incidentiterator.hh:99
Entity dereference() const
dereferencing
Definition grid/incidentiterator.hh:102
bool equals(const MMeshIncidentIteratorImp &iter) const
equality
Definition grid/incidentiterator.hh:170
GridImp::template Codim< 0 >::Entity Entity
Definition grid/incidentiterator.hh:133
MMeshIncidentIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity, bool endDummy)
Constructor which creates the end iterator.
Definition grid/incidentiterator.hh:151
void increment()
prefix increment
Definition grid/incidentiterator.hh:164
Entity dereference() const
dereferencing
Definition grid/incidentiterator.hh:167
MMeshIncidentIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity)
Definition grid/incidentiterator.hh:135
bool equals(const MMeshEdgeIncidentIteratorImp &iter) const
equality
Definition grid/incidentiterator.hh:229
MMeshEdgeIncidentIteratorImp(const GridImp *mMesh, const HostGridEdge &hostEntity, bool endDummy)
Constructor which creates the end iterator.
Definition grid/incidentiterator.hh:212
MMeshEdgeIncidentIteratorImp(const GridImp *mMesh, const HostGridEdge &hostEntity)
Definition grid/incidentiterator.hh:198
GridImp::template Codim< 0 >::Entity Entity
Definition grid/incidentiterator.hh:196
void increment()
prefix increment
Definition grid/incidentiterator.hh:223
Entity dereference() const
dereferencing
Definition grid/incidentiterator.hh:226
void increment()
prefix increment
Definition grid/incidentiterator.hh:286
Entity dereference() const
dereferencing
Definition grid/incidentiterator.hh:289
MMeshIncidentFacetsIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity, bool endDummy)
Constructor which creates the end iterator.
Definition grid/incidentiterator.hh:275
MMeshIncidentFacetsIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity)
Definition grid/incidentiterator.hh:261
bool equals(const MMeshIncidentFacetsIteratorImp &iter) const
equality
Definition grid/incidentiterator.hh:292
GridImp::template Codim< 1 >::Entity Entity
Definition grid/incidentiterator.hh:259
MMeshIncidentFacetsIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity, bool endDummy)
Constructor which creates the end iterator.
Definition grid/incidentiterator.hh:338
Entity dereference() const
dereferencing
Definition grid/incidentiterator.hh:354
MMeshIncidentFacetsIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity)
Definition grid/incidentiterator.hh:322
GridImp::template Codim< 1 >::Entity Entity
Definition grid/incidentiterator.hh:320
bool equals(const MMeshIncidentFacetsIteratorImp &iter) const
equality
Definition grid/incidentiterator.hh:357
void increment()
prefix increment
Definition grid/incidentiterator.hh:351
MMeshIncidentVerticesIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity, bool includeInfinite)
Definition grid/incidentiterator.hh:387
Entity dereference() const
dereferencing
Definition grid/incidentiterator.hh:417
MMeshIncidentVerticesIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity, bool includeInfinite, bool endDummy)
Constructor which creates the end iterator.
Definition grid/incidentiterator.hh:402
GridImp::template Codim< codimension >::Entity Entity
Definition grid/incidentiterator.hh:385
bool equals(const MMeshIncidentVerticesIteratorImp &iter) const
equality
Definition grid/incidentiterator.hh:420
void increment()
prefix increment
Definition grid/incidentiterator.hh:414
GridImp::template Codim< codimension >::Entity Entity
Definition grid/incidentiterator.hh:446
MMeshIncidentVerticesIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity, bool includeInfinite, bool endDummy)
Constructor which creates the end iterator.
Definition grid/incidentiterator.hh:466
Entity dereference() const
dereferencing
Definition grid/incidentiterator.hh:483
bool equals(const MMeshIncidentVerticesIteratorImp &iter) const
equality
Definition grid/incidentiterator.hh:486
MMeshIncidentVerticesIteratorImp(const GridImp *mMesh, const HostGridVertex &hostEntity, bool includeInfinite)
Definition grid/incidentiterator.hh:448
void increment()
prefix increment
Definition grid/incidentiterator.hh:480
T back_inserter(T... args)