Go to the documentation of this file. 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<
int dim,
int dimworld, 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<
int dim,
int dimworld, ALU3dGr
idElementType type,
class Comm >
388 template<
int dim,
int dimworld,
class Comm >
396 : rule_( rule ), nChild_( nChild )
399 void child2parent (
const CoordinateType &childCoordinates,
400 CoordinateType &parentCoordinates)
const;
402 CoordinateType child2parent (
const FieldVector< alu3d_ctype, 2 > &childCoordinates )
const;
405 void child2parentNosplit(
const CoordinateType& childCoordinates,
406 CoordinateType& parentCoordinates)
const;
407 void child2parentE01(
const CoordinateType& childCoordinates,
408 CoordinateType& parentCoordinates)
const;
409 void child2parentE12(
const CoordinateType& childCoordinates,
410 CoordinateType& parentCoordinates)
const;
411 void child2parentE20(
const CoordinateType& childCoordinates,
412 CoordinateType& parentCoordinates)
const;
413 void child2parentIso4(
const CoordinateType& childCoordinates,
414 CoordinateType& parentCoordinates)
const;
416 RefinementRuleType rule_;
421 template<
int dim,
int dimworld,
class Comm >
429 : rule_( rule ), nChild_( nChild )
432 void child2parent (
const CoordinateType &childCoordinates,
433 CoordinateType &parentCoordinates)
const;
435 CoordinateType child2parent (
const FieldVector< alu3d_ctype, 2 > &childCoordinates )
const;
438 void child2parentNosplit(
const CoordinateType& childCoordinates,
439 CoordinateType& parentCoordinates)
const;
440 void child2parentIso4(
const CoordinateType& childCoordinates,
441 CoordinateType& parentCoordinates)
const;
443 RefinementRuleType rule_;
449 #if COMPILE_ALUGRID_INLINE
bool _calcedInv
Definition: mappings.hh:176
bool affine_
Definition: mappings.hh:243
FieldVector< alu3d_ctype, 2 > coord2_t
Definition: mappings.hh:152
~TrilinearMapping()
Definition: mappings.hh:63
matrix_t matrix_
Definition: mappings.hh:170
FieldVector< alu3d_ctype, 3 > coord3_t
Definition: mappings.hh:91
const matrix_t & jacobianTransposed(const map_t &) const
Definition: mappings_imp.cc:1271
ctype _b[4][cdim]
Definition: mappings.hh:237
void buildMapping(const vector_t &, const vector_t &, const vector_t &, const vector_t &)
void world2map(const coord3_t &, coord2_t &) const
Definition: mappings_imp.cc:560
bool affine() const
Definition: mappings_imp.cc:631
static const double _epsilon
Definition: mappings.hh:100
FieldMatrix< alu3d_ctype, 3, 2 > inv_t
Definition: mappings.hh:164
alu3d_ctype ctype
Definition: mappings.hh:228
ctype det(const map_t &) const
Definition: mappings_imp.cc:1257
Definition: topology.hh:12
void multTransposedMatrix(const matrix_t &matrix, FieldMatrix< ctype, mydim, mydim > &result) const
Definition: mappings_imp.cc:1173
BilinearMapping()
Definition: mappings_imp.cc:600
A bilinear surface mapping.
Definition: mappings.hh:142
~SurfaceNormalCalculator()
Definition: mappings.hh:109
matrix_t matrix_
Definition: mappings.hh:240
FieldMatrix< alu3d_ctype, 2, 3 > matrix_t
Definition: mappings.hh:161
alu3d_ctype ctype
Definition: mappings.hh:285
bool _affine
Definition: mappings.hh:102
bool _calcedMatrix
Definition: mappings.hh:178
Definition: alu3dinclude.hh:259
static const alu3d_ctype ALUnumericEpsilon
Definition: mappings.hh:18
FieldVector< ctype, cdim > world_t
Definition: mappings.hh:230
Definition: topology.hh:12
ctype double_t[cdim]
Definition: mappings.hh:287
FieldVector< alu3d_ctype, 2 > CoordinateType
Definition: mappings.hh:425
~BilinearSurfaceMapping()
Definition: mappings.hh:191
void map2world(const ctype x, const ctype y, world_t &w) const
Definition: mappings_imp.cc:645
FieldVector< ctype, mydim > map_t
Definition: mappings.hh:290
static void multMatrix(const matrix_t &, const FieldMatrix< ctype, 2, 2 > &, inv_t &)
Definition: mappings_imp.cc:790
ALU3dImplTraits< hexa, Comm >::HfaceRuleType RefinementRuleType
Definition: mappings.hh:426
void inverseCodimOne(const map_t &) const
Definition: mappings_imp.cc:1119
const mat_t & jacobianInverseTransposed(const coord_t &)
Definition: mappings_imp.cc:93
const matrix_t & jacobianTransposed(const coord2_t &) const
Definition: mappings_imp.cc:475
FieldMatrix< ctype, 2, cdim > matrix_t
Definition: mappings.hh:233
FieldVector< alu3d_ctype, 3 > CoordinateType
Definition: mappings.hh:392
Definition: mappings.hh:385
FieldVector< ctype, 2 > map_t
Definition: mappings.hh:231
NonConformingFaceMapping(RefinementRuleType rule, int nChild)
Definition: mappings.hh:428
FieldVector< ctype, cdim > world_t
Definition: mappings.hh:289
SurfaceNormalCalculator()
Constructor creating empty mapping with double , i.e. zero.
Definition: mappings_imp.cc:253
bool _calcedDet
true if determinant has been calculated
Definition: mappings.hh:307
const inv_t & jacobianInverseTransposed(const coord2_t &) const
Definition: mappings_imp.cc:533
ALU3dImplTraits< tetra, Comm >::HfaceRuleType RefinementRuleType
Definition: mappings.hh:393
const matrix_t & jacobianTransposed(const map_t &) const
Definition: mappings_imp.cc:733
double alu3d_ctype
Definition: alu3dinclude.hh:85
void map2world(const map_t &, world_t &) const
Definition: mappings_imp.cc:1027
alu3d_ctype double_t[3]
Definition: mappings.hh:31
void buildMapping(const vector_t &, const vector_t &, const vector_t &, const vector_t &)
void map2world(const coord_t &, coord_t &) const
Definition: mappings_imp.cc:112
alu3d_ctype double3_t[3]
Definition: mappings.hh:95
TrilinearMapping()
Definition: mappings.hh:59
alu3d_ctype det(const coord2_t &) const
Definition: mappings_imp.cc:498
ctype _det
P[0].
Definition: mappings.hh:301
const inv_t & jacobianInverseTransposed(const map_t &) const
Definition: mappings_imp.cc:1279
FieldVector< alu3d_ctype, 3 > coord3_t
Definition: mappings.hh:151
void multMatrix(const matrix_t &A, const FieldMatrix< ctype, mydim, mydim > &B, inv_t &ret) const
Definition: mappings_imp.cc:1192
bool _calcedInv
true if inverse has been calculated
Definition: mappings.hh:304
FieldMatrix< alu3d_ctype, 3, 3 > mat_t
Definition: mappings.hh:33
alu3d_ctype _n[3][3]
Definition: mappings.hh:98
matrix_t _matrix
transformation matrix (transposed)
Definition: mappings.hh:296
NonConformingFaceMapping(RefinementRuleType rule, int nChild)
Definition: mappings.hh:395
A bilinear mapping.
Definition: mappings.hh:225
bool affine() const
Definition: mappings.hh:112
void world2map(const coord_t &, coord_t &)
Definition: mappings_imp.cc:219
void world2map(const world_t &, map_t &) const
Definition: mappings_imp.cc:1039
FieldVector< alu3d_ctype, 2 > coord2_t
Definition: mappings.hh:92
void inverse(const coord3_t &) const
Definition: mappings_imp.cc:507
bool affine() const
Definition: mappings.hh:79
void calculateDeterminant(const map_t &) const
Definition: mappings_imp.cc:1084
A bilinear surface mapping.
Definition: mappings.hh:87
void world2map(const world_t &, map_t &) const
Definition: mappings_imp.cc:654
void negativeNormal(const coord2_t &, coord3_t &) const
Definition: mappings_imp.cc:348
[ provides Dune::Grid ]
Definition: communication.hh:37
ctype det(const map_t &) const
Definition: mappings_imp.cc:686
bool affine() const
Definition: mappings.hh:317
alu3d_ctype DetDf
Definition: mappings.hh:171
FieldVector< alu3d_ctype, 3 > coord_t
Definition: mappings.hh:32
bool calcedDet_
Definition: mappings.hh:245
bool calcedInv_
Definition: mappings.hh:246
inv_t _invTransposed
storage for inverse of jacobian (transposed)
Definition: mappings.hh:297
coord3_t normal_
Definition: mappings.hh:173
void normal(const coord2_t &, coord3_t &) const
Definition: mappings_imp.cc:333
Definition: mappings.hh:28
alu3d_ctype _b[4][3]
Definition: mappings.hh:166
ctype det_
Definition: mappings.hh:239
mat3_t Dfi
Definition: mappings.hh:168
bool calcedMatrix_
Definition: mappings.hh:244
void buildMapping(const vector_t &, const vector_t &, const vector_t &, const vector_t &)
BilinearSurfaceMapping()
Constructor creating empty mapping with double , i.e. zero.
Definition: mappings_imp.cc:369
void buildMapping(const vector_t &, const vector_t &, const vector_t &, const vector_t &, const vector_t &, const vector_t &, const vector_t &, const vector_t &)
coord3_t tmp_
Definition: mappings.hh:174
inv_t invTransposed_
Definition: mappings.hh:241
alu3d_ctype double3_t[3]
Definition: mappings.hh:155
const inv_t & jacobianInverseTransposed(const map_t &) const
Definition: mappings_imp.cc:742
void inverse(const map_t &) const
Definition: mappings_imp.cc:826
bool _calcedTransposed
Definition: mappings.hh:177
static void multTransposedMatrix(const matrix_t &, FieldMatrix< ctype, 2, 2 > &)
Definition: mappings_imp.cc:774
FieldMatrix< ctype, cdim, mydim > inv_t
Definition: mappings.hh:293
FieldMatrix< ctype, cdim, 2 > inv_t
Definition: mappings.hh:234
void inverse(const map_t &) const
Definition: mappings_imp.cc:1054
FieldMatrix< alu3d_ctype, 3, 3 > mat3_t
Definition: mappings.hh:158
LinearMapping()
Constructor creating empty mapping with double , i.e. zero.
Definition: mappings_imp.cc:853
mat3_t Df
Definition: mappings.hh:168
inv_t invTransposed_
Definition: mappings.hh:169
static const double _epsilon
Definition: mappings.hh:148
SurfaceNormalCalculator BaseType
Definition: mappings.hh:145
void map2worldlinear(const ctype, const ctype) const
Definition: mappings_imp.cc:800
Definition: alu3dinclude.hh:79
alu3d_ctype det(const coord_t &)
Definition: mappings_imp.cc:167
void map2world(const coord2_t &, coord3_t &) const
Definition: mappings_imp.cc:423
A linear mapping.
Definition: mappings.hh:282
FieldMatrix< ctype, mydim, cdim > matrix_t
Definition: mappings.hh:292
void buildMapping(const vector_t &, const vector_t &, const vector_t &, const vector_t &)
world_t _p0
Definition: mappings.hh:298
const mat_t & jacobianTransposed(const coord_t &)
Definition: mappings_imp.cc:86