diff --git a/dune/solvers/iterationsteps/mmgstep.cc b/dune/solvers/iterationsteps/mmgstep.cc index a9395e9f01b439abf19e6c71cb10fb4e0b6e2006..4ed55d968e29865768f7152762f34d3f46c3e56e 100644 --- a/dune/solvers/iterationsteps/mmgstep.cc +++ b/dune/solvers/iterationsteps/mmgstep.cc @@ -16,8 +16,8 @@ preprocess() { // Unset the recompute bitfields, so we compute the full stiffness matrix hierarchy at the beginning for (size_t i=0; i<this->mgTransfer_.size(); i++) { - dynamic_cast<TruncatedMGTransfer<VectorType>*>(this->mgTransfer_[i])->setRecomputeBitField(nullptr); - dynamic_cast<TruncatedMGTransfer<VectorType>*>(this->mgTransfer_[i])->setCriticalBitField(nullptr); + std::dynamic_pointer_cast<TruncatedMGTransfer<VectorType> >(this->mgTransfer_[i])->setRecomputeBitField(nullptr); + std::dynamic_pointer_cast<TruncatedMGTransfer<VectorType> >(this->mgTransfer_[i])->setCriticalBitField(nullptr); } // Call preprocess of the base class @@ -40,7 +40,7 @@ preprocess() { recompute_[i].resize(hasObstacleHierarchy_[i]->size()); recompute_[i].unsetAll(); - dynamic_cast<TruncatedMGTransfer<VectorType>*>(this->mgTransfer_[i])->setRecomputeBitField(&recompute_[i]); + std::dynamic_pointer_cast<TruncatedMGTransfer<VectorType> >(this->mgTransfer_[i])->setRecomputeBitField(&recompute_[i]); } oldCritical_.resize(this->numLevels()); @@ -212,12 +212,12 @@ void MonotoneMGStep<MatrixType, VectorType>::iterate() for (int j=0; j<dim; j++) changed[i][j] = (changed[i][j] || recompute_[level][i][j]); - dynamic_cast<TruncatedMGTransfer<VectorType>*>(this->mgTransfer_[level-1])->restrict(changed, recompute_[level-1]); + std::dynamic_pointer_cast<TruncatedMGTransfer<VectorType> >(this->mgTransfer_[level-1])->restrict(changed, recompute_[level-1]); oldCritical_[level] = critical; // Set bitfield of nodes that will be truncated - dynamic_cast<TruncatedMGTransfer<VectorType>*>(this->mgTransfer_[level-1])->setCriticalBitField(&critical); + std::dynamic_pointer_cast<TruncatedMGTransfer<VectorType> >(this->mgTransfer_[level-1])->setCriticalBitField(&critical); // Restrict stiffness matrix this->mgTransfer_[level-1]->galerkinRestrict(*(mat[level]), *(const_cast<MatrixType*>(mat[level-1].get()))); @@ -259,7 +259,7 @@ void MonotoneMGStep<MatrixType, VectorType>::iterate() // Remove pointer to the temporary critical bitfield // this avoids a memory problem when the same mmg step is reused - dynamic_cast<TruncatedMGTransfer<VectorType>*>(this->mgTransfer_[level-1])->setCriticalBitField(nullptr); + std::dynamic_pointer_cast<TruncatedMGTransfer<VectorType> >(this->mgTransfer_[level-1])->setCriticalBitField(nullptr); // restore the true (non-defect) obstacles *obstacles[level] = obstacleBackup;