dune-grid-glue  2.4-git
rangegenerators.hh
Go to the documentation of this file.
1 #ifndef DUNE_GRIDGLUE_ADAPTER_RANGEGENERATORS_HH
2 #define DUNE_GRIDGLUE_ADAPTER_RANGEGENERATORS_HH
3 
4 #include <dune/common/version.hh>
5 
6 #if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
7 # include <dune/common/iteratorrange.hh>
8 #endif
9 
10 namespace Dune {
11 namespace GridGlue {
12 
16 template<bool reverse>
17 struct Reverse
18  : std::integral_constant<bool, reverse>
19 {
20  typedef Reverse type;
21 
22  constexpr
24  { return {}; }
25 };
26 
27 #ifdef DOXYGEN
28 
34 
68 template<...>
69 IteratorRange<...>
70 intersections(const GridGlue<...>& glue, const Reverse<...>& reverse = !reversed);
71 
72 #else
73 
74 namespace {
75 const Reverse<true> reversed = {};
76 } /* namespace */
77 
78 #if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
79 
80 template<typename P0, typename P1, bool reverse = false>
81 IteratorRange<typename GridGlueView<P0, P1, reverse ? 1 : 0>::IntersectionIterator>
82 intersections(const GridGlue<P0, P1>& glue, const Reverse<reverse>& = {})
83 {
84  const static int side = reverse ? 1 : 0;
85  return {glue.template ibegin<side>(), glue.template iend<side>()};
86 }
87 
88 #endif
89 
90 #endif // DOXYGEN
91 
92 } /* namespace GridGlue */
93 } /* namespace Dune */
94 
95 #endif
Reverse type
Definition: rangegenerators.hh:20
constexpr Reverse<!reverse > operator!() const
Definition: rangegenerators.hh:23
Definition: rangegenerators.hh:17
IteratorRange<...> intersections(const GridGlue<...> &glue, const Reverse<...> &reverse=!reversed)
Iterate over all intersections of a GridGlue.
Definition: gridglue.hh:33
const Reverse< true > reversed
Definition: rangegenerators.hh:33
sequential adapter to couple two grids at specified close together boundaries
Definition: gridglue.hh:44