dune-grid  2.8.0
hostgridaccess.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_GRID_HOSTGRIDACCESS_HH
4 #define DUNE_GRID_HOSTGRIDACCESS_HH
5 
6 #include <string>
7 
9 
10 namespace Dune
11 {
12 
13  // External Forward Declarations
14  // -----------------------------
15 
16  template< class HostGrid, class CoordFunction, class Allocator >
17  class GeometryGrid;
18 
19  template< class >
20  class IdentityGrid;
21 
22 
23  // HostGridAccess
24  // --------------
25 
26  template< class Grid >
27  struct HostGridAccess;
28 
29 
30 
38  template< class HG, class CoordFunction, class Allocator >
39  struct HostGridAccess< GeometryGrid< HG, CoordFunction, Allocator > >
40  {
45 
47  typedef typename Grid::HostGrid HostGrid;
48 
55  template< int codim >
56  struct Codim
57  {
59  typedef typename Grid::template Codim< codim >::Entity Entity;
60 
62  typedef typename HostGrid::template Codim< codim >::Entity HostEntity;
63  };
64 
66  typedef typename Grid::Traits::LeafIntersection LeafIntersection;
68  typedef typename Grid::Traits::LevelIntersection LevelIntersection;
69 
71  typedef typename HostGrid::Traits::LeafIntersection HostLeafIntersection;
73  typedef typename HostGrid::Traits::LevelIntersection HostLevelIntersection;
74 
79  static const HostGrid &hostGrid ( const Grid &grid )
80  {
81  return grid.hostGrid();
82  }
83 
84  template< class Entity >
85  static const typename Codim< Entity::codimension >::HostEntity &
86  hostEntity ( const Entity &entity )
87  {
88  return hostEntity< Entity::codimension >( entity );
89  }
90 
91  template< int codim >
92  static const typename Codim< codim >::HostEntity &
93  hostEntity ( const typename Codim< codim >::Entity &entity )
94  {
95  return entity.impl().hostEntity();
96  }
97 
98  template< class HostIntersection >
99  static const HostIntersection &
101  {
102  return intersection.impl().hostIntersection();
103  }
104  };
105 
106 
114  template< class HG >
115  struct HostGridAccess< IdentityGrid< HG > >
116  {
121 
123  typedef HG HostGrid;
124 
131  template< int codim >
132  struct Codim
133  {
135  typedef typename Grid::template Codim< codim >::Entity Entity;
136 
138  typedef typename HostGrid::template Codim< codim >::Entity HostEntity;
139  };
140 
145 
147  typedef typename HostGrid::Traits::LeafIntersection HostLeafIntersection;
149  typedef typename HostGrid::Traits::LevelIntersection HostLevelIntersection;
150 
155  static const HostGrid &hostGrid ( const Grid &grid )
156  {
157  return grid.getHostGrid();
158  }
159 
160  template< class Entity >
161  static const typename Codim< Entity::codimension >::HostEntity &
162  hostEntity ( const Entity &entity )
163  {
164  return hostEntity< Entity::codimension >( entity );
165  }
166 
167  template< int codim >
168  static const typename Codim< codim >::HostEntity &
169  hostEntity ( const typename Codim< codim >::Entity &entity )
170  {
171  return *entity.impl().hostEntity_;
172  }
173 
174  static const HostLeafIntersection &
175  hostIntersection ( const LeafIntersection &intersection )
176  {
177  return *intersection.impl().hostIterator_;
178  }
179 
180  static const HostLevelIntersection &
181  hostIntersection ( const LevelIntersection &intersection )
182  {
183  return *intersection.impl().hostIterator_;
184  }
185  };
186 
187 } // namespace Dune
188 
189 #endif // #ifndef DUNE_GRID_HOSTGRIDACCESS_HH
Include standard header files.
Definition: agrid.hh:58
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: common/intersection.hh:162
Wrapper class for entities.
Definition: common/entity.hh:64
GridFamily::Traits::LeafIntersection LeafIntersection
A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
Definition: common/grid.hh:459
GridFamily::Traits::LevelIntersection LevelIntersection
A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimensio...
Definition: common/grid.hh:464
grid wrapper replacing the geometries
Definition: geometrygrid/grid.hh:84
const HostGrid & hostGrid() const
obtain constant reference to the host grid
Definition: geometrygrid/grid.hh:541
Definition: geometrygrid/intersection.hh:20
Provides a meta grid that is identical to its host.
Definition: identitygrid.hh:86
HostGridType & getHostGrid() const
Returns the hostgrid this IdentityGrid lives in.
Definition: identitygrid.hh:392
provides access to host grid objects from GeometryGrid
Definition: hostgridaccess.hh:27
static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity &entity)
Definition: hostgridaccess.hh:86
static const Codim< codim >::HostEntity & hostEntity(const typename Codim< codim >::Entity &entity)
Definition: hostgridaccess.hh:93
static const HostIntersection & hostIntersection(const Intersection< const Grid, GeoGrid::Intersection< const Grid, HostIntersection > > &intersection)
Definition: hostgridaccess.hh:100
Grid::HostGrid HostGrid
type of HostGrid
Definition: hostgridaccess.hh:47
HostGrid::Traits::LevelIntersection HostLevelIntersection
type of the host level intersection
Definition: hostgridaccess.hh:73
GeometryGrid< HG, CoordFunction, Allocator > Grid
Definition: hostgridaccess.hh:44
Grid::Traits::LeafIntersection LeafIntersection
type of the GeometryGrid leaf intersection
Definition: hostgridaccess.hh:66
static const HostGrid & hostGrid(const Grid &grid)
Get underlying HostGrid.
Definition: hostgridaccess.hh:79
HostGrid::Traits::LeafIntersection HostLeafIntersection
type of the host leaf intersection
Definition: hostgridaccess.hh:71
Grid::Traits::LevelIntersection LevelIntersection
type of the GeometryGrid level intersection
Definition: hostgridaccess.hh:68
HostGrid::template Codim< codim >::Entity HostEntity
type of the host entity
Definition: hostgridaccess.hh:62
Grid::template Codim< codim >::Entity Entity
type of the GeometryGrid entity
Definition: hostgridaccess.hh:59
Grid::Traits::LeafIntersection LeafIntersection
type of the IdGrid leaf intersection
Definition: hostgridaccess.hh:142
static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity &entity)
Definition: hostgridaccess.hh:162
static const HostLeafIntersection & hostIntersection(const LeafIntersection &intersection)
Definition: hostgridaccess.hh:175
HG HostGrid
type of HostGrid
Definition: hostgridaccess.hh:123
IdentityGrid< HG > Grid
Definition: hostgridaccess.hh:120
HostGrid::Traits::LevelIntersection HostLevelIntersection
type of the host level intersection
Definition: hostgridaccess.hh:149
Grid::Traits::LevelIntersection LevelIntersection
type of the IdGrid level intersection
Definition: hostgridaccess.hh:144
HostGrid::Traits::LeafIntersection HostLeafIntersection
type of the host leaf intersection
Definition: hostgridaccess.hh:147
static const Codim< codim >::HostEntity & hostEntity(const typename Codim< codim >::Entity &entity)
Definition: hostgridaccess.hh:169
static const HostLevelIntersection & hostIntersection(const LevelIntersection &intersection)
Definition: hostgridaccess.hh:181
static const HostGrid & hostGrid(const Grid &grid)
Get underlying HostGrid.
Definition: hostgridaccess.hh:155
HostGrid::template Codim< codim >::Entity HostEntity
type of the host entity
Definition: hostgridaccess.hh:138
Grid::template Codim< codim >::Entity Entity
type of the IdGrid entity
Definition: hostgridaccess.hh:135