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 typename GridImp::HostGrid::Traits::template Codim<dimension-mydim>::Geometry HostGeometry;
40 typedef typename HostGeometry::GlobalCoordinate GlobalCoordinate;
41 typedef typename HostGeometry::LocalCoordinate LocalCoordinate;
42 typedef typename HostGeometry::Volume Volume;
43 typedef typename HostGeometry::JacobianInverseTransposed JacobianInverseTransposed;
44 typedef typename HostGeometry::JacobianTransposed JacobianTransposed;
45 typedef typename HostGeometry::JacobianInverse JacobianInverse;
46 typedef typename HostGeometry::Jacobian Jacobian;
48 GeometryType type()
const {
49 return _wrappedGeometry.type();
53 return _wrappedGeometry.corners();
57 return _wrappedGeometry.affine();
60 GlobalCoordinate corner(
int i)
const {
61 return _wrappedGeometry.corner(i);
64 GlobalCoordinate global(
const LocalCoordinate& local)
const {
65 return _wrappedGeometry.global(local);
68 LocalCoordinate local(
const GlobalCoordinate& global)
const {
69 return _wrappedGeometry.local(global);
72 bool checkInside(
const LocalCoordinate& local)
const {
73 return _wrappedGeometry.checkInside(local);
76 Volume integrationElement(
const LocalCoordinate& local)
const {
77 return _wrappedGeometry.integrationElement(local);
80 Volume volume()
const {
81 return _wrappedGeometry.volume();
84 GlobalCoordinate center()
const {
85 return _wrappedGeometry.center();
88 JacobianTransposed jacobianTransposed(
const LocalCoordinate& local)
const {
89 return _wrappedGeometry.jacobianTransposed(local);
92 JacobianInverseTransposed jacobianInverseTransposed(
const LocalCoordinate& local)
const {
93 return _wrappedGeometry.jacobianInverseTransposed(local);
96 Jacobian jacobian(
const LocalCoordinate& local)
const
98 return _wrappedGeometry.jacobian(local);
101 JacobianInverse jacobianInverse(
const LocalCoordinate& local)
const
103 return _wrappedGeometry.jacobianInverse(local);
108 GeometryWrapper(
const HostGeometry& wrappedGeometry)
109 : _wrappedGeometry(wrappedGeometry)
112 const HostGeometry _wrappedGeometry;