1#ifndef DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_GEOMETRY_HH
2#define DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_GEOMETRY_HH
4#include <dune/grid/common/geometry.hh>
12template<
int mydim,
int coorddim,
typename Gr
idImp>
16 template<
int,
int,
typename>
17 friend class EntityWrapperBase;
19 template<
int,
int,
typename>
20 friend class EntityWrapper;
22 template<
typename,
typename,
typename>
23 friend class IntersectionWrapper;
27 typedef typename GridImp::ctype ctype;
28 static const int dimension = GridImp::dimension;
29 static const int dimensionworld = GridImp::dimensionworld;
30 static const int mydimension = mydim;
31 static const int coorddimension = coorddim;
35 typedef typename GridImp::HostGrid::Traits::template Codim<dimension-mydim>::Geometry HostGeometry;
39 typedef typename HostGeometry::GlobalCoordinate GlobalCoordinate;
40 typedef typename HostGeometry::LocalCoordinate LocalCoordinate;
41 typedef typename HostGeometry::Volume Volume;
42 typedef typename HostGeometry::JacobianInverseTransposed JacobianInverseTransposed;
43 typedef typename HostGeometry::JacobianTransposed JacobianTransposed;
44 typedef typename HostGeometry::JacobianInverse JacobianInverse;
45 typedef typename HostGeometry::Jacobian Jacobian;
47 GeometryType type()
const {
48 return _hostGeometry.type();
52 return _hostGeometry.corners();
56 return _hostGeometry.affine();
59 GlobalCoordinate corner(
int i)
const {
60 return _hostGeometry.corner(i);
63 GlobalCoordinate global(
const LocalCoordinate& local)
const {
64 return _hostGeometry.global(local);
67 LocalCoordinate local(
const GlobalCoordinate& global)
const {
68 return _hostGeometry.local(global);
71 bool checkInside(
const LocalCoordinate& local)
const {
72 return _hostGeometry.checkInside(local);
75 Volume integrationElement(
const LocalCoordinate& local)
const {
76 return _hostGeometry.integrationElement(local);
79 Volume volume()
const {
80 return _hostGeometry.volume();
83 GlobalCoordinate center()
const {
84 return _hostGeometry.center();
87 JacobianTransposed jacobianTransposed(
const LocalCoordinate& local)
const {
88 return _hostGeometry.jacobianTransposed(local);
91 JacobianInverseTransposed jacobianInverseTransposed(
const LocalCoordinate& local)
const {
92 return _hostGeometry.jacobianInverseTransposed(local);
95 Jacobian jacobian(
const LocalCoordinate& local)
const
97 return _hostGeometry.jacobian(local);
100 JacobianInverse jacobianInverse(
const LocalCoordinate& local)
const
102 return _hostGeometry.jacobianInverse(local);
108 const HostGeometry _hostGeometry;
110 GeometryWrapper(
const HostGeometry& hostGeometry)
111 : _hostGeometry(hostGeometry)