dune-grid 3.0-git
albertagrid/intersection.hh
Go to the documentation of this file.
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_ALBERTA_INTERSECTION_HH
4#define DUNE_ALBERTA_INTERSECTION_HH
5
7
11
12#if HAVE_ALBERTA
13
14namespace Dune
15{
16
17 // External Forward Declarations
18 // -----------------------------
19
20 template< int codim, int dim, class GridImp >
21 class AlbertaGridEntity;
22
23
24
25 // AlbertaGridIntersectionBase
26 // ---------------------------
27
28 template< class Grid >
30 {
32
33 public:
34 typedef typename Grid::ctype ctype;
35
36 static const int dimension = Grid::dimension;
38
39 typedef FieldVector< ctype, dimensionworld > NormalVector;
40 typedef FieldVector< ctype, dimension-1 > LocalCoordType;
41
42 typedef typename Grid::template Codim< 0 >::Entity Entity;
43
44 typedef typename Grid::template Codim< 1 >::Geometry Geometry;
45 typedef typename Grid::template Codim< 1 >::LocalGeometry LocalGeometry;
46
48
49 protected:
51
52 typedef typename Grid::Traits::template Codim< 1 >::GeometryImpl GeometryImpl;
53 typedef typename Grid::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl;
54
55 struct GlobalCoordReader;
56 struct LocalCoordReader;
57
58 public:
59
61
62 AlbertaGridIntersectionBase ( const EntityImp &entity, const int oppVertex );
63
64 Entity inside () const;
65
66 bool boundary () const;
67 int boundaryId () const;
68 size_t boundarySegmentIndex () const;
69
70 int indexInInside () const;
71
72 GeometryType type () const;
73
77
79 NormalVector outerNormal ( const LocalCoordType &local ) const;
80 NormalVector unitOuterNormal ( const LocalCoordType &local ) const;
81
82
84
85
86 const Grid &grid () const;
87 const ElementInfo &elementInfo () const;
88
89 protected:
90 const Grid *grid_;
93 };
94
95
96
97 // AlbertaGridLeafIntersection
98 // ---------------------------
99
100 template< class GridImp >
102 : public AlbertaGridIntersectionBase< GridImp >
103 {
106
107 friend class AlbertaGridEntity< 0, GridImp::dimension, GridImp >;
108
109 public:
111
112 static const int dimension = Base::dimension;
114
117
118 typedef typename Base::Entity Entity;
119
120 typedef typename Base::Geometry Geometry;
122
124
125 protected:
126 typedef typename Base::EntityImp EntityImp;
127
130
131 typedef typename Base::GlobalCoordReader GlobalCoordReader;
132 typedef typename Base::LocalCoordReader LocalCoordReader;
133
134 public:
135 using Base::grid;
136 using Base::elementInfo;
137
138 using Base::inside;
139
142
143 AlbertaGridLeafIntersection ( const EntityImp &entity, const int n );
144
145 AlbertaGridLeafIntersection ( const This &other );
146
147 bool equals( const AlbertaGridLeafIntersection& other ) const
148 {
149 return (*this) == other;
150 }
151
152 This &operator= ( const This &other );
153
154 bool operator== ( const This &other ) const;
155
156 void next ();
157
158 typename GridImp::template Codim< 0 >::Entity
159 outside () const;
160
161 bool neighbor () const;
162
163 bool conforming () const;
164
167
168 Geometry geometry () const;
169
170 int indexInOutside () const;
171
172
173 int twistInInside () const;
174 int twistInOutside () const;
175
176 protected:
177 using Base::oppVertex_;
178
179 private:
180 mutable ElementInfo neighborInfo_;
181 };
182
183} // namespace Dune
184
185#endif // #if HAVE_ALBERTA
186
187#endif // #ifndef DUNE_ALBERTA_INTERSECTION_HH
provides a wrapper for ALBERTA's el_info structure
Include standard header files.
Definition agrid.hh:60
Definition albertagrid/intersection.hh:103
LocalGeometry geometryInOutside() const
Definition intersection.cc:440
GridImp::template Codim< 0 >::Entity outside() const
Definition intersection.cc:397
int twistInInside() const
Definition intersection.cc:475
Base::EntityImp EntityImp
Definition albertagrid/intersection.hh:126
Base::NormalVector NormalVector
Definition albertagrid/intersection.hh:115
void next()
Definition intersection.cc:388
bool operator==(const This &other) const
Definition intersection.cc:382
Base::GeometryImpl GeometryImpl
Definition albertagrid/intersection.hh:128
int indexInOutside() const
Definition intersection.cc:464
LocalGeometry geometryInInside() const
Definition intersection.cc:429
Base::GlobalCoordReader GlobalCoordReader
Definition albertagrid/intersection.hh:131
Base::Geometry Geometry
Definition albertagrid/intersection.hh:120
Base::LocalCoordReader LocalCoordReader
Definition albertagrid/intersection.hh:132
This & operator=(const This &other)
Definition intersection.cc:372
Geometry geometry() const
Definition intersection.cc:455
Base::ElementInfo ElementInfo
Definition albertagrid/intersection.hh:123
static const int dimensionworld
Definition albertagrid/intersection.hh:113
bool neighbor() const
Definition intersection.cc:420
Base::LocalCoordType LocalCoordType
Definition albertagrid/intersection.hh:116
bool equals(const AlbertaGridLeafIntersection &other) const
Definition albertagrid/intersection.hh:147
Base::Entity Entity
Definition albertagrid/intersection.hh:118
static const int dimension
Definition albertagrid/intersection.hh:112
bool conforming() const
Definition intersection.cc:414
Base::LocalGeometryImpl LocalGeometryImpl
Definition albertagrid/intersection.hh:129
int twistInOutside() const
Definition intersection.cc:483
Base::LocalGeometry LocalGeometry
Definition albertagrid/intersection.hh:121
AlbertaGridLeafIntersection()
Definition albertagrid/intersection.hh:140
Definition albertagrid/entity.hh:47
Definition albertagrid/intersection.hh:30
NormalVector centerOuterNormal() const
Definition intersection.cc:170
AlbertaGridEntity< 0, dimension, Grid > EntityImp
Definition albertagrid/intersection.hh:50
const ElementInfo & elementInfo() const
Definition intersection.cc:227
FieldVector< ctype, dimensionworld > NormalVector
Definition albertagrid/intersection.hh:39
NormalVector centerIntegrationOuterNormal() const
Definition intersection.cc:89
Grid::ctype ctype
Definition albertagrid/intersection.hh:34
NormalVector integrationOuterNormal(const LocalCoordType &local) const
Definition intersection.cc:188
ElementInfo elementInfo_
Definition albertagrid/intersection.hh:91
FieldVector< ctype, dimension-1 > LocalCoordType
Definition albertagrid/intersection.hh:40
NormalVector centerUnitOuterNormal() const
Definition intersection.cc:178
static const int dimensionworld
Definition albertagrid/intersection.hh:37
Grid::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl
Definition albertagrid/intersection.hh:53
int indexInInside() const
Definition intersection.cc:72
Grid::template Codim< 1 >::LocalGeometry LocalGeometry
Definition albertagrid/intersection.hh:45
Entity inside() const
Definition intersection.cc:33
NormalVector unitOuterNormal(const LocalCoordType &local) const
Definition intersection.cc:204
const Grid & grid() const
Definition intersection.cc:219
int oppVertex_
Definition albertagrid/intersection.hh:92
static const int dimension
Definition albertagrid/intersection.hh:36
bool boundary() const
Definition intersection.cc:41
Grid::Traits::template Codim< 1 >::GeometryImpl GeometryImpl
Definition albertagrid/intersection.hh:52
AlbertaGridIntersectionBase()
Definition intersection.cc:16
size_t boundarySegmentIndex() const
Definition intersection.cc:62
GeometryType type() const
Definition intersection.cc:80
AlbertaTransformation transformation() const
Definition intersection.cc:212
NormalVector outerNormal(const LocalCoordType &local) const
Definition intersection.cc:196
int boundaryId() const
Definition intersection.cc:48
Grid::template Codim< 1 >::Geometry Geometry
Definition albertagrid/intersection.hh:44
Grid::template Codim< 0 >::Entity Entity
Definition albertagrid/intersection.hh:42
const Grid * grid_
Definition albertagrid/intersection.hh:90
Alberta::ElementInfo< dimension > ElementInfo
Definition albertagrid/intersection.hh:47
Definition transformation.hh:16
Wrapper class for geometries.
Definition common/geometry.hh:66
Grid abstract base class.
Definition common/grid.hh:373
@ dimension
The dimension of the grid.
Definition common/grid.hh:387
@ dimensionworld
The dimension of the world the grid lives in.
Definition common/grid.hh:393
ct ctype
Define type used for coordinates in grid module.
Definition common/grid.hh:522