diff --git a/dune/solvers/iterationsteps/multigridstep.cc b/dune/solvers/iterationsteps/multigridstep.cc index f80256371477a91436f3d049dd9cc681c1ab0ebb..a0339410330b2ee6322a0c1979ec5cac01a2c9a2 100644 --- a/dune/solvers/iterationsteps/multigridstep.cc +++ b/dune/solvers/iterationsteps/multigridstep.cc @@ -146,7 +146,7 @@ void MultigridStep<MatrixType, VectorType, BitVectorType>::preprocess() typedef ::LoopSolver<VectorType> DuneSolversLoopSolver; - if (typeid(*this->basesolver_) == typeid(DuneSolversLoopSolver)) { + if (dynamic_cast<DuneSolversLoopSolver*>(this->basesolver_)) { DuneSolversLoopSolver* loopBaseSolver = dynamic_cast<DuneSolversLoopSolver*> (this->basesolver_); @@ -157,7 +157,7 @@ void MultigridStep<MatrixType, VectorType, BitVectorType>::preprocess() dynamic_cast<SmootherType*>(loopBaseSolver->iterationStep_)->ignoreNodes_ = ignoreNodesHierarchy_[0]; } - else if (typeid(*this->basesolver_) == typeid(LinearSolver<MatrixType,VectorType>)) { + else if (dynamic_cast<LinearSolver<MatrixType, VectorType>*>(this->basesolver_)) { LinearSolver<MatrixType,VectorType>* linearBaseSolver = dynamic_cast<LinearSolver<MatrixType,VectorType>*> (this->basesolver_);