3#ifndef DUNE_ALBERTA_INTERSECTION_HH
4#define DUNE_ALBERTA_INTERSECTION_HH
6#include <dune/grid/common/intersection.hh>
8#include <dune/grid/albertagrid/transformation.hh>
10#include <dune/grid/albertagrid/geometry.hh>
20 template<
int codim,
int dim,
class Gr
idImp >
21 class AlbertaGridEntity;
28 template<
class Gr
id >
29 class AlbertaGridIntersectionBase
31 typedef AlbertaGridIntersectionBase< Grid > This;
39 typedef FieldVector< ctype, dimensionworld > NormalVector;
40 typedef FieldVector< ctype, dimension-1 > LocalCoordType;
42 typedef typename Grid::template Codim< 0 >::Entity Entity;
43 typedef typename Grid::template Codim< 0 >::EntityPointer EntityPointer;
45 typedef typename Grid::template Codim< 1 >::Geometry Geometry;
46 typedef typename Grid::template Codim< 1 >::LocalGeometry LocalGeometry;
48 typedef Alberta::ElementInfo< dimension > ElementInfo;
51 typedef AlbertaGridEntity< 0, dimension, Grid > EntityImp;
53 typedef typename Grid::Traits::template Codim< 1 >::GeometryImpl GeometryImpl;
54 typedef typename Grid::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl;
56 struct GlobalCoordReader;
57 struct LocalCoordReader;
61 AlbertaGridIntersectionBase ();
63 AlbertaGridIntersectionBase (
const EntityImp &entity,
const int oppVertex );
65 Entity inside ()
const;
67 bool boundary ()
const;
68 int boundaryId ()
const;
69 size_t boundarySegmentIndex ()
const;
71 int indexInInside ()
const;
75 NormalVector centerIntegrationOuterNormal ()
const;
76 NormalVector centerOuterNormal ()
const;
77 NormalVector centerUnitOuterNormal ()
const;
79 NormalVector integrationOuterNormal (
const LocalCoordType &local )
const;
80 NormalVector outerNormal (
const LocalCoordType &local )
const;
81 NormalVector unitOuterNormal (
const LocalCoordType &local )
const;
84 AlbertaTransformation transformation ()
const;
87 const Grid &grid ()
const;
88 const ElementInfo &elementInfo ()
const;
92 ElementInfo elementInfo_;
101 template<
class Gr
idImp >
102 class AlbertaGridLeafIntersection
103 :
public AlbertaGridIntersectionBase< GridImp >
105 typedef AlbertaGridLeafIntersection< GridImp > This;
106 typedef AlbertaGridIntersectionBase< GridImp > Base;
108 friend class AlbertaGridEntity< 0, GridImp::dimension, GridImp >;
111 typedef This ImplementationType;
113 static const int dimension = Base::dimension;
114 static const int dimensionworld = Base::dimensionworld;
116 typedef typename Base::NormalVector NormalVector;
117 typedef typename Base::LocalCoordType LocalCoordType;
119 typedef typename Base::Entity Entity;
120 typedef typename Base::EntityPointer EntityPointer;
122 typedef typename Base::Geometry Geometry;
123 typedef typename Base::LocalGeometry LocalGeometry;
125 typedef typename Base::ElementInfo ElementInfo;
128 typedef typename Base::EntityImp EntityImp;
130 typedef typename Base::GeometryImpl GeometryImpl;
131 typedef typename Base::LocalGeometryImpl LocalGeometryImpl;
133 typedef typename Base::GlobalCoordReader GlobalCoordReader;
134 typedef typename Base::LocalCoordReader LocalCoordReader;
138 using Base::elementInfo;
142 AlbertaGridLeafIntersection ()
145 AlbertaGridLeafIntersection (
const EntityImp &entity,
const int n );
147 AlbertaGridLeafIntersection (
const This &other );
149 bool equals(
const AlbertaGridLeafIntersection& other )
const
151 return (*
this) == other;
154 This &operator= (
const This &other );
160 typename GridImp::template Codim< 0 >::Entity
163 bool neighbor ()
const;
165 bool conforming ()
const;
167 LocalGeometry geometryInInside ()
const;
168 LocalGeometry geometryInOutside ()
const;
170 Geometry geometry ()
const;
172 int indexInOutside ()
const;
175 int twistInInside ()
const;
176 int twistInOutside ()
const;
179 using Base::oppVertex_;
182 mutable ElementInfo neighborInfo_;
@ dimensionworld
The dimension of the world the grid lives in.
Definition: grid.hh:408
@ dimension
The dimension of the grid.
Definition: grid.hh:402
ct ctype
Define type used for coordinates in grid module.
Definition: grid.hh:548
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
provides a wrapper for ALBERTA's el_info structure
EnableIfInterOperable< T1, T2, bool >::type operator==(const ForwardIteratorFacade< T1, V1, R1, D > &lhs, const ForwardIteratorFacade< T2, V2, R2, D > &rhs)
Checks for equality.
Definition: iteratorfacades.hh:230
Dune namespace.
Definition: alignment.hh:10