dune-grid  2.3.1-rc1
alugrid/2d/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_ALU2DGRID_INTERSECTION_HH
4 #define DUNE_ALU2DGRID_INTERSECTION_HH
5 
6 // System includes
7 #include <stack>
8 #include <utility>
9 
10 // Dune includes
11 #include <dune/grid/common/grid.hh>
12 
16 
17 namespace Dune
18 {
19 
20  // Forward declarations
21  template<int cd, int dim, class GridImp>
22  class ALU2dGridEntity;
23  template<int cd, PartitionIteratorType pitype, class GridImp >
24  class ALU2dGridLevelIterator;
25  template<int cd, class GridImp >
26  class ALU2dGridEntityPointer;
27  template<int mydim, int coorddim, class GridImp>
28  class ALU2dGridGeometry;
29  template<class GridImp>
30  class ALU2dGridHierarchicIterator;
31  template<class GridImp>
32  class ALU2dGridIntersectionBase;
33  template<class GridImp>
34  class ALU2dGridLeafIntersectionIterator;
35  template<class GridImp>
36  class ALU2dGridLevelIntersectionIterator;
37  template<int codim, PartitionIteratorType pitype, class GridImp>
38  class ALU2dGridLeafIterator;
39  template< int dim, int dimworld, ALU2DSPACE ElementType eltype >
40  class ALU2dGrid;
41 
42 
43 
44  // ALU2DIntersectionGeometryStorage
45  // --------------------------------
46 
47  template< class GridImp, class LocalGeometryImpl >
49  {
51 
52  // one geometry for each face and twist 0 and 1
53  LocalGeometryImpl geoms_[ 2 ][ 4 ][ 2 ];
54 
55 #ifdef USE_SMP_PARALLEL
56  // make public because of std::vector
57  public:
58 #endif
60 
61  public:
62  // return reference to local geometry
63  const LocalGeometryImpl &localGeom ( const int aluFace, const int twist, const int corners ) const
64  {
65  assert( corners == 3 || corners == 4 );
66  assert( 0 <= aluFace && aluFace < corners );
67  assert( twist == 0 || twist == 1 );
68  return geoms_[ corners-3 ][ aluFace ][ twist ];
69  }
70 
71  // return static instance
72  static const ThisType &instance ()
73  {
74 #ifdef USE_SMP_PARALLEL
75  typedef ALUGridObjectFactory< GridImp > GridObjectFactoryType;
76  static std::vector< ThisType > storage( GridObjectFactoryType :: maxThreads() );
77  return storage[ GridObjectFactoryType :: threadNumber () ];
78 #else
79  static const ThisType geomStorage;
80  return geomStorage;
81 #endif
82  }
83  };
84 
85 
86 
87  //**********************************************************************
88  //
89  // --ALU2dGridIntersectionBase
90  // --IntersectionBase
91  //**********************************************************************
100  template<class GridImp>
101  class ALU2dGridIntersectionBase
102  {
103  static const int dim = GridImp::dimension;
104  static const int dimworld = GridImp::dimensionworld;
105  static const ALU2DSPACE ElementType eltype = GridImp::elementType;
106 
107  typedef typename GridImp::Traits::template Codim< 1 >::GeometryImpl GeometryImpl;
108  typedef typename GridImp::Traits::template Codim< 1 >::LocalGeometryImpl LocalGeometryImpl;
109 
110  public:
111  typedef typename GridImp :: GridObjectFactoryType FactoryType;
112 
116 
117  enum { dimension = GridImp::dimension };
118  enum { dimensionworld = GridImp::dimensionworld };
119 
120  typedef typename GridImp::template Codim<0>::Entity Entity;
121  typedef typename GridImp::template Codim<0>::EntityPointer EntityPointer;
122 
123  typedef typename GridImp::template Codim<1>::Geometry Geometry;
124  typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
126  typedef FieldVector< alu2d_ctype, dimworld > NormalType;
127  typedef FieldVector< alu2d_ctype, dim-1 > LocalCoordinate;
128 
130 
134 
135  // type of local geometry storage
137 
139  friend class LevelIntersectionIteratorWrapper<GridImp>;
140  friend class LeafIntersectionIteratorWrapper<GridImp>;
141 
142  friend class IntersectionIteratorWrapper<GridImp,ThisType>;
143 
144  protected:
145  struct impl
146  {
147  explicit impl( HElementType *inside = 0 )
148  : index_(0), useOutside_(false)
149  {
150  setInside( inside );
151  setOutside( 0, -1 );
152  }
153 
155  {
156  return inside_;
157  }
158 
159  int nFaces () const
160  {
161  return nFaces_;
162  }
163 
164  bool isBoundary () const
165  {
166  assert( inside() && (index_ < nFaces()) && inside()->neighbour( index_ ) );
167  return inside()->neighbour( index_ )->thinis( ThinelementType::bndel_like );
168  }
169 
171  {
172  assert( isBoundary() );
173  return (HBndElType *)inside()->neighbour( index_ );
174  }
175 
177  {
178  return outside_;
179  }
180 
181  int opposite () const
182  {
183  return opposite_;
184  }
185 
187  {
188  inside_ = inside;
189  nFaces_ = (inside != 0 ? inside->numfaces() : 0);
190  }
191 
193  {
194  outside_ = outside;
195  opposite_ = opposite;
196  }
197 
198  private:
199  // current element from which we started the intersection iterator
200  HElementType *inside_;
201  HElementType *outside_;
202  int nFaces_;
203  int opposite_;
204 
205  public:
206  mutable int index_;
207  mutable bool useOutside_;
208  } current;
209 
210  public:
212  ALU2dGridIntersectionBase(const FactoryType& factory, int wLevel);
213 
215  ALU2dGridIntersectionBase(const ThisType & org);
216 
218 
220  void assign (const ThisType & org);
221 
222  const Intersection &dereference () const
223  {
224  return reinterpret_cast< const Intersection & >( *this );
225  }
226 
228  bool equals (const ThisType & i) const;
229 
231  int level () const;
232 
234  bool boundary() const;
235 
237  int boundaryId () const;
238 
240  size_t boundarySegmentIndex() const;
241 
243  bool neighbor () const;
244 
246  EntityPointer inside() const;
247 
249  EntityPointer outside() const;
250 
252  int indexInInside () const;
253 
255  int indexInOutside () const;
256 
257  int twistInInside () const;
258  int twistInOutside () const;
259 
261  int twistInSelf () const
262  DUNE_DEPRECATED_MSG("Use twistInInside() instead.")
263  { return twistInInside(); }
264 
266  int twistInNeighbor () const
267  DUNE_DEPRECATED_MSG("Use twistInOutside() instead.")
268  { return twistInOutside(); }
269 
270  NormalType outerNormal ( const LocalCoordinate &local ) const;
271  NormalType integrationOuterNormal ( const LocalCoordinate &local ) const;
272  NormalType unitOuterNormal ( const LocalCoordinate &local ) const;
273 
276  Geometry geometry () const;
277 
279  GeometryType type () const;
280 
281  protected:
282  const GridImp& grid() const { return factory_.grid(); }
283 
284  virtual bool conforming() const = 0;
285 
287  void checkValid () ;
288 
289  // set interator to end iterator
290  void done ( const HElementType *inside );
291  void done ( const EntityImp &en ) { done( &en.getItem() ); }
292 
293  // invalidate status of internal objects
294  void unsetUp2Date() ;
295 
296  // reset IntersectionIterator to first neighbour
297  void first ( const EntityImp &en, int wLevel );
298 
299  // reset IntersectionIterator to first neighbour
300  virtual void setFirstItem ( const HElementType &elem, int wLevel ) = 0;
301 
302  // the local geometries
303  mutable GeometryImpl intersectionGlobal_;
304  mutable LocalGeometryImpl intersectionSelfLocal_;
305  mutable LocalGeometryImpl intersectionNeighborLocal_;
306 
307  // reference to factory
310 
311  mutable int walkLevel_;
312  }; // end ALU2dGridIntersectionBase
313 
314 
315 
316 
317  //**********************************************************************
318  //
319  // --ALU2dGridLevelIntersectionIterator
320  // --IntersectionLevelIterator
321  //**********************************************************************
322 
323  template< class GridImp >
325  : public ALU2dGridIntersectionBase< GridImp >
326  {
328  typedef ALU2dGridIntersectionBase< GridImp > BaseType;
329 
330  static const int dim = GridImp::dimension;
331  static const int dimworld = GridImp::dimensionworld;
332  static const ALU2DSPACE ElementType eltype = GridImp::elementType;
333 
334  typedef typename ALU2dImplTraits< dimworld, eltype >::ThinelementType ThinelementType;
335  typedef typename BaseType::HElementType HElementType;
336  typedef typename ALU2dImplTraits< dimworld, eltype >::HBndElType HBndElType;
337  typedef typename ALU2dImplTraits< dimworld, eltype >::PeriodicBndElType PeriodicBndElType;
338 
339  friend class LevelIntersectionIteratorWrapper<GridImp>;
340 
341  friend class IntersectionIteratorWrapper<GridImp,ThisType>;
342 
343  typedef std::pair< HElementType *, int > IntersectionInfo;
344 
345  public:
346  typedef typename GridImp :: GridObjectFactoryType FactoryType;
348 
349  enum { dimension = GridImp::dimension };
350  enum { dimensionworld = GridImp::dimensionworld };
351 
352  typedef typename GridImp::template Codim<0>::Entity Entity;
353 
354  typedef typename GridImp::template Codim<1>::Geometry Geometry;
355  typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
357  typedef ALU2dGridGeometry<dim-1,dimworld,GridImp> GeometryImp;
358  typedef ALU2dGridGeometry<dim-1,dim,GridImp> LocalGeometryImp;
359  typedef FieldVector<alu2d_ctype, dimworld> NormalType;
361 
363 
365  ALU2dGridLevelIntersectionIterator(const FactoryType& factory, int wLevel);
366 
368  ALU2dGridLevelIntersectionIterator(const FactoryType& factory, const HElementType* el, int wLevel, bool end=true);
369 
372 
374 
376  void increment ();
377 
378  public:
381  bool conforming () const
382  {
383  return (this->grid().nonConform() || isConform());
384  }
385 
386  protected:
387  bool isConform() const
388  {
389  return (!current.outside() || (current.outside() == current.inside()->neighbour( current.index_ )));
390  }
391 
392  private:
393  void doIncrement ();
394 
395  // reset IntersectionIterator to first neighbour
396  void setFirstItem(const HElementType & elem, int wLevel);
397 
398  // reset IntersectionIterator to first neighbour
399  template <class EntityType>
400  void first(const EntityType & en, int wLevel);
401 
402  void addNeighboursToStack();
403 
404  static int getOppositeInFather ( int nrInChild, int nrOfChild );
405  static int getOppositeInChild ( int nrInFather, int nrOfChild );
406 
407  void setupIntersection ();
408 
409  protected:
410  using BaseType::done;
411 
412  using BaseType::current;
413  using BaseType::walkLevel_;
414 
415  private:
416  mutable std::stack<IntersectionInfo> nbStack_;
417  }; // end ALU2dGridLevelIntersectionIterator
418 
419 
420 
421  //********************************************************************
422  //
423  // --ALU2dGridLeafIntersectionIterator
424  //
425  //
426  //********************************************************************
427 
428  template< class GridImp >
429  class ALU2dGridLeafIntersectionIterator
430  : public ALU2dGridIntersectionBase< GridImp >
431  {
432  typedef ALU2dGridLeafIntersectionIterator< GridImp > ThisType;
433  typedef ALU2dGridIntersectionBase< GridImp > BaseType;
434 
435  friend class LeafIntersectionIteratorWrapper<GridImp>;
436  friend class IntersectionIteratorWrapper<GridImp,ThisType>;
437 
438  static const int dim = GridImp::dimension;
439  static const int dimworld = GridImp::dimensionworld;
440  static const ALU2DSPACE ElementType eltype = GridImp::elementType;
441 
442  public:
443  typedef typename GridImp :: GridObjectFactoryType FactoryType;
445 
446  enum { dimension = GridImp::dimension };
447  enum { dimensionworld = GridImp::dimensionworld };
448 
449  private:
450  typedef typename ALU2dImplTraits< dimworld, eltype >::ThinelementType ThinelementType;
451  typedef typename BaseType::HElementType HElementType;
452  typedef typename ALU2dImplTraits< dimworld, eltype >::HBndElType HBndElType;
453  typedef typename ALU2dImplTraits< dimworld, eltype >::PeriodicBndElType PeriodicBndElType;
454 
455  typedef std::pair< HElementType *, int > IntersectionInfo;
456 
457  public:
458  typedef typename GridImp::template Codim<0>::Entity Entity;
459  typedef typename GridImp::template Codim<1>::Geometry Geometry;
460  typedef typename GridImp::template Codim<1>::LocalGeometry LocalGeometry;
462  typedef ALU2dGridGeometry<dim-1,dimworld,GridImp> GeometryImp;
463  typedef ALU2dGridGeometry<dim-1,dim,GridImp> LocalGeometryImp;
464  typedef FieldVector<alu2d_ctype, dimworld> NormalType;
466 
468 
470  ALU2dGridLeafIntersectionIterator(const FactoryType& factory, int wLevel);
471 
473  ALU2dGridLeafIntersectionIterator(const FactoryType& factory, const HElementType* el, int wLevel, bool end=true);
474 
477 
479 
481  void increment ();
482 
483  public:
485  bool conforming () const
486  {
487  return (!this->grid().nonConform() || isConform());
488  }
489 
490  protected:
491  bool isConform() const
492  {
493  return (!current.outside() || (current.outside()->level() == current.inside()->level()) );
494  }
495 
496  private:
497  void doIncrement ();
498  // reset IntersectionIterator to first neighbour
499  void setFirstItem(const HElementType & elem, int wLevel);
500 
501  // reset IntersectionIterator to first neighbour
502  template <class EntityType>
503  void first(const EntityType & en, int wLevel);
504 
505  void setupIntersection ();
506 
507  protected:
508  using BaseType::done;
509 
510  using BaseType::current;
511  using BaseType::walkLevel_;
512 
513  private:
514  std::stack<IntersectionInfo> nbStack_;
515 
516  }; // end ALU2dGridLeafIntersectionIterator
517 
518 } // end namespace Dune
519 
520 #include "intersection_imp.cc"
521 #if COMPILE_ALU2DGRID_INLINE
522  #include "intersection.cc"
523 #endif
524 
525 #endif // #ifndef DUNE_ALU2DGRID_INTERSECTION_HH
Geometry geometry() const
Definition: intersection_imp.cc:291
void increment()
increment iterator
Definition: intersection_imp.cc:374
const LocalGeometryStorageType & localGeomStorage_
Definition: alugrid/2d/intersection.hh:309
ALU2dImplTraits< dimworld, eltype >::ThinelementType ThinelementType
Definition: alugrid/2d/intersection.hh:131
HmeshType::hbndel_t HBndElType
Definition: alu2dinclude.hh:109
ALU2dGridIntersectionBase< GridImp > ImplementationType
Definition: alugrid/2d/intersection.hh:113
ALU2dImplTraits< dimworld, eltype >::HBndElType HBndElType
Definition: alugrid/2d/intersection.hh:133
bool isBoundary() const
Definition: alugrid/2d/intersection.hh:164
FieldVector< alu2d_ctype, dim-1 > LocalCoordinate
Definition: alugrid/2d/intersection.hh:127
int opposite() const
Definition: alugrid/2d/intersection.hh:181
impl(HElementType *inside=0)
Definition: alugrid/2d/intersection.hh:147
struct Dune::ALU2dGridIntersectionBase::impl current
ElementType
Definition: alu2dinclude.hh:55
LocalGeometry geometryInOutside() const
Definition: intersection_imp.cc:268
#define ALU2DSPACE
Definition: alu2dinclude.hh:34
void assign(const ALU2dGridLevelIntersectionIterator< GridImp > &org)
The copy constructor.
Definition: intersection_imp.cc:366
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
ALU2dGridEntityPointer< 0, GridImp > EntityPointer
Definition: alugrid/2d/intersection.hh:360
bool isConform() const
Definition: alugrid/2d/intersection.hh:491
size_t boundarySegmentIndex() const
return the boundary segment index
Definition: intersection_imp.cc:118
ALU2dGridGeometry< dim-1, dimworld, GridImp > GeometryImp
Definition: alugrid/2d/intersection.hh:357
int boundaryId() const
return boundary type
Definition: intersection_imp.cc:110
int walkLevel_
Definition: alugrid/2d/intersection.hh:311
const FactoryType & factory_
Definition: alugrid/2d/intersection.hh:308
HmeshType::helement_t HElementType
Definition: alu2dinclude.hh:108
GridImp::template Codim< 0 >::Entity Entity
Definition: alugrid/2d/intersection.hh:352
Wrapper class for pointers to entities.
Definition: common/entitypointer.hh:91
Definition: alugrid/2d/intersection.hh:350
GridImp::template Codim< 0 >::Entity Entity
Definition: alugrid/2d/intersection.hh:458
GeometryImpl intersectionGlobal_
Definition: alugrid/2d/intersection.hh:303
virtual bool conforming() const =0
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:18
ALU2dGridGeometry< dim-1, dimworld, GridImp > GeometryImp
Definition: alugrid/2d/intersection.hh:462
void unsetUp2Date()
Definition: intersection_imp.cc:317
void done(const HElementType *inside)
Definition: intersection_imp.cc:147
HElementType & getItem() const
Definition: alugrid/2d/entity.hh:479
Definition: alugrid/2d/entity.hh:30
Wrapper class for geometries.
Definition: common/geometry.hh:101
NormalType outerNormal(const LocalCoordinate &local) const
Definition: intersection_imp.cc:203
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: alugrid/2d/intersection.hh:124
void assign(const ThisType &org)
The copy constructor.
Definition: intersection_imp.cc:50
GridImp::template Codim< 0 >::EntityPointer EntityPointer
Definition: alugrid/2d/intersection.hh:121
bool conforming() const
leaf is conforming, when conform grid version used
Definition: alugrid/2d/intersection.hh:485
virtual void setFirstItem(const HElementType &elem, int wLevel)=0
Definition: alugrid/2d/intersection.hh:145
int indexInInside() const
local index of codim 1 entity in self where intersection is contained in
Definition: intersection_imp.cc:165
Definition: objectfactory.hh:23
ALU2dGridEntity< 0, dim, GridImp > EntityImp
Definition: alugrid/2d/intersection.hh:356
FieldVector< alu2d_ctype, dimworld > NormalType
Definition: alugrid/2d/intersection.hh:359
ALU2dGridGeometry< dim-1, dim, GridImp > LocalGeometryImp
Definition: alugrid/2d/intersection.hh:463
bool isConform() const
Definition: alugrid/2d/intersection.hh:387
LocalGeometryImpl intersectionNeighborLocal_
Definition: alugrid/2d/intersection.hh:305
ALU2dGridEntity< 0, dim, GridImp > EntityImp
Definition: alugrid/2d/intersection.hh:461
HElementType * inside() const
Definition: alugrid/2d/intersection.hh:154
FieldVector< alu2d_ctype, dimworld > NormalType
Definition: alugrid/2d/intersection.hh:126
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:238
Definition: alugrid/2d/entity.hh:32
NormalType unitOuterNormal(const LocalCoordinate &local) const
Definition: intersection_imp.cc:235
ALU2dGridIntersectionBase(const FactoryType &factory, int wLevel)
The default Constructor , creating an empty ALU2dGridIntersectionIterator.
Definition: intersection_imp.cc:28
MakeableInterfaceObject< Geometry > GeometryObject
Definition: alugrid/2d/intersection.hh:467
int level() const
return level of inside(entity)
Definition: intersection_imp.cc:71
Definition: alugrid/2d/grid.hh:53
const Intersection & dereference() const
Definition: alugrid/2d/intersection.hh:222
ALU2dGridLeafIntersectionIterator(const FactoryType &factory, int wLevel)
The default Constructor , createing an empty ALU2dGridIntersectionIterator.
Definition: intersection_imp.cc:420
bool equals(const ThisType &i) const
check whether entities are the same or whether iterator is done
Definition: intersection_imp.cc:63
Dune::Intersection< GridImp, Dune::ALU2dGridIntersectionBase< GridImp > > Intersection
type of the intersection
Definition: alugrid/2d/intersection.hh:115
void increment()
increment iterator
Definition: intersection_imp.cc:445
GridImp::template Codim< 1 >::Geometry Geometry
Definition: alugrid/2d/intersection.hh:123
Definition: alugrid/2d/entity.hh:26
GridImp::GridObjectFactoryType FactoryType
Definition: alugrid/2d/intersection.hh:111
bool boundary() const
return true if intersection is with boundary
Definition: intersection_imp.cc:104
Definition: objectfactory.hh:26
Class that wraps IntersectionIteratorImp of a grid and gets it's internal object from a object stack ...
Definition: intersectioniteratorwrapper.hh:333
int indexInOutside() const
local index of codim 1 entity in neighbor where intersection is contained in
Definition: intersection_imp.cc:176
double alu2d_ctype
Definition: alu2dinclude.hh:63
int index_
Definition: alugrid/2d/intersection.hh:206
MakeableInterfaceObject< Geometry > GeometryObject
Definition: alugrid/2d/intersection.hh:362
HElementType * outside() const
Definition: alugrid/2d/intersection.hh:176
GridImp::template Codim< 0 >::Entity Entity
Definition: alugrid/2d/intersection.hh:120
void checkValid()
return true if intersection is with boundary
Definition: intersection_imp.cc:92
Definition: alugrid/2d/intersection.hh:48
virtual ~ALU2dGridIntersectionBase()
Definition: alugrid/2d/intersection.hh:217
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: alugrid/2d/intersection.hh:355
Provides proxy classes for IntersectionsIterators.
organize the memory management for entitys used by the NeighborIterator
Definition: alugrid/2d/grid.hh:69
ALU2dGridLevelIntersectionIterator(const FactoryType &factory, int wLevel)
The default Constructor , creating an empty ALU2dGridIntersectionIterator.
Definition: intersection_imp.cc:349
GridImp::GridObjectFactoryType FactoryType
Definition: alugrid/2d/intersection.hh:346
void first(const EntityImp &en, int wLevel)
reset IntersectionIterator to first neighbour
Definition: intersection_imp.cc:81
bool conforming() const
Definition: alugrid/2d/intersection.hh:381
FieldVector< alu2d_ctype, dimworld > NormalType
Definition: alugrid/2d/intersection.hh:464
int nFaces() const
Definition: alugrid/2d/intersection.hh:159
const GridImp & grid() const
Definition: alugrid/2d/intersection.hh:282
Intersection of a mesh entities of codimension 0 ("elements") with a "neighboring" element or with th...
Definition: albertagrid/dgfparser.hh:26
GridImp::GridObjectFactoryType FactoryType
Definition: alugrid/2d/intersection.hh:443
ALU2dGridEntityPointer< 0, GridImp > EntityPointerImp
Definition: alugrid/2d/intersection.hh:129
Definition: alugrid/2d/intersection.hh:118
LocalGeometry geometryInInside() const
Definition: intersection_imp.cc:245
int twistInNeighbor() const
Definition: alugrid/2d/intersection.hh:266
ALU2DIntersectionGeometryStorage< GridImp, LocalGeometryImpl > LocalGeometryStorageType
Definition: alugrid/2d/intersection.hh:136
GridImp::template Codim< 1 >::Geometry Geometry
Definition: alugrid/2d/intersection.hh:459
static const ThisType & instance()
Definition: alugrid/2d/intersection.hh:72
int twistInOutside() const
Definition: intersection_imp.cc:192
void setOutside(HElementType *outside, int opposite)
Definition: alugrid/2d/intersection.hh:192
Different resources needed by all grid implementations.
ALUMemoryProvider< ThisType > StorageType
Definition: alugrid/2d/intersection.hh:347
ALU2dGridGeometry< dim-1, dim, GridImp > LocalGeometryImp
Definition: alugrid/2d/intersection.hh:358
ALU2dGridEntity< 0, dim, GridImp > EntityImp
Definition: alugrid/2d/intersection.hh:125
LocalGeometryImpl intersectionSelfLocal_
Definition: alugrid/2d/intersection.hh:304
void done(const EntityImp &en)
Definition: alugrid/2d/intersection.hh:291
EntityPointer outside() const
return EntityPointer to the Entity on the outside of this intersection.
Definition: intersection_imp.cc:157
const LocalGeometryImpl & localGeom(const int aluFace, const int twist, const int corners) const
Definition: alugrid/2d/intersection.hh:63
Definition: alugrid/2d/intersection.hh:446
bool neighbor() const
return true if intersection is with neighbor on this level
Definition: intersection_imp.cc:132
void setInside(HElementType *inside)
Definition: alugrid/2d/intersection.hh:186
Definition: alu2dinclude.hh:97
GeometryType type() const
obtain the type of reference element for this intersection
Definition: intersection_imp.cc:309
void assign(const ALU2dGridLeafIntersectionIterator< GridImp > &org)
The copy constructor.
Definition: intersection_imp.cc:437
NormalType integrationOuterNormal(const LocalCoordinate &local) const
Definition: intersection_imp.cc:228
HBndElType * boundary() const
Definition: alugrid/2d/intersection.hh:170
Definition: alugrid/2d/entity.hh:210
Definition: alugrid/2d/intersection.hh:117
Definition: alugrid/2d/intersection.hh:349
ALU2dGridIntersectionBase< GridImp > ThisType
Definition: alugrid/2d/intersection.hh:138
int twistInSelf() const
Definition: alugrid/2d/intersection.hh:261
ALU2dImplTraits< dimworld, eltype >::HElementType HElementType
Definition: alugrid/2d/intersection.hh:132
GridImp::template Codim< 1 >::Geometry Geometry
Definition: alugrid/2d/intersection.hh:354
GridImp::template Codim< 1 >::LocalGeometry LocalGeometry
Definition: alugrid/2d/intersection.hh:460
Definition: alugrid/2d/intersection.hh:447
ALU2dGridEntityPointer< 0, GridImp > EntityPointer
Definition: alugrid/2d/intersection.hh:465
EntityPointer inside() const
return EntityPointer to the Entity on the inside of this intersection.
Definition: intersection_imp.cc:140
int twistInInside() const
Definition: intersection_imp.cc:186
bool useOutside_
Definition: alugrid/2d/intersection.hh:207
ALUMemoryProvider< ThisType > StorageType
Definition: alugrid/2d/intersection.hh:444