3 #ifndef DUNE_PDELAB_BACKEND_ISTL_UTILITY_HH
4 #define DUNE_PDELAB_BACKEND_ISTL_UTILITY_HH
6 #include <dune/common/typetraits.hh>
33 const V&
raw(
const V& v)
47 template<
typename GFS,
typename C>
54 template<
typename GFS,
typename C>
61 template<
typename GFSU,
typename GFSV,
typename C,
typename Stats>
62 typename ISTLMatrixContainer<GFSU,GFSV,C,Stats>::Container&
63 raw(ISTLMatrixContainer<GFSU,GFSV,C,Stats>& m)
68 template<
typename GFSU,
typename GFSV,
typename C,
typename Stats>
69 const typename ISTLMatrixContainer<GFSU,GFSV,C,Stats>::Container&
70 raw(
const ISTLMatrixContainer<GFSU,GFSV,C,Stats>& m)
75 template<
typename GFS,
typename C>
76 struct raw_type<ISTLBlockVectorContainer<GFS,C> >
81 template<
typename GFSU,
typename GFSV,
typename C,
typename Stats>
82 struct raw_type<ISTLMatrixContainer<GFSU,GFSV,C,Stats> >
94 template<
typename T, std::
size_t depth,
typename Tag>
97 template<
typename T, std::
size_t depth>
98 struct nesting_depth<T,depth,tags::block_vector>
99 :
public nesting_depth<typename T::block_type,depth+1,typename tags::container<typename T::block_type>::type::base_tag>
102 template<
typename T, std::
size_t depth>
103 struct nesting_depth<T,depth,tags::dynamic_vector>
104 :
public integral_constant<std::size_t,depth+1>
107 template<
typename T, std::
size_t depth>
108 struct nesting_depth<T,depth,tags::field_vector>
109 :
public integral_constant<std::size_t,depth+1>
112 template<
typename T, std::
size_t depth>
113 struct nesting_depth<T,depth,tags::bcrs_matrix>
114 :
public nesting_depth<typename T::block_type,depth+1,typename tags::container<typename T::block_type>::type::base_tag>
117 template<
typename T, std::
size_t depth>
118 struct nesting_depth<T,depth,tags::dynamic_matrix>
119 :
public integral_constant<std::size_t,depth+1>
122 template<
typename T, std::
size_t depth>
123 struct nesting_depth<T,depth,tags::field_matrix>
124 :
public integral_constant<std::size_t,depth+1>
138 :
public impl::nesting_depth<T,0,typename tags::container<T>::type::base_tag>
145 #endif // DUNE_PDELAB_BACKEND_ISTL_UTILITY_HH
TMP for figuring out the depth up to which ISTL containers are nested.
Definition: backend/istl/utility.hh:137
Returns the raw ISTL type associated with C, or C itself it is already an ISTL type.
Definition: backend/istl/utility.hh:40
C Container
Definition: istlvectorbackend.hh:30
Container & base()
Definition: istlvectorbackend.hh:248
C type
Definition: backend/istl/utility.hh:42
V & raw(V &v)
Returns the raw ISTL object associated with v, or v itself it is already an ISTL object.
Definition: backend/istl/utility.hh:26
Definition: istlvectorbackend.hh:24