dune-grid 2.8.0
Loading...
Searching...
No Matches
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
10namespace 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 >
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: identitygrid.hh:35
Grid::HostGrid HostGrid
type of HostGrid
Definition: hostgridaccess.hh:47
HostGrid::Traits::LevelIntersection HostLevelIntersection
type of the host level intersection
Definition: hostgridaccess.hh:73
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
GeometryGrid< HG, CoordFunction, Allocator > Grid
Definition: hostgridaccess.hh:44
Grid::Traits::LeafIntersection LeafIntersection
type of the GeometryGrid leaf intersection
Definition: hostgridaccess.hh:66
HostGrid::Traits::LeafIntersection HostLeafIntersection
type of the host leaf intersection
Definition: hostgridaccess.hh:71
static const HostGrid & hostGrid(const Grid &grid)
Get underlying HostGrid.
Definition: hostgridaccess.hh:79
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
HG HostGrid
type of HostGrid
Definition: hostgridaccess.hh:123
IdentityGrid< HG > Grid
Definition: hostgridaccess.hh:120
static const Codim< codim >::HostEntity & hostEntity(const typename Codim< codim >::Entity &entity)
Definition: hostgridaccess.hh:169
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
static const HostLeafIntersection & hostIntersection(const LeafIntersection &intersection)
Definition: hostgridaccess.hh:175
HostGrid::Traits::LeafIntersection HostLeafIntersection
type of the host leaf intersection
Definition: hostgridaccess.hh:147
static const Codim< Entity::codimension >::HostEntity & hostEntity(const Entity &entity)
Definition: hostgridaccess.hh:162
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
Grid::template Codim< codim >::Entity Entity
type of the IdGrid entity
Definition: hostgridaccess.hh:135
HostGrid::template Codim< codim >::Entity HostEntity
type of the host entity
Definition: hostgridaccess.hh:138