5#ifndef DUNE_GRID_COMMON_DEFAULTGRIDVIEW_HH 
    6#define DUNE_GRID_COMMON_DEFAULTGRIDVIEW_HH 
   12#include <dune/grid/common/gridview.hh> 
   17  template< 
class Gr
idImp >
 
   18  class DefaultLevelGridView;
 
   20  template< 
class Gr
idImp >
 
   21  class DefaultLeafGridView;
 
   24  template< 
class Gr
idImp >
 
   25  struct DefaultLevelGridViewTraits
 
   27    typedef DefaultLevelGridView< GridImp > GridViewImp;
 
   30    typedef typename std::remove_const<GridImp>::type Grid;
 
   33    typedef typename Grid :: Traits :: LevelIndexSet IndexSet;
 
   36    typedef typename Grid :: Traits :: LevelIntersection Intersection;
 
   39    typedef typename Grid :: Traits :: LevelIntersectionIterator
 
   43    typedef typename Grid :: Traits :: Communication Communication;
 
   48      typedef typename Grid :: Traits
 
   49      :: template Codim< cd > :: template Partition< All_Partition > :: LevelIterator
 
   52      typedef typename Grid :: Traits :: template Codim< cd > :: Entity Entity;
 
   54      typedef typename Grid :: template Codim< cd > :: Geometry Geometry;
 
   55      typedef typename Grid :: template Codim< cd > :: LocalGeometry
 
   59      template< PartitionIteratorType pit >
 
   63        typedef typename Grid :: template Codim< cd >
 
   69    constexpr static bool conforming = Capabilities :: isLevelwiseConforming< Grid > :: v;
 
   73  template< 
class Gr
idImp >
 
   74  class DefaultLevelGridView
 
   76    typedef DefaultLevelGridView< GridImp > ThisType;
 
   79    typedef DefaultLevelGridViewTraits<GridImp> Traits;
 
   82    typedef typename Traits::Grid 
Grid;
 
   85    typedef typename Traits :: IndexSet 
IndexSet;
 
   94    typedef typename Grid :: Traits :: Communication 
Communication;
 
  100    constexpr static bool conforming = Traits :: conforming;
 
  102    DefaultLevelGridView ( 
const Grid &grid, 
int level )
 
  108    const Grid &grid ()
 const 
  115    const IndexSet &indexSet ()
 const 
  117      return grid().levelIndexSet( level_ );
 
  121    bool isConforming()
 const { 
return bool(Traits::conforming); }
 
  124    int size ( 
int codim )
 const 
  126      return grid().size( level_, codim );
 
  130    int size ( 
const GeometryType &type )
 const 
  132      return grid().size( level_, type );
 
  137    typename Codim< cd > :: Iterator begin ()
 const 
  139      return grid().template lbegin< cd, All_Partition >( level_ );
 
  143    template< 
int cd, PartitionIteratorType pit >
 
  144    typename Codim< cd > :: template Partition< pit > :: Iterator begin ()
 const 
  146      return grid().template lbegin< cd, pit >( level_ );
 
  151    typename Codim< cd > :: Iterator end ()
 const 
  153      return grid().template lend< cd, All_Partition >( level_ );
 
  157    template< 
int cd, PartitionIteratorType pit >
 
  158    typename Codim< cd > :: template Partition< pit > :: Iterator end ()
 const 
  160      return grid().template lend< cd, pit >( level_ );
 
  165    ibegin ( 
const typename Codim< 0 > :: Entity &entity )
 const 
  167      return grid().ilevelbegin(entity);
 
  172    iend ( 
const typename Codim< 0 > :: Entity &entity )
 const 
  174      return grid().ilevelend(entity);
 
  178    const Communication &comm ()
 const 
  180      return grid().comm();
 
  184    int overlapSize(
int codim)
 const 
  186      return grid().overlapSize(level_, codim);
 
  190    int ghostSize(
int codim)
 const 
  192      return grid().ghostSize(level_, codim);
 
  196    template< 
