diff --git a/dune/solvers/iterationsteps/multigridstep.cc b/dune/solvers/iterationsteps/multigridstep.cc index 57f8f43410181fc0a21e0e1c30e1550987dc0e36..da97e31e6893a310a9e9d7c835b71eb19cbd31d0 100644 --- a/dune/solvers/iterationsteps/multigridstep.cc +++ b/dune/solvers/iterationsteps/multigridstep.cc @@ -8,6 +8,7 @@ #include <dune/solvers/solvers/linearsolver.hh> #include <dune/solvers/common/genericvectortools.hh> #include <dune/matrix-vector/genericvectortools.hh> +#include <dune/matrix-vector/resize.hh> //template<class MatrixType, class VectorType, class BitVectorType> //inline @@ -118,7 +119,7 @@ void MultigridStep<MatrixType, VectorType, BitVectorType>::preprocess() this->mgTransfer_[i]->galerkinRestrict(*this->matrixHierarchy_[i+1], *std::const_pointer_cast<MatrixType>(this->matrixHierarchy_[i])); // Set solution vector sizes for the lower levels - GenericVector::resize(*(this->xHierarchy_[i]),*this->matrixHierarchy_[i]); + MatrixVector::resize(*(this->xHierarchy_[i]),*this->matrixHierarchy_[i]); } // ///////////////////////////////////////////////////// diff --git a/dune/solvers/test/multigridtest.cc b/dune/solvers/test/multigridtest.cc index be4eb374f8c855f780218e8856613f0c12311816..d387649ef0b828b09dacb934eb5595ae7475bbde 100644 --- a/dune/solvers/test/multigridtest.cc +++ b/dune/solvers/test/multigridtest.cc @@ -55,14 +55,10 @@ struct MultigridTestSuite typedef MultigridTransfer<Vector, BitVector, Matrix> Transfer; typedef CompressedMultigridTransfer<Vector, BitVector, Matrix> TransferImplementation; - // we need a vector of pointers to the transfer operator base class - std::vector<Transfer*> transfer(grid.maxLevel()); - for (size_t i = 0; i < transfer.size(); ++i) - { - // create transfer operator from level i to i+1 (note that this will only work for either uniformly refined grids or adaptive grids with RefinementType=COPY) - TransferImplementation* t = new TransferImplementation; - t->setup(grid, i, i+1); - transfer[i] = t; + // create transfer operators from level i to i+1 (note that this will only work for either uniformly refined grids or adaptive grids with RefinementType=COPY) + std::vector<Transfer> transfer(grid.maxLevel()); + for (size_t i = 0; i < transfer.size(); ++i) { + transfer[i].setup(grid, i, i+1); } // set up smoothers and basesolver