diff --git a/dune/solvers/iterationsteps/cgstep.hh b/dune/solvers/iterationsteps/cgstep.hh index d05854f993c87e541f0a3f5a42246899765ccd7d..14b63ef64674546d6d38342d45373025ba6fabd4 100644 --- a/dune/solvers/iterationsteps/cgstep.hh +++ b/dune/solvers/iterationsteps/cgstep.hh @@ -39,7 +39,7 @@ namespace Dune { virtual void setProblem(const MatrixType& mat, VectorType& x, const VectorType& rhs) { matrix_ = stackobject_to_shared_ptr(mat); - x_ = &x; + setProblem(x); r_ = rhs; } @@ -56,8 +56,11 @@ namespace Dune { std::shared_ptr<const MatrixType> matrix_; double r_squared_old_; Preconditioner<MatrixType, VectorType>* preconditioner_; + + using Base::setProblem; }; + #include "cgstep.cc" } } diff --git a/dune/solvers/iterationsteps/lineariterationstep.hh b/dune/solvers/iterationsteps/lineariterationstep.hh index 479e84ea8bcf46bcd18e913b129a20cd0f4fb581..a9d1e8c2a0bafdb726a8f9367bf3fbfd8049dc93 100644 --- a/dune/solvers/iterationsteps/lineariterationstep.hh +++ b/dune/solvers/iterationsteps/lineariterationstep.hh @@ -35,7 +35,7 @@ public: //! Set linear operator, solution and right hand side virtual void setProblem(const MatrixType& mat, VectorType& x, const VectorType& rhs) { - this->x_ = &x; + setProblem(x); rhs_ = &rhs; setMatrix(mat); } @@ -86,6 +86,9 @@ public: //! The linear operator std::shared_ptr<const MatrixType> mat_; +private: + using Base = IterationStep<VectorType, BitVectorType>; + using Base::setProblem; }; #endif