diff --git a/dune/solvers/iterationsteps/mmgstep.cc b/dune/solvers/iterationsteps/mmgstep.cc index e0e75470efc50dee7aa549aef7d43bb487953361..acc6c2e73cb48d6676a0a339074d2d78fa84151e 100644 --- a/dune/solvers/iterationsteps/mmgstep.cc +++ b/dune/solvers/iterationsteps/mmgstep.cc @@ -70,7 +70,7 @@ preprocess() if (typeid(*this->basesolver_) == typeid(::LoopSolver<VectorType>)) { - ::LoopSolver<VectorType>* loopBaseSolver = dynamic_cast< ::LoopSolver<VectorType>* > (this->basesolver_); + ::LoopSolver<VectorType>* loopBaseSolver = dynamic_cast< ::LoopSolver<VectorType>* > (this->basesolver_.get()); typedef ProjectedBlockGSStep<MatrixType, VectorType> SmootherType; @@ -80,7 +80,7 @@ preprocess() #if HAVE_IPOPT } else if (typeid(*this->basesolver_) == typeid(QuadraticIPOptSolver<MatrixType,VectorType>)) { - QuadraticIPOptSolver<MatrixType,VectorType>* ipoptBaseSolver = dynamic_cast<QuadraticIPOptSolver<MatrixType,VectorType>*> (this->basesolver_); + QuadraticIPOptSolver<MatrixType,VectorType>* ipoptBaseSolver = dynamic_cast<QuadraticIPOptSolver<MatrixType,VectorType>*> (this->basesolver_.get()); ipoptBaseSolver->obstacles_ = obstacleHierarchy_[0]; #endif diff --git a/dune/solvers/test/mmgtest.cc b/dune/solvers/test/mmgtest.cc index 5d89667208b968785f2197c18bbc7df39b86eaeb..af9bfccf754ae4bdb455517ecd7ec331000b3f4c 100644 --- a/dune/solvers/test/mmgtest.cc +++ b/dune/solvers/test/mmgtest.cc @@ -56,7 +56,7 @@ void solveObstacleProblemByMMGSolver(const GridType& grid, const MatrixType& mat mmgStep.setProblem(mat,x,rhs); mmgStep.setMGType(1, 3, 3); mmgStep.setIgnore(ignore); - mmgStep.basesolver_ = &baseSolver; + mmgStep.setBaseSolver(baseSolver); mmgStep.setSmoother(&smoother); mmgStep.setObstacleRestrictor(std::make_shared<MandelObstacleRestrictor<VectorType> >()); diff --git a/dune/solvers/test/multigridtest.cc b/dune/solvers/test/multigridtest.cc index a61476aab414719d1166c2a676644b8a167c62f7..a2aefae59807c9624d408938608fa6fdb3e92f4c 100644 --- a/dune/solvers/test/multigridtest.cc +++ b/dune/solvers/test/multigridtest.cc @@ -84,7 +84,7 @@ struct MultigridTestSuite mgStep.setSmoother(&smoother); mgStep.setMGType(1,3,3); mgStep.setIgnore(p.ignore); - mgStep.basesolver_ = &basesolver; + mgStep.setBaseSolver(basesolver); // create loop solver Solver solver(&mgStep, maxIterations, tol, &p.energyNorm, Solver::FULL);