3 #ifndef DUNE_ALU3DGRIDMAPPINGS_HH
4 #define DUNE_ALU3DGRIDMAPPINGS_HH
11 #include <dune/common/fvector.hh>
12 #include <dune/common/fmatrix.hh>
13 #include <dune/common/exceptions.hh>
22 template<
int mydim,
int coorddim,
class Gr
idImp>
25 template< ALU3dGr
idElementType,
class >
34 typedef FieldVector<alu3d_ctype, 3>
coord_t;
35 typedef FieldMatrix<alu3d_ctype, 3, 3>
mat_t;
37 static const double _epsilon ;
74 template <
class vector_t>
76 const vector_t&,
const vector_t&,
77 const vector_t&,
const vector_t&,
78 const vector_t&,
const vector_t&);
81 inline bool affine ()
const {
return affine_; }
126 template <
class vector_t>
127 void buildMapping (
const vector_t & ,
const vector_t & ,
128 const vector_t & ,
const vector_t & );
132 template <
class vector_t>
133 void buildMapping (
const vector_t & ,
const vector_t & ,
134 const vector_t & ,
const vector_t & ,
160 typedef FieldMatrix<alu3d_ctype,3,3>
mat3_t;
166 typedef FieldMatrix<alu3d_ctype,3,2>
inv_t;
218 template <
class vector_t>
219 void buildMapping (
const vector_t & ,
const vector_t & ,
220 const vector_t & ,
const vector_t & );
233 typedef FieldVector< ctype, 2 >
map_t;
236 typedef FieldMatrix< ctype, cdim, 2 >
inv_t;
255 const ctype (&p2)[ cdim ],
const ctype (&p3)[ cdim ] );
268 template<
class vector_t >
270 const vector_t &,
const vector_t & );
283 template<
int cdim,
int mydim >
292 typedef FieldVector< ctype, mydim >
map_t;
294 typedef FieldMatrix< ctype, mydim, cdim >
matrix_t;
295 typedef FieldMatrix< ctype, cdim, mydim >
inv_t;
319 inline bool affine ()
const {
return true ; }
348 FieldMatrix<ctype, mydim, mydim>& result)
const;
351 const FieldMatrix< ctype, mydim, mydim> &B,
357 template <
class vector_t>
358 void buildMapping (
const vector_t & ,
const vector_t & ,
359 const vector_t & ,
const vector_t & );
363 template <
class vector_t>
364 void buildMapping (
const vector_t & ,
const vector_t & ,
369 template <
class vector_t>
370 void buildMapping (
const vector_t & ,
const vector_t & );
372 template <
class vector_t>
386 template< ALU3dGr
idElementType type,
class Comm >
387 class NonConformingFaceMapping;
390 template<
class Comm >
391 class NonConformingFaceMapping<
tetra, Comm >
398 : rule_( rule ), nChild_( nChild )
401 void child2parent (
const CoordinateType &childCoordinates,
402 CoordinateType &parentCoordinates)
const;
404 CoordinateType child2parent (
const FieldVector< alu3d_ctype, 2 > &childCoordinates )
const;
407 void child2parentNosplit(
const CoordinateType& childCoordinates,
408 CoordinateType& parentCoordinates)
const;
409 void child2parentE01(
const CoordinateType& childCoordinates,
410 CoordinateType& parentCoordinates)
const;
411 void child2parentE12(
const CoordinateType& childCoordinates,
412 CoordinateType& parentCoordinates)
const;
413 void child2parentE20(
const CoordinateType& childCoordinates,
414 CoordinateType& parentCoordinates)
const;
415 void child2parentIso4(
const CoordinateType& childCoordinates,
416 CoordinateType& parentCoordinates)
const;
418 RefinementRuleType rule_;
423 template<
class Comm >
424 class NonConformingFaceMapping<
hexa, Comm >
431 : rule_( rule ), nChild_( nChild )
434 void child2parent (
const CoordinateType &childCoordinates,
435 CoordinateType &parentCoordinates)
const;
437 CoordinateType child2parent (
const FieldVector< alu3d_ctype, 2 > &childCoordinates )
const;
440 void child2parentNosplit(
const CoordinateType& childCoordinates,
441 CoordinateType& parentCoordinates)
const;
442 void child2parentIso4(
const CoordinateType& childCoordinates,
443 CoordinateType& parentCoordinates)
const;
445 RefinementRuleType rule_;
451 #if COMPILE_ALUGRID_INLINE
452 #include "mappings_imp.cc"