34 #ifndef __H__UG__MARTIN_ALGEBRA__BLOCKS__
35 #define __H__UG__MARTIN_ALGEBRA__BLOCKS__
41 template <
typename t>
struct block_traits;
47 template<
typename TYPE>
51 template<
typename TYPE>
60 template<
typename T>
inline double &
BlockRef(T &vec,
size_t i);
62 template<
typename T>
inline const double &
BlockRef(
const T &vec,
size_t i);
66 template<
typename T>
inline double &
BlockRef(T &mat,
size_t i,
size_t j);
68 template<
typename T>
inline const double &
BlockRef(
const T &mat,
size_t i,
size_t j);
74 template<
typename T>
inline void SetSize(T &t,
size_t a,
size_t b);
77 template<
typename T>
inline void SetSize(T &t,
size_t a);
80 template<
typename T>
inline size_t GetSize(
const T &t);
82 template<
typename T>
inline size_t GetRows(
const T &t);
84 template<
typename T>
inline size_t GetCols(
const T &t);
109 enum { static_num_rows = 1};
110 enum { static_num_cols = 1};
111 enum { static_size = 1 };
152 template<
typename TMat,
typename TVec>
double number
Definition: types.h:124
size_t GetCols(const T &t)
bool GetInverse(block_traits< T >::inverse_type &inv, const T &m)
double & BlockRef(T &vec, size_t i)
Definition: blocks.h:66
void SetSize(T &t, size_t a, size_t b)
size_t GetRows(const T &t)
double BlockNorm2(const TYPE &v)
Definition: blocks.h:51
bool InverseMatMult(number &dest, const double &beta, const TMat &mat, const TVec &vec)
you can implement this function with GetInverse and MatMult
size_t GetSize(const T &t)
double BlockNorm(const TYPE &v)
Definition: blocks.h:57
T1 ReturnType
Definition: smallalgebra_interface.h:120
Definition: smallalgebra_interface.h:42
T inverse_type
Definition: smallalgebra_interface.h:102
T vec_type
Definition: smallalgebra_interface.h:98
Definition: communication_policies.h:58
@ is_static
Definition: communication_policies.h:60