1#ifndef DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_LOCALGEOMETRY_HH 
    2#define DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_LOCALGEOMETRY_HH 
    4#include <dune/grid/common/geometry.hh> 
   12template<
int mydim, 
int coorddim, 
typename Gr
idImp>
 
   13class LocalGeometryWrapper
 
   16  template<
int,
int,
typename>
 
   17  friend class EntityWrapper;
 
   19  template<
typename,
typename,
typename>
 
   20  friend class IntersectionWrapper;
 
   24  typedef typename GridImp::ctype ctype;
 
   25  static const int dimension = GridImp::dimension;
 
   26  static const int dimensionworld = GridImp::dimensionworld;
 
   27  static const int mydimension = mydim;
 
   28  static const int coorddimension = coorddim;
 
   32  typedef typename GridImp::HostGrid::Traits::template Codim<dimension-mydim>::LocalGeometry HostLocalGeometry; 
 
   36  typedef typename HostLocalGeometry::GlobalCoordinate GlobalCoordinate;
 
   37  typedef typename HostLocalGeometry::LocalCoordinate LocalCoordinate;
 
   38  typedef typename HostLocalGeometry::Volume Volume;
 
   39  typedef typename HostLocalGeometry::JacobianInverseTransposed JacobianInverseTransposed;
 
   40  typedef typename HostLocalGeometry::JacobianTransposed JacobianTransposed;
 
   41  typedef typename HostLocalGeometry::JacobianInverse JacobianInverse;
 
   42  typedef typename HostLocalGeometry::Jacobian Jacobian;
 
   44  GeometryType type()
 const {
 
   45    return _hostLocalGeometry.type();
 
   49    return _hostLocalGeometry.corners();
 
   53    return _hostLocalGeometry.affine();
 
   56  GlobalCoordinate corner(
int i)
 const {
 
   57    return _hostLocalGeometry.corner(i);
 
   60  GlobalCoordinate global(
const LocalCoordinate& local)
 const {
 
   61    return _hostLocalGeometry.global(local);
 
   64  LocalCoordinate local(
const GlobalCoordinate& global)
 const {
 
   65    return _hostLocalGeometry.local(global);
 
   68  bool checkInside(
const LocalCoordinate& local)
 const {
 
   69    return _hostLocalGeometry.checkInside(local);
 
   72  Volume integrationElement(
const LocalCoordinate& local)
 const {
 
   73    return _hostLocalGeometry.integrationElement(local);
 
   76  Volume volume()
 const {
 
   77    return _hostLocalGeometry.volume();
 
   80  GlobalCoordinate center()
 const {
 
   81    return _hostLocalGeometry.center();
 
   84  JacobianTransposed jacobianTransposed(
const LocalCoordinate& local)
 const {
 
   85    return _hostLocalGeometry.jacobianTransposed(local);
 
   88  JacobianInverseTransposed jacobianInverseTransposed(
const LocalCoordinate& local)
 const {
 
   89    return _hostLocalGeometry.jacobianInverseTransposed(local);
 
   92  Jacobian jacobian(
const LocalCoordinate& local)
 const 
   94    return _hostLocalGeometry.jacobian(local);
 
   97  JacobianInverse jacobianInverse(
const LocalCoordinate& local)
 const 
   99    return _hostLocalGeometry.jacobianInverse(local);
 
  104  const HostLocalGeometry _hostLocalGeometry;
 
  106  LocalGeometryWrapper(
const HostLocalGeometry& hostLocalGeometry)
 
  107    : _hostLocalGeometry(hostLocalGeometry)