From 2651bae751a52c321cecbb2f392866f79cc6abec Mon Sep 17 00:00:00 2001 From: Jonathan Youett <youett@math.fu-berlin.de> Date: Thu, 26 Oct 2017 16:29:40 +0200 Subject: [PATCH] Transferoperators are now stored in shared pointer --- dune/solvers/iterationsteps/mmgstep.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dune/solvers/iterationsteps/mmgstep.cc b/dune/solvers/iterationsteps/mmgstep.cc index a9395e9f..4ed55d96 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; -- GitLab