Dune Core Modules (2.5.0)

intersectioniterator.hh
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=4 sw=2 sts=2:
3#ifndef DUNE_GEOGRID_INTERSECTIONITERATOR_HH
4#define DUNE_GEOGRID_INTERSECTIONITERATOR_HH
5
6#include <dune/grid/geometrygrid/intersection.hh>
7
8namespace Dune
9{
10
11 namespace GeoGrid
12 {
13
14 // IntersectionIterator
15 // --------------------
16
17 template< class Grid, class HostIntersectionIterator >
18 class IntersectionIterator
19 {
20 typedef typename std::remove_const< Grid >::type::Traits Traits;
21
22 typedef GeoGrid::Intersection< Grid, typename HostIntersectionIterator::Intersection > IntersectionImpl;
23
24 typedef typename Traits::template Codim< 0 >::Geometry ElementGeometry;
25 typedef typename Traits::template Codim< 0 >::GeometryImpl ElementGeometryImpl;
26
27 public:
29
30 IntersectionIterator()
31 {}
32
33 template< class Entity >
34 IntersectionIterator ( const Entity &inside,
35 const HostIntersectionIterator &hostIterator )
36 : hostIterator_( hostIterator )
37 , insideGeo_( Grid::getRealImplementation( inside.geometry() ) )
38 {}
39
40 IntersectionIterator ( const IntersectionIterator &other )
41 : hostIterator_( other.hostIterator_ )
42 , insideGeo_( other.insideGeo_ )
43 {}
44
45 IntersectionIterator ( IntersectionIterator&& other )
46 : hostIterator_( std::move( other.hostIterator_ ) )
47 , insideGeo_( std::move( other.insideGeo_ ) )
48 {}
49
50 IntersectionIterator &operator= ( const IntersectionIterator &other )
51 {
52 hostIterator_ = other.hostIterator_;
53 insideGeo_ = other.insideGeo_;
54 return *this;
55 }
56
57 IntersectionIterator &operator= ( IntersectionIterator&& other )
58 {
59 hostIterator_ = std::move( other.hostIterator_ );
60 insideGeo_ = std::move( other.insideGeo_ );
61 return *this;
62 }
63
64 bool equals ( const IntersectionIterator &other ) const
65 {
66 return (hostIterator_ == other.hostIterator_);
67 }
68
69 void increment ()
70 {
71 ++hostIterator_;
72 }
73
74 Intersection dereference () const
75 {
76 return IntersectionImpl( *hostIterator_, insideGeo_ );
77 }
78
79 private:
80
81 HostIntersectionIterator hostIterator_;
82 ElementGeometryImpl insideGeo_;
83
84 };
85
86 } // namespace GeoGrid
87
88} // namespace Dune
89
90#endif // #ifndef DUNE_GEOGRID_INTERSECTIONITERATOR_HH
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: intersection.hh:162
constexpr auto equals(T1 &&t1, T2 &&t2)
Equality comparison.
Definition: hybridutilities.hh:441
Dune namespace.
Definition: alignment.hh:11
STL namespace.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 23, 23:29, 2024)