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>
48 make_block_solver(
const Matrix& A,
49 const params& prm = params(),
50 const backend_params& bprm = backend_params())
52 S = std::make_shared<Solver>(adapter::block_matrix<value_type>(A), prm, bprm);
55 template <
class Matrix,
class Vec1,
class Vec2>
58 auto F = backend::reinterpret_as_rhs<value_type>(rhs);
59 auto X = backend::reinterpret_as_rhs<value_type>(x);
64 template <
class Vec1,
class Vec2>
67 auto F = backend::reinterpret_as_rhs<value_type>(rhs);
68 auto X = backend::reinterpret_as_rhs<value_type>(x);
73 std::shared_ptr<typename Precond::matrix> system_matrix_ptr()
const
75 return S->system_matrix_ptr();
78 typename Precond::matrix
const& system_matrix()
const
80 return S->system_matrix();
83 friend std::ostream& operator<<(std::ostream& os,
const make_block_solver& p)
85 return os << *p.S << std::endl;
90 return backend::bytes(*S);
96 std::shared_ptr<Solver> S;