diff --git a/rodobstacle.cc b/rodobstacle.cc index 4d8fff113d4c43be1c8b120b98373f508e5d70ed..e7ccd7740d6908fca3b319d623ba6339f4e2f163 100644 --- a/rodobstacle.cc +++ b/rodobstacle.cc @@ -125,7 +125,6 @@ int main (int argc, char *argv[]) try multigridStep.setMGType(mu, nu1, nu2); multigridStep.ignoreNodes_ = &dirichletNodes; multigridStep.basesolver_ = &baseSolver; - multigridStep.setSmoother(&presmoother, &postsmoother); multigridStep.hasObstacle_ = &hasObstacle; multigridStep.obstacles_ = &trustRegionObstacles; multigridStep.verbosity_ = Solver::QUIET; @@ -173,8 +172,6 @@ int main (int argc, char *argv[]) try dirichletNodes[0] = true; dirichletNodes.back() = true; - multigridStep.ignoreNodes_ = &dirichletNodes; - // //////////////////////////////////////////////////////////// // Create solution and rhs vectors // //////////////////////////////////////////////////////////// @@ -222,9 +219,14 @@ int main (int argc, char *argv[]) try for (int i=0; i<=toplevel; i++) trustRegionObstacles[i].resize(grid.size(i, 1)); - // //////////////////////////////////// - // Create the transfer operators - // //////////////////////////////////// + // //////////////////////////////////////////// + // Adjust the solver to the new hierarchy + // //////////////////////////////////////////// + + multigridStep.setNumberOfLevels(toplevel+1); + multigridStep.ignoreNodes_ = &dirichletNodes; + multigridStep.setSmoother(&presmoother, &postsmoother); + for (int k=0; k<multigridStep.mgTransfer_.size(); k++) delete(multigridStep.mgTransfer_[k]);