1#ifndef DUNE_FEM_GRIDPART_COMMON_COMPOSITEGEOMETRY_HH
2#define DUNE_FEM_GRIDPART_COMMON_COMPOSITEGEOMETRY_HH
7#include <dune/common/fmatrix.hh>
8#include <dune/common/fvector.hh>
10#include <dune/geometry/affinegeometry.hh>
11#include <dune/geometry/quadraturerules.hh>
12#include <dune/geometry/type.hh>
14#include <dune/grid/common/geometry.hh>
24 template<
class Geometry,
class Embedding >
30 typedef typename Geometry::ctype
ctype;
42 : geometry_(
std::move( geometry ) ), embedding_(
std::move( embedding ) ), order_( order )
45 GeometryType
type ()
const {
return embedding_.type(); }
47 int corners ()
const {
return embedding_.corners(); }
50 bool affine ()
const {
return geometry_.affine() && embedding_.affine(); }
57 const FieldMatrix< ctype, mydimension, Embedding::coorddimension > jacEmbedding( embedding_.jacobianTransposed( local ) );
58 const auto jacGeometry = geometry_.jacobianTransposed( embedding_.global( local ) );
62 jacGeometry.mtv( jacEmbedding[ i ], jacTransposed[ i ] );
69 MatrixHelper::template rightInvA< mydimension, coorddimension >(
jacobianTransposed( local ), jacInverseTransposed );
70 return jacInverseTransposed;
75 return MatrixHelper::template sqrtDetAAT< mydimension, coorddimension >(
jacobianTransposed( local ) );
82 for(
const auto &qp : QuadratureRules< ctype, mydimension >::rule(
type(), order_+1 ) )
94 for(
const auto &qp : QuadratureRules< ctype, mydimension >::rule(
type(), order_ ) )
101 Embedding embedding_;
Definition: bindguard.hh:11
Definition: compositegeometry.hh:26
Geometry::ctype ctype
Definition: compositegeometry.hh:30
GlobalCoordinate corner(int i) const
Definition: compositegeometry.hh:48
int corners() const
Definition: compositegeometry.hh:47
FieldVector< ctype, mydimension > LocalCoordinate
Definition: compositegeometry.hh:31
JacobianTransposed jacobianTransposed(const LocalCoordinate &local) const
Definition: compositegeometry.hh:55
bool affine() const
Definition: compositegeometry.hh:50
GlobalCoordinate global(const LocalCoordinate &local) const
Definition: compositegeometry.hh:52
ctype volume() const
Definition: compositegeometry.hh:91
CompositeGeometry(Geometry geometry, Embedding embedding, int order)
Definition: compositegeometry.hh:41
ctype integrationElement(const LocalCoordinate &local) const
Definition: compositegeometry.hh:73
JacobianInverseTransposed jacobianInverseTransposed(const LocalCoordinate &local) const
Definition: compositegeometry.hh:66
JacobianInverseTransposed Jacobian
Definition: compositegeometry.hh:36
GlobalCoordinate center() const
Definition: compositegeometry.hh:78
static const int mydimension
Definition: compositegeometry.hh:27
FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed
Definition: compositegeometry.hh:34
FieldVector< ctype, coorddimension > GlobalCoordinate
Definition: compositegeometry.hh:32
static const int coorddimension
Definition: compositegeometry.hh:28
GeometryType type() const
Definition: compositegeometry.hh:45
Impl::FieldMatrixHelper< ctype > MatrixHelper
Definition: compositegeometry.hh:39
FieldMatrix< ctype, coorddimension, mydimension > JacobianInverseTransposed
Definition: compositegeometry.hh:35