1 #ifndef DUNE_ALU3DGRIDMAPPINGS_HH
2 #define DUNE_ALU3DGRIDMAPPINGS_HH
9 #include <dune/common/fvector.hh>
10 #include <dune/common/fmatrix.hh>
11 #include <dune/common/exceptions.hh>
20 template<
int mydim,
int coorddim,
class Gr
idImp>
23 template< ALU3dGr
idElementType,
class >
32 typedef FieldVector<alu3d_ctype, 3>
coord_t;
33 typedef FieldMatrix<alu3d_ctype, 3, 3>
mat_t;
35 static const double _epsilon ;
72 template <
class vector_t>
74 const vector_t&,
const vector_t&,
75 const vector_t&,
const vector_t&,
76 const vector_t&,
const vector_t&);
79 inline bool affine ()
const {
return affine_; }
124 template <
class vector_t>
125 void buildMapping (
const vector_t & ,
const vector_t & ,
126 const vector_t & ,
const vector_t & );
130 template <
class vector_t>
131 void buildMapping (
const vector_t & ,
const vector_t & ,
132 const vector_t & ,
const vector_t & ,
158 typedef FieldMatrix<alu3d_ctype,3,3>
mat3_t;
164 typedef FieldMatrix<alu3d_ctype,3,2>
inv_t;
216 template <
class vector_t>
217 void buildMapping (
const vector_t & ,
const vector_t & ,
218 const vector_t & ,
const vector_t & );
231 typedef FieldVector< ctype, 2 >
map_t;
234 typedef FieldMatrix< ctype, cdim, 2 >
inv_t;
253 const ctype (&p2)[ cdim ],
const ctype (&p3)[ cdim ] );
266 template<
class vector_t >
268 const vector_t &,
const vector_t & );
281 template<
int cdim,
int mydim >
290 typedef FieldVector< ctype, mydim >
map_t;
292 typedef FieldMatrix< ctype, mydim, cdim >
matrix_t;
293 typedef FieldMatrix< ctype, cdim, mydim >
inv_t;
317 inline bool affine ()
const {
return true ; }
346 FieldMatrix<ctype, mydim, mydim>& result)
const;
349 const FieldMatrix< ctype, mydim, mydim> &B,
355 template <
class vector_t>
356 void buildMapping (
const vector_t & ,
const vector_t & ,
357 const vector_t & ,
const vector_t & );
361 template <
class vector_t>
362 void buildMapping (
const vector_t & ,
const vector_t & ,
367 template <
class vector_t>
368 void buildMapping (
const vector_t & ,
const vector_t & );
370 template <
class vector_t>
384 template< ALU3dGr
idElementType type,
class Comm >
385 class NonConformingFaceMapping;
388 template<
class Comm >
389 struct NonConformingFaceMapping<
tetra, Comm >
395 : rule_( rule ), nChild_( nChild )
398 void child2parent (
const CoordinateType &childCoordinates,
399 CoordinateType &parentCoordinates)
const;
401 CoordinateType child2parent (
const FieldVector< alu3d_ctype, 2 > &childCoordinates )
const;
404 void child2parentNosplit(
const CoordinateType& childCoordinates,
405 CoordinateType& parentCoordinates)
const;
406 void child2parentE01(
const CoordinateType& childCoordinates,
407 CoordinateType& parentCoordinates)
const;
408 void child2parentE12(
const CoordinateType& childCoordinates,
409 CoordinateType& parentCoordinates)
const;
410 void child2parentE20(
const CoordinateType& childCoordinates,
411 CoordinateType& parentCoordinates)
const;
412 void child2parentIso4(
const CoordinateType& childCoordinates,
413 CoordinateType& parentCoordinates)
const;
415 RefinementRuleType rule_;
420 template<
class Comm >
421 struct NonConformingFaceMapping<
hexa, Comm >
427 : rule_( rule ), nChild_( nChild )
430 void child2parent (
const CoordinateType &childCoordinates,
431 CoordinateType &parentCoordinates)
const;
433 CoordinateType child2parent (
const FieldVector< alu3d_ctype, 2 > &childCoordinates )
const;
436 void child2parentNosplit(
const CoordinateType& childCoordinates,
437 CoordinateType& parentCoordinates)
const;
438 void child2parentIso4(
const CoordinateType& childCoordinates,
439 CoordinateType& parentCoordinates)
const;
441 RefinementRuleType rule_;
447 #if COMPILE_ALUGRID_INLINE
448 #include "mappings_imp.cc"