AMDiS  0.3
The Adaptive Multi-Dimensional Simulation Toolbox
MultiIndex.hpp
1 #pragma once
2 
3 #include <dune/common/reservedvector.hh>
4 #include <dune/functions/functionspacebases/flatmultiindex.hh>
5 
6 namespace AMDiS
7 {
8  namespace Traits
9  {
10  template <class T>
11  struct IsFlatIndex
12  : std::is_integral<T> {};
13 
14  template <class I>
15  struct IsFlatIndex<Dune::Functions::FlatMultiIndex<I> >
16  : std::true_type {};
17 
18  template <class I>
19  struct IsFlatIndex<Dune::ReservedVector<I, 1> >
20  : std::true_type {};
21  }
22 
23  inline std::size_t flatMultiIndex(std::size_t idx)
24  {
25  return idx;
26  }
27 
28  inline std::size_t flatMultiIndex(Dune::Functions::FlatMultiIndex<std::size_t> const& idx)
29  {
30  return idx[0];
31  }
32 
33  inline std::size_t flatMultiIndex(Dune::ReservedVector<std::size_t,1> const& idx)
34  {
35  return idx[0];
36  }
37 
38 } // end namespace AMDiS
Definition: MultiIndex.hpp:11
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6