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)