Skip to content
Snippets Groups Projects
Commit 5765f031 authored by Ansgar Burchardt's avatar Ansgar Burchardt
Browse files

multigridstep.cc: avoid repeating dynamic casts

parent 6db38832
No related branches found
No related tags found
1 merge request!43Minor cleanup
......@@ -156,25 +156,18 @@ void MultigridStep<MatrixType, VectorType, BitVectorType>::preprocess()
if (basesolver_)
{
// If the base solver can ignore dofs give it the ignoreNodes field
if (dynamic_cast<CanIgnore<BitVectorType>*>(this->basesolver_.get()))
dynamic_cast<CanIgnore<BitVectorType>*>(this->basesolver_.get())->setIgnore(*ignoreNodesHierarchy_[0]);
if (auto canIgnore = std::dynamic_pointer_cast< CanIgnore<BitVectorType> >(this->basesolver_))
canIgnore->setIgnore(*ignoreNodesHierarchy_[0]);
typedef ::LoopSolver<VectorType> DuneSolversLoopSolver;
if (dynamic_cast<DuneSolversLoopSolver*>(this->basesolver_.get())) {
DuneSolversLoopSolver* loopBaseSolver = dynamic_cast<DuneSolversLoopSolver*> (this->basesolver_.get());
assert(dynamic_cast<SmootherType*>(&loopBaseSolver->getIterationStep()));
dynamic_cast<SmootherType*>(&loopBaseSolver->getIterationStep())->setProblem(*(this->matrixHierarchy_[0]), *this->xHierarchy_[0], this->rhsHierarchy_[0]);
dynamic_cast<SmootherType*>(&loopBaseSolver->getIterationStep())->setIgnore(*ignoreNodesHierarchy_[0]);
if (auto loopBaseSolver = std::dynamic_pointer_cast<DuneSolversLoopSolver>(this->basesolver_)) {
auto iterationStep = dynamic_cast<SmootherType*>(&loopBaseSolver->getIterationStep());
assert(iterationStep);
iterationStep->setProblem(*(this->matrixHierarchy_[0]), *this->xHierarchy_[0], this->rhsHierarchy_[0]);
iterationStep->setIgnore(*ignoreNodesHierarchy_[0]);
}
else if (dynamic_cast<LinearSolverType*>(this->basesolver_.get())) {
LinearSolverType* linearBaseSolver = dynamic_cast<LinearSolverType*> (this->basesolver_.get());
else if (auto linearBaseSolver = std::dynamic_pointer_cast<LinearSolverType>(this->basesolver_)) {
linearBaseSolver->setProblem(*(this->matrixHierarchy_[0]), *this->xHierarchy_[0], this->rhsHierarchy_[0]);
}
else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment