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