35class make_block_solver
39 typedef typename Precond::backend_type backend_type;
40 typedef typename backend_type::value_type value_type;
41 typedef typename backend_type::params backend_params;
42 typedef typename backend_type::vector vector;
43 typedef typename math::scalar_of<value_type>::type scalar_type;
47 template <
class Matrix>
50 const params& prm = params(),
51 const backend_params& bprm = backend_params())
53 S = std::make_shared<Solver>(context, adapter::block_matrix<value_type>(A), prm, bprm);
56 template <
class Matrix,
class Vec1,
class Vec2>
59 auto F = backend::reinterpret_as_rhs<value_type>(rhs);
60 auto X = backend::reinterpret_as_rhs<value_type>(x);
65 template <
class Vec1,
class Vec2>
68 auto F = backend::reinterpret_as_rhs<value_type>(rhs);
69 auto X = backend::reinterpret_as_rhs<value_type>(x);
74 std::shared_ptr<typename Precond::matrix> system_matrix_ptr()
const
76 return S->system_matrix_ptr();
79 typename Precond::matrix
const& system_matrix()
const
81 return S->system_matrix();
84 friend std::ostream& operator<<(std::ostream& os,
const make_block_solver& p)
86 return os << *p.S << std::endl;
91 return backend::bytes(*S);
97 std::shared_ptr<Solver> S;