1#ifndef DUNE_MULTIDOMAINGRID_GEOMETRY_HH
2#define DUNE_MULTIDOMAINGRID_GEOMETRY_HH
4#include <dune/grid/common/geometry.hh>
10template<
int mydim,
int coorddim,
typename Gr
idImp>
14 template<
int,
int,
typename>
15 friend class EntityWrapperBase;
17 template<
int,
int,
typename>
18 friend class EntityWrapper;
20 template<
typename,
typename>
21 friend class IntersectionWrapper;
23 template<
typename,
typename,
typename,
typename>
24 friend class SubDomainInterface;
28 typedef typename GridImp::ctype ctype;
29 static const int dimension = GridImp::dimension;
30 static const int dimensionworld = GridImp::dimensionworld;
31 static const int mydimension = mydim;
32 static const int coorddimension = coorddim;
36 typedef FieldVector<ctype,coorddimension> GlobalCoords;
37 typedef FieldVector<ctype,mydimension> LocalCoords;
38 typedef typename GridImp::HostGrid::Traits::template Codim<dimension-mydim>::Geometry HostGeometry;
42 typedef typename HostGeometry::JacobianInverseTransposed JacobianInverseTransposed;
43 typedef typename HostGeometry::JacobianTransposed JacobianTransposed;
45 GeometryType type()
const {
46 return _wrappedGeometry.type();
50 return _wrappedGeometry.corners();
54 return _wrappedGeometry.affine();
57 GlobalCoords corner(
int i)
const {
58 return _wrappedGeometry.corner(i);
61 GlobalCoords global(
const LocalCoords& local)
const {
62 return _wrappedGeometry.global(local);
65 LocalCoords local(
const GlobalCoords& global)
const {
66 return _wrappedGeometry.local(global);
69 bool checkInside(
const LocalCoords& local)
const {
70 return _wrappedGeometry.checkInside(local);
73 ctype integrationElement(
const LocalCoords& local)
const {
74 return _wrappedGeometry.integrationElement(local);
77 ctype volume()
const {
78 return _wrappedGeometry.volume();
81 GlobalCoords center()
const {
82 return _wrappedGeometry.center();
85 const JacobianTransposed
86 jacobianTransposed(
const LocalCoords& local)
const {
87 return _wrappedGeometry.jacobianTransposed(local);
90 const JacobianInverseTransposed
91 jacobianInverseTransposed(
const LocalCoords& local)
const {
92 return _wrappedGeometry.jacobianInverseTransposed(local);
97 GeometryWrapper(
const HostGeometry& wrappedGeometry)
98 : _wrappedGeometry(wrappedGeometry)
101 const HostGeometry _wrappedGeometry;