From 36fa3779c5ea83ea1ad5c574ccd6e54d49fda45f Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Wed, 9 May 2018 10:48:57 +0200
Subject: [PATCH] getIterationStep returns a shared_ptr now

---
 dune/solvers/iterationsteps/mmgstep.cc       | 4 ++--
 dune/solvers/iterationsteps/multigridstep.cc | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/dune/solvers/iterationsteps/mmgstep.cc b/dune/solvers/iterationsteps/mmgstep.cc
index 4ed55d96..a9d5f8ca 100644
--- a/dune/solvers/iterationsteps/mmgstep.cc
+++ b/dune/solvers/iterationsteps/mmgstep.cc
@@ -66,8 +66,8 @@ preprocess()
 
         typedef ProjectedBlockGSStep<MatrixType, VectorType> SmootherType;
 
-        dynamic_cast<SmootherType*>(&loopBaseSolver->getIterationStep())->hasObstacle_ = hasObstacleHierarchy_[0].get();
-        dynamic_cast<SmootherType*>(&loopBaseSolver->getIterationStep())->obstacles_   = obstacleHierarchy_[0].get();
+        std::dynamic_pointer_cast<SmootherType>(loopBaseSolver->getIterationStep())->hasObstacle_ = hasObstacleHierarchy_[0].get();
+        std::dynamic_pointer_cast<SmootherType>(loopBaseSolver->getIterationStep())->obstacles_   = obstacleHierarchy_[0].get();
 
 #if HAVE_IPOPT
     } else if (typeid(*this->basesolver_) == typeid(QuadraticIPOptSolver<MatrixType,VectorType>)) {
diff --git a/dune/solvers/iterationsteps/multigridstep.cc b/dune/solvers/iterationsteps/multigridstep.cc
index 0361d6d3..186dfdd3 100644
--- a/dune/solvers/iterationsteps/multigridstep.cc
+++ b/dune/solvers/iterationsteps/multigridstep.cc
@@ -162,7 +162,7 @@ void MultigridStep<MatrixType, VectorType, BitVectorType>::preprocess()
         typedef ::LoopSolver<VectorType> DuneSolversLoopSolver;
 
         if (auto loopBaseSolver = std::dynamic_pointer_cast<DuneSolversLoopSolver>(this->basesolver_)) {
-            auto iterationStep = dynamic_cast<SmootherType*>(&loopBaseSolver->getIterationStep());
+            auto iterationStep = std::dynamic_pointer_cast<SmootherType>(loopBaseSolver->getIterationStep());
             assert(iterationStep);
             iterationStep->setProblem(*(this->matrixHierarchy_[0]), *this->xHierarchy_[0], this->rhsHierarchy_[0]);
             iterationStep->setIgnore(*ignoreNodesHierarchy_[0]);
-- 
GitLab