diff --git a/dune-solvers/iterationsteps/amgstep.hh b/dune-solvers/iterationsteps/amgstep.hh index b110e374c247054e519c7050dd3054b8c549b56a..86115fe4c23f0e3d8f40d476af4b9515a07cc4af 100644 --- a/dune-solvers/iterationsteps/amgstep.hh +++ b/dune-solvers/iterationsteps/amgstep.hh @@ -52,8 +52,16 @@ public: VectorType& rhs) { setProblem(*stiffnessMatrix, x, rhs); + } - fop_ = std::auto_ptr<Operator>(new Operator(*stiffnessMatrix)); + /** \brief Initialize the iteration step but don't actually build the matrix hierarchy yet */ + virtual void setProblem(const MatrixType& stiffnessMatrix, + VectorType& x, + VectorType& rhs) + { + LinearIterationStep<MatrixType, VectorType>::setProblem(stiffnessMatrix, x, rhs); + + fop_ = std::auto_ptr<Operator>(new Operator(stiffnessMatrix)); } /** \brief Sets up an algebraic hierarchy