3#ifndef DUNE_POLYHEDRALGRID_GRIDVIEW_HH
4#define DUNE_POLYHEDRALGRID_GRIDVIEW_HH
7#include <dune/common/typetraits.hh>
10#include <dune/grid/common/capabilities.hh>
11#include <dune/grid/common/gridview.hh>
14#include <opm/grid/polyhedralgrid/indexset.hh>
15#include <opm/grid/polyhedralgrid/intersection.hh>
16#include <opm/grid/polyhedralgrid/intersectioniterator.hh>
17#include <opm/grid/polyhedralgrid/iterator.hh>
25 template<
int dim,
int dimworld,
typename coord_t, PartitionIteratorType defaultpitype >
26 class PolyhedralGridView;
28 template<
int dim,
int dimworld,
typename coord_t, PartitionIteratorType ptype >
29 struct PolyhedralGridViewTraits;
35 template<
int dim,
int dimworld,
typename coord_t, PartitionIteratorType defaultpitype >
45 typedef typename Traits::Intersection Intersection;
46 typedef typename Traits::IntersectionIterator IntersectionIterator;
48#if DUNE_VERSION_NEWER(DUNE_GRID, 2, 7)
49 using Communication =
typename Traits::Communication;
50 using CollectiveCommunication = Communication;
52 using MPICommunicator =
typename MPIHelper::MPICommunicator;
53 using CollectiveCommunication = Dune::CollectiveCommunication<MPICommunicator>;
54 using Communication = CollectiveCommunication;
58 :
public Traits::template
Codim< codim >
61 static const bool conforming = Traits :: conforming;
62 static const PartitionIteratorType pitype = Traits :: pitype;
70 const Grid &grid ()
const
76 const IndexSet &indexSet ()
const
78 return grid().leafIndexSet();
81 bool isConforming()
const {
return bool(conforming); }
83 int size (
int codim )
const
85 return grid().
size( codim );
88 int size (
const GeometryType &type )
const
90 return grid().
size( type );
94 typename Codim< codim >::Iterator begin ()
const
96 return begin< codim, defaultpitype >();
99 template<
int codim, PartitionIteratorType pit >
100 typename Codim< codim >::template Partition< pit >::Iterator begin ()
const
102 typedef typename Traits::template Codim< codim >::template Partition< pit >::IteratorImpl Impl;
103 return Impl( grid().extraData(),
true );
106 template<
int codim >
107 typename Codim< codim >::Iterator end ()
const
109 return end< codim, defaultpitype >();
112 template<
int codim, PartitionIteratorType pit >
113 typename Codim< codim >::template Partition< pit >::Iterator end ()
const
115 typedef typename Traits::template Codim< codim >::template Partition< pit >::IteratorImpl Impl;
116 return Impl( grid().extraData(),
false );
119 IntersectionIterator ibegin (
const typename Codim< 0 >::Entity &entity )
const
121 typedef typename Traits::IntersectionIteratorImpl IntersectionIteratorImpl;
122 return IntersectionIteratorImpl( grid().extraData(), entity.seed(),
true);
125 IntersectionIterator iend (
const typename Codim< 0 >::Entity &entity )
const
127 typedef typename Traits::IntersectionIteratorImpl IntersectionIteratorImpl;
128 return IntersectionIteratorImpl( grid().extraData(), entity.seed(),
false);
131 const CollectiveCommunication &comm ()
const
133 return grid().
comm();
136 int overlapSize (
int codim )
const
141 int ghostSize (
int codim )
const
146 template<
class DataHandle,
class Data >
147 void communicate ( CommDataHandleIF< DataHandle, Data > ,
149 CommunicationDirection )
const
160 template<
int dim,
int dimworld,
typename coord_t, PartitionIteratorType ptype >
164 static const PartitionIteratorType pitype = ptype;
172 typedef Dune::Intersection< const Grid, IntersectionImpl > Intersection;
173 typedef Dune::IntersectionIterator< const Grid, IntersectionIteratorImpl, IntersectionImpl > IntersectionIterator;
175 using Communication =
typename Grid::Communication;
176 using CollectiveCommunication = Communication;
178 template<
int codim >
181 typedef typename Grid::Traits::template Codim< codim >::Entity Entity;
182 typedef typename Grid::Traits::template Codim< codim >::EntityPointer EntityPointer;
184 typedef typename Grid::template Codim< codim >::Geometry Geometry;
185 typedef typename Grid::template Codim< codim >::LocalGeometry LocalGeometry;
187 template< PartitionIteratorType pit >
191 typedef Dune::EntityIterator< codim, const Grid, IteratorImpl > Iterator;
194 typedef typename Partition< pitype >::Iterator Iterator;
197 static const bool conforming =
false;
Definition: indexset.hh:25
Definition: intersectioniterator.hh:16
Definition: intersection.hh:20
Definition: iterator.hh:21
Definition: gridview.hh:37
identical grid wrapper
Definition: grid.hh:163
int ghostSize(int codim) const
obtain size of ghost region for the leaf grid
Definition: grid.hh:634
int size(int, int codim) const
obtain number of entites on a level
Definition: grid.hh:437
const CommunicationType & comm() const
obtain CollectiveCommunication object
Definition: grid.hh:721
int overlapSize(int) const
obtain size of overlap region for the leaf grid
Definition: grid.hh:625
Copyright 2019 Equinor AS.
Definition: CartesianIndexMapper.hpp:10
Definition: gridview.hh:189
Definition: gridview.hh:180
Definition: gridview.hh:162
Definition: gridview.hh:59