dune-grid-glue  2.9
rangegenerators.hh
Go to the documentation of this file.
1 // SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
2 // SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-GPL-2.0-only-with-dune-grid-glue-exception
3 #ifndef DUNE_GRIDGLUE_ADAPTER_RANGEGENERATORS_HH
4 #define DUNE_GRIDGLUE_ADAPTER_RANGEGENERATORS_HH
5 
6 #include <dune/common/iteratorrange.hh>
7 
8 namespace Dune {
9 namespace GridGlue {
10 
14 template<bool reverse>
15 struct Reverse
16  : std::integral_constant<bool, reverse>
17 {
18  typedef Reverse type;
19 
20  constexpr
22  { return {}; }
23 };
24 
25 #ifdef DOXYGEN
26 
32 
66 template<...>
67 IteratorRange<...>
68 intersections(const GridGlue<...>& glue, const Reverse<...>& reverse = !reversed);
69 
70 #else
71 
72 namespace {
73 const Reverse<true> reversed = {};
74 } /* namespace */
75 
76 template<typename P0, typename P1, bool reverse = false>
77 IteratorRange< typename GridGlue<P0, P1>::template IntersectionIterator<reverse ? 1 : 0> >
78 intersections(const GridGlue<P0, P1>& glue, const Reverse<reverse>& = {})
79 {
80  const static int side = reverse ? 1 : 0;
81  return {glue.template ibegin<side>(), glue.template iend<side>()};
82 }
83 
84 #endif // DOXYGEN
85 
86 } /* namespace GridGlue */
87 } /* namespace Dune */
88 
89 #endif
Definition: gridglue.hh:37
IteratorRange<... > intersections(const GridGlue<... > &glue, const Reverse<... > &reverse=!reversed)
Iterate over all intersections of a GridGlue.
sequential adapter to couple two grids at specified close together boundaries
Definition: gridglue.hh:54
IteratorRange<... > intersections(const GridGlue<... > &glue, const Reverse<... > &reverse=!reversed)
Iterate over all intersections of a GridGlue.
Definition: rangegenerators.hh:17
const Reverse< true > reversed
Definition: rangegenerators.hh:31
constexpr Reverse<!reverse > operator!() const
Definition: rangegenerators.hh:21
Reverse type
Definition: rangegenerators.hh:18