1#ifndef DUNE_MULTIDOMAINGRID_LOCALGEOMETRY_HH
2#define DUNE_MULTIDOMAINGRID_LOCALGEOMETRY_HH
4#include <dune/grid/common/geometry.hh>
11template<
int mydim,
int coorddim,
typename Gr
idImp>
12class LocalGeometryWrapper
15 template<
int,
int,
typename>
16 friend class EntityWrapper;
18 template<
typename,
typename>
19 friend class IntersectionWrapper;
21 template<
typename,
typename,
typename,
typename>
22 friend class SubDomainInterface;
26 typedef typename GridImp::ctype ctype;
27 static const int dimension = GridImp::dimension;
28 static const int dimensionworld = GridImp::dimensionworld;
29 static const int mydimension = mydim;
30 static const int coorddimension = coorddim;
34 typedef FieldVector<ctype,coorddimension> GlobalCoords;
35 typedef FieldVector<ctype,mydimension> LocalCoords;
36 typedef typename GridImp::HostGrid::Traits::template Codim<dimension-mydim>::LocalGeometry HostLocalGeometry;
40 typedef typename HostLocalGeometry::JacobianInverseTransposed JacobianInverseTransposed;
41 typedef typename HostLocalGeometry::JacobianTransposed JacobianTransposed;
43 GeometryType type()
const {
44 return _wrappedLocalGeometry.type();
48 return _wrappedLocalGeometry.corners();
52 return _wrappedLocalGeometry.affine();
55 GlobalCoords corner(
int i)
const {
56 return _wrappedLocalGeometry.corner(i);
59 GlobalCoords global(
const LocalCoords& local)
const {
60 return _wrappedLocalGeometry.global(local);
63 LocalCoords local(
const GlobalCoords& global)
const {
64 return _wrappedLocalGeometry.local(global);
67 bool checkInside(
const LocalCoords& local)
const {
68 return _wrappedLocalGeometry.checkInside(local);
71 ctype integrationElement(
const LocalCoords& local)
const {
72 return _wrappedLocalGeometry.integrationElement(local);
75 ctype volume()
const {
76 return _wrappedLocalGeometry.volume();
79 GlobalCoords center()
const {
80 return _wrappedLocalGeometry.center();
83 const JacobianTransposed
84 jacobianTransposed(
const LocalCoords& local)
const {
85 return _wrappedLocalGeometry.jacobianTransposed(local);
88 const JacobianInverseTransposed
89 jacobianInverseTransposed(
const LocalCoords& local)
const {
90 return _wrappedLocalGeometry.jacobianInverseTransposed(local);
95 const HostLocalGeometry _wrappedLocalGeometry;
97 LocalGeometryWrapper(
const HostLocalGeometry& wrappedLocalGeometry)
98 : _wrappedLocalGeometry(wrappedLocalGeometry)