24#include <cusp/detail/config.h>
25#include <cusp/detail/lu.h>
26#include <cusp/array2d.h>
27#include <cusp/array1d.h>
28#include <cusp/linear_operator.h>
33template <
typename MatrixType,
typename SmootherType,
typename SolverType>
35 public cusp::linear_operator<typename MatrixType::value_type,
36 typename MatrixType::memory_space>
50 cusp::array2d<ValueType,MemorySpace,Orientation>
x;
51 cusp::array2d<ValueType,MemorySpace,Orientation>
b;
52 cusp::array2d<ValueType,MemorySpace,Orientation>
residual;
58 template<
typename Level_Type>
68 template <
typename MatrixType2,
typename SmootherType2,
typename SolverType2>
71 template <
typename Array1,
typename Array2>
74 template <
typename Array1,
typename Array2>
75 void solve(
const Array1& b, Array2& x);
77 template <
typename Array1,
typename Array2,
typename Monitor>
78 void solve(
const Array1& b, Array2& x, Monitor& monitor);
88 template <
typename Array1,
typename Array2>
89 void _solve(
const Array1& b, Array2& x,
const size_t i);
96#include <cusp/block_multilevel.inl>
SmootherType::orientation Orientation
void _solve(const Array1 &b, Array2 &x, const size_t i)
MatrixType::memory_space MemorySpace
double grid_complexity(void)
std::vector< level > levels
double operator_complexity(void)
void operator()(const Array1 &x, Array2 &y)
MatrixType::index_type IndexType
MatrixType::value_type ValueType
void solve(const Array1 &b, Array2 &x, Monitor &monitor)
block_multilevel(const block_multilevel< MatrixType2, SmootherType2, SolverType2 > &M)
void solve(const Array1 &b, Array2 &x)
cusp::array2d< ValueType, MemorySpace, Orientation > x
cusp::array2d< ValueType, MemorySpace, Orientation > residual
level(const Level_Type &level)
cusp::array2d< ValueType, MemorySpace, Orientation > b