From c25e7794925cac32c24f2225f35bde4a1b633480 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Sun, 21 Jul 2013 21:16:14 +0200
Subject: [PATCH] [Cleanup] Take tolerance for the linear solvers from the
 parset

---
 src/one-body-sample.cc     | 13 ++++++-------
 src/one-body-sample.parset |  1 +
 src/solverfactory.cc       |  9 +++++----
 src/solverfactory.hh       |  2 +-
 4 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 620bffd4..a15db2f8 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -360,8 +360,8 @@ int main(int argc, char *argv[]) {
     u_initial = 0.0;
     {
       LinearFactoryType displacementFactory(parset.sub("solver.tnnmg"), // FIXME
-                                            refinements, 1e-12, // FIXME,
-                                            *grid, displacementDirichletNodes);
+                                            refinements, *grid,
+                                            displacementDirichletNodes);
       auto multigridStep = displacementFactory.getSolver();
       auto const verbosity = parset.get<Solver::VerbosityMode>("io.verbosity");
 
@@ -411,9 +411,9 @@ int main(int argc, char *argv[]) {
         // instead of multiplying M by (1.0 - wc), we divide the RHS
         accelerationRHS *= -1.0 / (1.0 - wc);
       }
-      LinearFactoryType accelerationFactory(parset.sub("solver.tnnmg"), // FIXME
-                                            refinements, 1e-12, // FIXME,
-                                            *grid, accelerationDirichletNodes);
+      LinearFactoryType accelerationFactory(parset.sub("solver.tnnmg"),
+                                            refinements, *grid,
+                                            accelerationDirichletNodes);
       auto multigridStep = accelerationFactory.getSolver();
       auto const verbosity = parset.get<Solver::VerbosityMode>("io.verbosity");
 
@@ -441,8 +441,7 @@ int main(int argc, char *argv[]) {
         MyBlockProblem<ConvexProblem<
             Dune::GlobalNonlinearity<MatrixType, VectorType>, MatrixType>>,
         GridType>;
-    NonlinearFactoryType factory(parset.sub("solver.tnnmg"), refinements,
-                                 solverTolerance, *grid,
+    NonlinearFactoryType factory(parset.sub("solver.tnnmg"), refinements, *grid,
                                  velocityDirichletNodes);
     auto multigridStep = factory.getSolver();
     auto const verbosity = parset.get<Solver::VerbosityMode>("io.verbosity");
diff --git a/src/one-body-sample.parset b/src/one-body-sample.parset
index 5fff9410..2f7e9abc 100644
--- a/src/one-body-sample.parset
+++ b/src/one-body-sample.parset
@@ -44,6 +44,7 @@ fixed_point_tolerance  = 1e-10
 
 [solver.tnnmg.linear]
 maxiterations = 1000000
+tolerance     = 1e-10
 pre           = 3
 cycle         = 1  # 1 = V, 2 = W, etc.
 post          = 3
diff --git a/src/solverfactory.cc b/src/solverfactory.cc
index d5da5df5..c47872b6 100644
--- a/src/solverfactory.cc
+++ b/src/solverfactory.cc
@@ -13,12 +13,13 @@
 
 template <int dim, class BlockProblemType, class GridType>
 SolverFactory<dim, BlockProblemType, GridType>::SolverFactory(
-    Dune::ParameterTree const &parset, int refinements, double tolerance,
-    GridType const &grid, Dune::BitSetVector<dim> const &ignoreNodes)
+    Dune::ParameterTree const &parset, int refinements, GridType const &grid,
+    Dune::BitSetVector<dim> const &ignoreNodes)
     : baseEnergyNorm(linearBaseSolverStep),
       linearBaseSolver(&linearBaseSolverStep,
-                       parset.get<int>("linear.maxiterations"), tolerance,
-                       &baseEnergyNorm, Solver::QUIET),
+                       parset.get<int>("linear.maxiterations"),
+                       parset.get<double>("linear.tolerance"), &baseEnergyNorm,
+                       Solver::QUIET),
       transferOperators(refinements),
       multigridStep(new SolverType(linearIterationStep, nonlinearSmoother)) {
   // linear iteration step
diff --git a/src/solverfactory.hh b/src/solverfactory.hh
index c91409c7..45f4a0d6 100644
--- a/src/solverfactory.hh
+++ b/src/solverfactory.hh
@@ -27,7 +27,7 @@ class SolverFactory {
 
 public:
   SolverFactory(Dune::ParameterTree const &parset, int refinements,
-                double tolerance, GridType const &grid,
+                GridType const &grid,
                 Dune::BitSetVector<dim> const &ignoreNodes);
 
   ~SolverFactory();
-- 
GitLab