Loading [MathJax]/extensions/tex2jax.js

DUNE MultiDomainGrid (2.9)

gridview.hh
1#ifndef DUNE_MULTIDOMAINGRID_GRIDVIEW_HH
2#define DUNE_MULTIDOMAINGRID_GRIDVIEW_HH
3
4#include <dune/grid/common/gridview.hh>
5#include <dune/grid/common/defaultgridview.hh>
6
7namespace Dune {
8
9namespace mdgrid {
10
11template<typename,typename>
12class IntersectionIteratorWrapper;
13
14template<typename GridImp>
15class LevelGridView
16 : public DefaultLevelGridView<GridImp>
17{
18
19 using BaseT = DefaultLevelGridView<GridImp>;
20
21public:
22
23 using typename BaseT::IntersectionIterator;
24
25 LevelGridView(const GridImp& grid, int level)
26 : BaseT(grid,level)
27 {}
28
29 IntersectionIterator ibegin(const typename BaseT::template Codim<0>::Entity& entity) const
30 {
31 return IntersectionIteratorWrapper<
32 const GridImp,
33 typename GridImp::HostGrid::LevelGridView::IntersectionIterator
34 >(
35 this->grid().hostGrid().levelGridView(entity.level()).ibegin(entity.impl().hostEntity())
36 );
37 }
38
39 IntersectionIterator iend(const typename BaseT::template Codim<0>::Entity& entity) const
40 {
41 return IntersectionIteratorWrapper<
42 const GridImp,
43 typename GridImp::HostGrid::LevelGridView::IntersectionIterator
44 >(
45 this->grid().hostGrid().levelGridView(entity.level()).iend(entity.impl().hostEntity())
46 );
47 }
48
49};
50
51template<typename GridImp>
52struct LevelGridViewTraits
53 : public DefaultLevelGridViewTraits<GridImp>
54{
55 typedef LevelGridView<GridImp> GridViewImp;
56};
57
58
59
60template<typename GridImp>
61class LeafGridView
62 : public DefaultLeafGridView<GridImp>
63{
64
65 typedef DefaultLeafGridView<GridImp> BaseT;
66
67public:
68
69 typedef typename BaseT::IntersectionIterator IntersectionIterator;
70
71 LeafGridView(const GridImp& grid)
72 : BaseT(grid)
73 {}
74
75 IntersectionIterator ibegin(const typename BaseT:: template Codim<0>::Entity& entity) const
76 {
77 return IntersectionIteratorWrapper<
78 const GridImp,
79 typename GridImp::HostGrid::LeafGridView::IntersectionIterator
80 >(
81 this->grid().hostGrid().leafGridView().ibegin(entity.impl().hostEntity())
82 );
83 }
84
85 IntersectionIterator iend(const typename BaseT:: template Codim<0>::Entity& entity) const
86 {
87 return IntersectionIteratorWrapper<
88 const GridImp,
89 typename GridImp::HostGrid::LeafGridView::IntersectionIterator
90 >(
91 this->grid().hostGrid().leafGridView().iend(entity.impl().hostEntity())
92 );
93 }
94
95};
96
97template<typename GridImp>
98struct LeafGridViewTraits
99 : public DefaultLeafGridViewTraits<GridImp>
100{
101 typedef LeafGridView<GridImp> GridViewImp;
102};
103
104
105
106} // namespace mdgrid
107
108} // namespace Dune
109
110#endif // DUNE_MULTIDOMAINGRID_GRIDVIEW_HH
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Apr 6, 22:49, 2025)