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