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;