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 
14 namespace 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 
78  NormalVector integrationOuterNormal ( const LocalCoordType &local ) const;
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 
123  typedef typename Base::ElementInfo ElementInfo;
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 
141  {}
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
Dune::AlbertaGridLeafIntersection::operator=
This & operator=(const This &other)
Definition: intersection.cc:372
elementinfo.hh
provides a wrapper for ALBERTA's el_info structure
Dune::AlbertaGridLeafIntersection::ElementInfo
Base::ElementInfo ElementInfo
Definition: albertagrid/intersection.hh:123
Dune::AlbertaGridIntersectionBase
Definition: albertagrid/intersection.hh:29
Dune::AlbertaGridEntity
Definition: albertagrid/entity.hh:45
Dune::AlbertaGridLeafIntersection::LocalGeometryImpl
Base::LocalGeometryImpl LocalGeometryImpl
Definition: albertagrid/intersection.hh:129
Dune::AlbertaGridLeafIntersection::AlbertaGridLeafIntersection
AlbertaGridLeafIntersection()
Definition: albertagrid/intersection.hh:140
Dune
Include standard header files.
Definition: agrid.hh:59
Dune::AlbertaGridIntersectionBase::elementInfo
const ElementInfo & elementInfo() const
Definition: intersection.cc:227
Dune::AlbertaGridIntersectionBase::integrationOuterNormal
NormalVector integrationOuterNormal(const LocalCoordType &local) const
Definition: intersection.cc:188
Dune::AlbertaGridLeafIntersection::geometry
Geometry geometry() const
Definition: intersection.cc:455
Dune::AlbertaGridIntersectionBase::ElementInfo
Alberta::ElementInfo< dimension > ElementInfo
Definition: albertagrid/intersection.hh:47
Dune::AlbertaGridLeafIntersection::conforming
bool conforming() const
Definition: intersection.cc:414
Dune::AlbertaGridIntersectionBase::grid
const Grid & grid() const
Definition: intersection.cc:219
Dune::AlbertaGridLeafIntersection::EntityImp
Base::EntityImp EntityImp
Definition: albertagrid/intersection.hh:126
Dune::AlbertaGridIntersectionBase::EntityImp
AlbertaGridEntity< 0, dimension, Grid > EntityImp
Definition: albertagrid/intersection.hh:50
Dune::AlbertaGridIntersectionBase::GeometryImpl
Grid::Traits::template Codim< 1 >::GeometryImpl GeometryImpl
Definition: albertagrid/intersection.hh:52
Dune::AlbertaGridLeafIntersection::geometryInOutside
LocalGeometry geometryInOutside() const
Definition: intersection.cc:440
Dune::AlbertaGridIntersectionBase::Geometry
Grid::template Codim< 1 >::Geometry Geometry
Definition: albertagrid/intersection.hh:44
Dune::AlbertaTransformation
Definition: transformation.hh:15
Dune::VTK::GeometryType
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Dune::AlbertaGridIntersectionBase::type
GeometryType type() const
Definition: intersection.cc:80
Dune::AlbertaGridIntersectionBase::grid_
const Grid * grid_
Definition: albertagrid/intersection.hh:90
Dune::AlbertaGridLeafIntersection::operator==
bool operator==(const This &other) const
Definition: intersection.cc:382
Dune::AlbertaGridIntersectionBase::outerNormal
NormalVector outerNormal(const LocalCoordType &local) const
Definition: intersection.cc:196
Dune::AlbertaGridLeafIntersection::dimension
static const int dimension
Definition: albertagrid/intersection.hh:112
Dune::AlbertaGridLeafIntersection::LocalCoordType
Base::LocalCoordType LocalCoordType
Definition: albertagrid/intersection.hh:116
Dune::AlbertaGridLeafIntersection::twistInOutside
int twistInOutside() const
Definition: intersection.cc:483
Dune::Grid::ctype
ct ctype
Define type used for coordinates in grid module.
Definition: common/grid.hh:522
Dune::AlbertaGridIntersectionBase::indexInInside
int indexInInside() const
Definition: intersection.cc:72
Dune::AlbertaGridIntersectionBase::centerUnitOuterNormal
NormalVector centerUnitOuterNormal() const
Definition: intersection.cc:178
Dune::AlbertaGridIntersectionBase::LocalGeometry
Grid::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: albertagrid/intersection.hh:45
Dune::AlbertaGridLeafIntersection::NormalVector
Base::NormalVector NormalVector
Definition: albertagrid/intersection.hh:115
Dune::Alberta::ElementInfo< dimension >
Dune::AlbertaGridLeafIntersection::GlobalCoordReader
Base::GlobalCoordReader GlobalCoordReader
Definition: albertagrid/intersection.hh:131
Dune::AlbertaGridIntersectionBase::NormalVector
FieldVector< ctype, dimensionworld > NormalVector
Definition: albertagrid/intersection.hh:39
Dune::Grid
Grid abstract base class.
Definition: common/grid.hh:373
Dune::AlbertaGridIntersectionBase::elementInfo_
ElementInfo elementInfo_
Definition: albertagrid/intersection.hh:91
Dune::AlbertaGridIntersectionBase::LocalCoordType
FieldVector< ctype, dimension-1 > LocalCoordType
Definition: albertagrid/intersection.hh:40
Dune::AlbertaGridLeafIntersection::indexInOutside
int indexInOutside() const
Definition: intersection.cc:464
Dune::AlbertaGridLeafIntersection::neighbor
bool neighbor() const
Definition: intersection.cc:420
Dune::AlbertaGridIntersectionBase::centerIntegrationOuterNormal
NormalVector centerIntegrationOuterNormal() const
Definition: intersection.cc:89
Dune::AlbertaGridLeafIntersection::LocalCoordReader
Base::LocalCoordReader LocalCoordReader
Definition: albertagrid/intersection.hh:132
Dune::AlbertaGridLeafIntersection::LocalGeometry
Base::LocalGeometry LocalGeometry
Definition: albertagrid/intersection.hh:121
Dune::AlbertaGridLeafIntersection::Entity
Base::Entity Entity
Definition: albertagrid/intersection.hh:118
Dune::AlbertaGridIntersectionBase::transformation
AlbertaTransformation transformation() const
Definition: intersection.cc:212
Dune::AlbertaGridIntersectionBase::boundarySegmentIndex
size_t boundarySegmentIndex() const
Definition: intersection.cc:62
Dune::AlbertaGridIntersectionBase::boundary
bool boundary() const
Definition: intersection.cc:41
Dune::Grid::dimension
The dimension of the grid.
Definition: common/grid.hh:387
Dune::AlbertaGridIntersectionBase::AlbertaGridIntersectionBase
AlbertaGridIntersectionBase()
Definition: intersection.cc:16
Dune::AlbertaGridLeafIntersection::dimensionworld
static const int dimensionworld
Definition: albertagrid/intersection.hh:113
transformation.hh
Dune::AlbertaGridIntersectionBase::Entity
Grid::template Codim< 0 >::Entity Entity
Definition: albertagrid/intersection.hh:42
Dune::AlbertaGridLeafIntersection::equals
bool equals(const AlbertaGridLeafIntersection &other) const
Definition: albertagrid/intersection.hh:147
Dune::Grid::dimensionworld
The dimension of the world the grid lives in.
Definition: common/grid.hh:393
Dune::AlbertaGridIntersectionBase::dimension
static const int dimension
Definition: albertagrid/intersection.hh:36
Dune::AlbertaGridLeafIntersection::twistInInside
int twistInInside() const
Definition: intersection.cc:475
Dune::AlbertaGridIntersectionBase::ctype
Grid::ctype ctype
Definition: albertagrid/intersection.hh:34
Dune::AlbertaGridLeafIntersection::outside
GridImp::template Codim< 0 >::Entity outside() const
Definition: intersection.cc:397
Dune::AlbertaGridIntersectionBase::LocalGeometryImpl
Grid::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl
Definition: albertagrid/intersection.hh:53
Dune::AlbertaGridIntersectionBase::boundaryId
int boundaryId() const
Definition: intersection.cc:48
geometry.hh
Dune::AlbertaGridLeafIntersection::GeometryImpl
Base::GeometryImpl GeometryImpl
Definition: albertagrid/intersection.hh:128
Dune::AlbertaGridIntersectionBase::inside
Entity inside() const
Definition: intersection.cc:33
Dune::AlbertaGridIntersectionBase::dimensionworld
static const int dimensionworld
Definition: albertagrid/intersection.hh:37
Dune::AlbertaGridIntersectionBase::oppVertex_
int oppVertex_
Definition: albertagrid/intersection.hh:92
Dune::AlbertaGridLeafIntersection::next
void next()
Definition: intersection.cc:388
Dune::AlbertaGridLeafIntersection::Geometry
Base::Geometry Geometry
Definition: albertagrid/intersection.hh:120
Dune::AlbertaGridIntersectionBase::centerOuterNormal
NormalVector centerOuterNormal() const
Definition: intersection.cc:170
Dune::AlbertaGridLeafIntersection
Definition: albertagrid/entity.hh:30
intersection.hh
Dune::AlbertaGridLeafIntersection::geometryInInside
LocalGeometry geometryInInside() const
Definition: intersection.cc:429
Dune::AlbertaGridIntersectionBase::unitOuterNormal
NormalVector unitOuterNormal(const LocalCoordType &local) const
Definition: intersection.cc:204
Dune::Geometry
Wrapper class for geometries.
Definition: common/geometry.hh:65