class DataHandleImp, 
class DataType >
 
  197    void communicate ( CommDataHandleIF< DataHandleImp, DataType > &data,
 
  201      return grid().communicate( data, iftype, dir, level_ );
 
  210  template< 
class Gr
idImp >
 
  211  struct DefaultLeafGridViewTraits {
 
  212    typedef DefaultLeafGridView< GridImp > GridViewImp;
 
  215    typedef typename std::remove_const<GridImp>::type Grid;
 
  218    typedef typename Grid :: Traits :: LeafIndexSet IndexSet;
 
  221    typedef typename Grid :: Traits :: LeafIntersection Intersection;
 
  224    typedef typename Grid :: Traits :: LeafIntersectionIterator
 
  225    IntersectionIterator;
 
  228    typedef typename Grid :: Traits :: Communication Communication;
 
  233      typedef typename Grid :: Traits
 
  234      :: template Codim< cd > :: template Partition< All_Partition > :: LeafIterator
 
  237      typedef typename Grid :: Traits :: template Codim< cd > :: Entity Entity;
 
  239      typedef typename Grid :: template Codim< cd > :: Geometry Geometry;
 
  240      typedef typename Grid :: template Codim< cd > :: LocalGeometry
 
  244      template <PartitionIteratorType pit >
 
  248        typedef typename Grid :: template Codim< cd >
 
  254    constexpr static bool conforming = Capabilities :: isLeafwiseConforming< Grid > :: v;
 
  258  template< 
class Gr
idImp >
 
  259  class DefaultLeafGridView
 
  261    typedef DefaultLeafGridView< GridImp > ThisType;
 
  264    typedef DefaultLeafGridViewTraits<GridImp> Traits;
 
  267    typedef typename Traits::Grid 
Grid;
 
  270    typedef typename Traits :: IndexSet 
IndexSet;
 
  279    typedef typename Grid :: Traits :: Communication 
Communication;
 
  285    constexpr static bool conforming = Traits :: conforming;
 
  288    DefaultLeafGridView ( 
const Grid &grid )
 
  293    const Grid &grid ()
 const 
  300    const IndexSet &indexSet ()
 const 
  302      return grid().leafIndexSet();
 
  306    bool isConforming()
 const { 
return bool(Traits::conforming); }
 
  309    int size ( 
int codim )
 const 
  311      return grid().size( codim );
 
  315    int size ( 
const GeometryType &type )
 const 
  317      return grid().size( type );
 
  322    typename Codim< cd > :: Iterator begin ()
 const 
  324      return grid().template leafbegin< cd, All_Partition >();
 
  328    template< 
int cd, PartitionIteratorType pit >
 
  329    typename Codim< cd > :: template Partition< pit > :: Iterator begin ()
 const 
  331      return grid().template leafbegin< cd, pit >();
 
  336    typename Codim< cd > :: Iterator end ()
 const 
  338      return grid().template leafend< cd, All_Partition >();
 
  342    template< 
int cd, PartitionIteratorType pit >
 
  343    typename Codim< cd > :: template Partition< pit > :: Iterator end ()
 const 
  345      return grid().template leafend< cd, pit >();
 
  350    ibegin ( 
const typename Codim< 0 > :: Entity &entity )
 const 
  352      return grid().ileafbegin(entity);
 
  357    iend ( 
const typename Codim< 0 > :: Entity &entity )
 const 
  359      return grid().ileafend(entity);
 
  363    const Communication &comm ()
 const 
  365      return grid().comm();
 
  369    int overlapSize(
int codim)
 const 
  371      return grid().overlapSize(codim);
 
  375    int ghostSize(
int codim)
 const 
  377      return grid().ghostSize(codim);
 
  381    template< 
class DataHandleImp, 
class DataType >
 
  382    void communicate ( CommDataHandleIF< DataHandleImp, DataType > &data,
 
  386      return grid().communicate( data, iftype, dir );
 
Collective communication interface and sequential default implementation.
Definition: communication.hh:100
 
Grid abstract base class.
Definition: grid.hh:375
 
Index Set Interface base class.
Definition: indexidset.hh:78
 
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: intersectioniterator.hh:83
 
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: intersection.hh:164
 
A few common exception classes.
 
A set of traits classes to store static information about grid implementation.
 
Dune namespace.
Definition: alignedallocator.hh:13
 
constexpr std::integral_constant< std::size_t, sizeof...(II)> size(std::integer_sequence< T, II... >)
Return the size of the sequence.
Definition: integersequence.hh:75
 
Define types needed to iterate over entities of a given partition type.
Definition: defaultgridview.hh:246
 
Grid::template Codim< cd >::template Partition< pit >::LeafIterator Iterator
iterator over a given codim and partition type
Definition: defaultgridview.hh:250
 
Codim Structure.
Definition: defaultgridview.hh:283
 
Define types needed to iterate over entities of a given partition type.
Definition: defaultgridview.hh:61
 
Grid::template Codim< cd >::template Partition< pit >::LevelIterator Iterator
iterator over a given codim and partition type
Definition: defaultgridview.hh:65
 
Codim Structure.
Definition: defaultgridview.hh:98
 
Traits for type conversions and type information.