3#ifndef DUNE_ALBERTA_GEOMETRY_HH
4#define DUNE_ALBERTA_GEOMETRY_HH
18 template<
int dim,
int dimworld >
26 template<
int codim,
class Gr
idImp >
29 typedef typename std::remove_const< GridImp >::type
Grid;
46 subEntity_( subEntity )
56 assert( !elementInfo_ ==
false );
59 const int k = mapVertices( subEntity_, i );
77 static int mapVertices (
int subEntity,
int i )
104 template<
int mydim,
int cdim,
class Gr
idImp >
110 typedef GridImp Grid;
113 static const int dimbary = mydim + 1;
133 typedef FieldMatrix< ctype, numCorners, coorddimension > CoordMatrix;
141 template<
class CoordReader >
144 build( coordReader );
165 assert( (i >= 0) && (i <
corners()) );
188 assert( calcedDet_ );
245 template<
class CoordReader >
246 void build (
const CoordReader &coordReader );
248 void print ( std::ostream &out )
const;
252 ctype elDeterminant ()
const
270 mutable bool builtJT_;
272 mutable bool builtJTInv_;
274 mutable bool calcedDet_;
275 mutable ctype elDet_;
283 template<
int mydim,
int cdim,
class Gr
idImp >
295 template<
class CoordReader >
297 :
Base( coordReader )
302#if !DUNE_ALBERTA_CACHE_COORDINATES
303 template<
int dim,
int cdim >
312 static const int dimbary = dim + 1;
334 typedef FieldMatrix< ctype, numCorners, coorddimension > CoordMatrix;
342 template<
class CoordReader >
345 build( coordReader );
363 assert( (i >= 0) && (i <
corners()) );
364 const Alberta::GlobalCoordinate &x = elementInfo_.coordinate( i );
375 for(
int i = 1; i < numCorners; ++i )
377 centroid_ *=
ctype( 1 ) /
ctype( numCorners );
394 return elementInfo_.geometryCache().integrationElement();
416 return elementInfo_.geometryCache().jacobianTransposed();
433 return elementInfo_.geometryCache().jacobianInverseTransposed();
454 template<
class CoordReader >
455 void build (
const CoordReader &coordReader )
457 elementInfo_ = coordReader.elementInfo();
461 ElementInfo elementInfo_;
470 template<
class Gr
id >
480 template<
int codim >
502 buildGeometryInFather();
510 delete geometryInFather_[ child ][ 0 ];
511 delete geometryInFather_[ child ][ 1 ];
517 delete faceGeometry_[ i ][ j ];
521 void buildGeometryInFather();
522 void buildFaceGeometry();
529 assert( (orientation == 1) || (orientation == -1) );
530 return *geometryInFather_[ child ][ (orientation + 1) / 2 ];
536 assert( (face >= 0) && (face <
numFaces) );
543 static This theInstance;
548 template<
int codim >
549 static int mapVertices (
int subEntity,
int i )
provides a wrapper for ALBERTA's el_info structure
Include standard header files.
Definition: agrid.hh:58
ALBERTA REAL Real
Definition: misc.hh:46
static K determinant(const FieldMatrix< K, 0, m > &matrix)
Definition: algebra.hh:28
ALBERTA REAL_D GlobalVector
Definition: misc.hh:48
[ provides Dune::Grid ]
Definition: agrid.hh:107
Definition: geometry.cc:170
Definition: geometry.cc:214
Definition: albertagrid/geometry.hh:28
Alberta::Real ctype
Definition: albertagrid/geometry.hh:36
std::remove_const< GridImp >::type Grid
Definition: albertagrid/geometry.hh:29
static const int codimension
Definition: albertagrid/geometry.hh:32
AlbertaGridCoordinateReader(const GridImp &grid, const ElementInfo &elementInfo, int subEntity)
Definition: albertagrid/geometry.hh:41
static const int mydimension
Definition: albertagrid/geometry.hh:33
static const int dimension
Definition: albertagrid/geometry.hh:31
bool hasDeterminant() const
Definition: albertagrid/geometry.hh:65
FieldVector< ctype, coorddimension > Coordinate
Definition: albertagrid/geometry.hh:39
void coordinate(int i, Coordinate &x) const
Definition: albertagrid/geometry.hh:54
static const int coorddimension
Definition: albertagrid/geometry.hh:34
ctype determinant() const
Definition: albertagrid/geometry.hh:70
const ElementInfo & elementInfo() const
Definition: albertagrid/geometry.hh:49
Alberta::ElementInfo< dimension > ElementInfo
Definition: albertagrid/geometry.hh:38
geometry implementation for AlbertaGrid
Definition: albertagrid/geometry.hh:106
GeometryType type() const
obtain the type of reference element
Definition: albertagrid/geometry.hh:148
GlobalCoordinate center() const
return center of geometry
Definition: albertagrid/geometry.hh:170
const JacobianTransposed & jacobianTransposed(const LocalCoordinate &local) const
transposed of the geometry mapping's Jacobian
Definition: albertagrid/geometry.hh:213
const JacobianTransposed & jacobianTransposed() const
transposed of the geometry mapping's Jacobian
Definition: geometry.cc:53
int corners() const
number of corner the geometry
Definition: albertagrid/geometry.hh:157
const JacobianInverseTransposed & jacobianInverseTransposed() const
transposed inverse of the geometry mapping's Jacobian
Definition: geometry.cc:71
static const int coorddimension
Definition: albertagrid/geometry.hh:122
AlbertaGridGeometry(const CoordReader &coordReader)
Definition: albertagrid/geometry.hh:142
FieldVector< ctype, mydimension > LocalCoordinate
Definition: albertagrid/geometry.hh:124
FieldMatrix< ctype, coorddimension, mydimension > JacobianInverseTransposed
Definition: albertagrid/geometry.hh:128
GlobalCoordinate corner(const int i) const
obtain the i-th corner of this geometry
Definition: albertagrid/geometry.hh:163
void print(std::ostream &out) const
Definition: geometry.cc:18
ctype integrationElement() const
integration element of the geometry mapping
Definition: albertagrid/geometry.hh:186
ctype integrationElement(const LocalCoordinate &local) const
integration element of the geometry mapping
Definition: albertagrid/geometry.hh:193
GlobalCoordinate global(const LocalCoordinate &local) const
map a point from the refence element to the geometry
Definition: geometry.cc:32
Alberta::Real ctype
type of coordinates
Definition: albertagrid/geometry.hh:117
ctype volume() const
volume of geometry
Definition: albertagrid/geometry.hh:199
static const int codimension
Definition: albertagrid/geometry.hh:121
FieldVector< ctype, coorddimension > GlobalCoordinate
Definition: albertagrid/geometry.hh:125
const JacobianInverseTransposed & jacobianInverseTransposed(const LocalCoordinate &local) const
transposed inverse of the geometry mapping's Jacobian
Definition: albertagrid/geometry.hh:227
FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed
Definition: albertagrid/geometry.hh:127
void invalidate()
invalidate the geometry
Definition: albertagrid/geometry.hh:237
static const int mydimension
Definition: albertagrid/geometry.hh:120
bool affine() const
returns always true since we only have simplices
Definition: albertagrid/geometry.hh:154
void build(const CoordReader &coordReader)
build the geometry from a coordinate reader
Definition: geometry.cc:88
AlbertaGridGeometry()
Definition: albertagrid/geometry.hh:136
static const int dimension
Definition: albertagrid/geometry.hh:119
Definition: albertagrid/geometry.hh:286
AlbertaGridGlobalGeometry()
Definition: albertagrid/geometry.hh:291
AlbertaGridGlobalGeometry(const CoordReader &coordReader)
Definition: albertagrid/geometry.hh:296
Definition: albertagrid/geometry.hh:305
GlobalCoordinate corner(const int i) const
obtain the i-th corner of this geometry
Definition: albertagrid/geometry.hh:361
FieldVector< ctype, mydimension > LocalCoordinate
Definition: albertagrid/geometry.hh:325
GeometryType type() const
obtain the type of reference element
Definition: albertagrid/geometry.hh:349
void invalidate()
invalidate the geometry
Definition: albertagrid/geometry.hh:448
const JacobianInverseTransposed & jacobianInverseTransposed() const
transposed inverse of the geometry mapping's Jacobian
Definition: albertagrid/geometry.hh:431
int corners() const
number of corner the geometry
Definition: albertagrid/geometry.hh:355
void build(const CoordReader &coordReader)
build the geometry from a coordinate reader
Definition: albertagrid/geometry.hh:455
const JacobianTransposed & jacobianTransposed() const
transposed of the geometry mapping's Jacobian
Definition: albertagrid/geometry.hh:414
AlbertaGridGlobalGeometry(const CoordReader &coordReader)
Definition: albertagrid/geometry.hh:343
GlobalCoordinate global(const LocalCoordinate &local) const
map a point from the refence element to the geometry
AlbertaGridGlobalGeometry()
Definition: albertagrid/geometry.hh:337
GlobalCoordinate center() const
return center of geometry
Definition: albertagrid/geometry.hh:372
Alberta::Real ctype
type of coordinates
Definition: albertagrid/geometry.hh:318
ctype integrationElement() const
integration element of the geometry mapping
Definition: albertagrid/geometry.hh:392
FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed
Definition: albertagrid/geometry.hh:328
const JacobianInverseTransposed & jacobianInverseTransposed(const LocalCoordinate &local) const
transposed inverse of the geometry mapping's Jacobian
Definition: albertagrid/geometry.hh:438
const JacobianTransposed & jacobianTransposed(const LocalCoordinate &local) const
transposed of the geometry mapping's Jacobian
Definition: albertagrid/geometry.hh:421
ctype integrationElement(const LocalCoordinate &local) const
integration element of the geometry mapping
Definition: albertagrid/geometry.hh:398
FieldVector< ctype, coorddimension > GlobalCoordinate
Definition: albertagrid/geometry.hh:326
ctype volume() const
volume of geometry
Definition: albertagrid/geometry.hh:404
FieldMatrix< ctype, coorddimension, mydimension > JacobianInverseTransposed
Definition: albertagrid/geometry.hh:329
Definition: albertagrid/geometry.hh:472
const LocalFaceGeometry & faceGeometry(int face, int twist=0) const
Definition: albertagrid/geometry.hh:534
static const This & instance()
Definition: albertagrid/geometry.hh:541
const LocalElementGeometry & geometryInFather(int child, const int orientation=1) const
Definition: albertagrid/geometry.hh:526
static const int numFaceTwists
Definition: albertagrid/geometry.hh:494
Codim< 1 >::LocalGeometry LocalFaceGeometry
Definition: albertagrid/geometry.hh:487
Grid::ctype ctype
Definition: albertagrid/geometry.hh:476
static const int minFaceTwist
Definition: albertagrid/geometry.hh:492
static const int numFaces
Definition: albertagrid/geometry.hh:490
static const int numChildren
Definition: albertagrid/geometry.hh:489
static const int maxFaceTwist
Definition: albertagrid/geometry.hh:493
static const int dimension
Definition: albertagrid/geometry.hh:478
Codim< 0 >::LocalGeometry LocalElementGeometry
Definition: albertagrid/geometry.hh:486
Definition: albertagrid/geometry.hh:482
AlbertaGridGeometry< dimension-codim, dimension, Grid > LocalGeometry
Definition: albertagrid/geometry.hh:483
Grid abstract base class.
Definition: common/grid.hh:372
@ dimensionworld
The dimension of the world the grid lives in.
Definition: common/grid.hh:392
@ dimension
The dimension of the grid.
Definition: common/grid.hh:386
ct ctype
Define type used for coordinates in grid module.
Definition: common/grid.hh:521
Wrapper and interface classes for element geometries.