4 #ifndef DUNE_GRID_INTERSECTION_HH
5 #define DUNE_GRID_INTERSECTION_HH
159 template<
class Gr
idImp,
class IntersectionImp >
162 #if DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS
168 GridImp::
dimension, GridImp::dimensionworld,
169 typename GridImp::ctype,
170 typename GridImp::GridFamily> ;
183 enum {
dim=GridImp::dimension };
188 typedef typename GridImp::template Codim<0>::Entity
Entity;
194 typedef typename GridImp::template Codim<1>::Geometry
Geometry;
218 typedef typename GridImp::ctype
ctype;
223 return this->
real.boundary();
226 #if DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS
242 int boundaryId ()
const
244 return this->
real.boundaryId();
261 return this->
real.boundarySegmentIndex();
267 return this->
real.neighbor();
275 return this->
real.inside();
286 return this->
real.outside();
293 return this->
real.conforming();
311 return this->
real.geometryInInside();
329 return this->
real.geometryInOutside();
345 return this->
real.geometry();
351 return this->
real.type();
365 return this->
real.indexInInside();
379 return this->
real.indexInOutside();
388 return this->
real.outerNormal(local);
399 return this->
real.integrationOuterNormal(local);
409 return this->
real.unitOuterNormal(local);
420 return this->
real.centerUnitOuterNormal();
459 template<
class Gr
idImp,
class IntersectionImp >
462 enum { dim=GridImp::dimension };
463 enum { dimworld=GridImp::dimensionworld };
464 typedef typename GridImp::ctype ct;
472 FieldVector<ct, dimworld> n = asImp().unitOuterNormal(local);
473 n *= asImp().intersectionGlobal().integrationElement(local);
480 FieldVector<ct, dimworld> n = asImp().outerNormal(local);
490 const ReferenceElement<ct, dim-1> & refElement =
491 ReferenceElements<ct, dim-1>::general(type);
492 return asImp().unitOuterNormal(refElement.position(0,0));
500 IntersectionImp &asImp () {
return static_cast< IntersectionImp &
>( *this ); }
501 const IntersectionImp &asImp ()
const {
return static_cast< const IntersectionImp &
>( *this ); }
506 #endif // DUNE_GRID_INTERSECTION_HH