1#ifndef DUNE_FEM_GRIDPART_COMMON_SIMPLEGEOMETRY_HH
2#define DUNE_FEM_GRIDPART_COMMON_SIMPLEGEOMETRY_HH
7#include <dune/common/fmatrix.hh>
8#include <dune/common/fvector.hh>
10#include <dune/geometry/affinegeometry.hh>
11#include <dune/geometry/referenceelements.hh>
13#include <dune/grid/common/geometry.hh>
23 template<
class BasicGeometry >
25 :
public BasicGeometry
27 typedef typename BasicGeometry::ctype
ctype;
29 using BasicGeometry::mydimension;
30 using BasicGeometry::coorddimension;
32 using BasicGeometry::global;
33 using BasicGeometry::jacobianTransposed;
34 using BasicGeometry::quadrature;
35 using BasicGeometry::type;
47 template<
class... Args, std::enable_if_t< std::is_constructible< BasicGeometry, Args &&... >::value,
int > = 0 >
49 : BasicGeometry(
std::forward< Args >( args )... )
55 bool affine ()
const {
return false; }
59 const ctype tolerance = 1e-12;
66 MatrixHelper::template xTRightInvA< mydimension, coorddimension >( jacobianTransposed( local ), dglobal, dlocal );
70 while( dlocal.two_norm2() > tolerance );
76 return MatrixHelper::template sqrtDetAAT< mydimension, coorddimension >( jacobianTransposed( local ) );
82 MatrixHelper::template rightInvA< mydimension, coorddimension >( jacobianTransposed( local ), jacInverseTransposed );
83 return jacInverseTransposed;
90 for(
const auto &qp : quadrature( 0 ) )
93 center.axpy( weight, global( qp.position() ) );
102 for(
const auto &qp : quadrature( 0 ) )
107 auto referenceElement ()
const {
return Dune::referenceElement<double>( type(), Dune::Dim<mydimension>() ); }
Definition: bindguard.hh:11
Definition: simplegeometry.hh:26
FieldVector< ctype, mydimension > LocalCoordinate
Definition: simplegeometry.hh:37
SimpleGeometry(Args &&...args)
Definition: simplegeometry.hh:48
int corners() const
Definition: simplegeometry.hh:52
FieldMatrix< ctype, coorddimension, mydimension > JacobianInverseTransposed
Definition: simplegeometry.hh:41
FieldVector< ctype, coorddimension > GlobalCoordinate
Definition: simplegeometry.hh:38
ctype volume() const
Definition: simplegeometry.hh:99
JacobianInverseTransposed Jacobian
Definition: simplegeometry.hh:42
ctype integrationElement(const LocalCoordinate &local) const
Definition: simplegeometry.hh:74
JacobianInverseTransposed jacobianInverseTransposed(const LocalCoordinate &local) const
Definition: simplegeometry.hh:79
BasicGeometry::ctype ctype
Definition: simplegeometry.hh:27
FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed
Definition: simplegeometry.hh:40
auto referenceElement() const
Definition: simplegeometry.hh:107
Impl::FieldMatrixHelper< ctype > MatrixHelper
Definition: simplegeometry.hh:45
GlobalCoordinate center() const
Definition: simplegeometry.hh:86
bool affine() const
Definition: simplegeometry.hh:55
GlobalCoordinate corner(int i) const
Definition: simplegeometry.hh:53