From 23f92b2d8dc3aae64faa17cc1c7e6401bc155d2d Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Mon, 8 Mar 2010 11:39:43 +0000 Subject: [PATCH] bugfix: reset the smoother when the grid hierarchy has changed [[Imported from SVN: r5680]] --- rodobstacle.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/rodobstacle.cc b/rodobstacle.cc index 4d8fff11..e7ccd774 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]); -- GitLab