diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 620bffd47db7d7819e5445753a0bd208f253b41a..a15db2f89e63c2008fec8fd85d62dc04635a7e4b 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 5fff9410a97922bc1af98f829a29e67a7b9f88d7..2f7e9abc03bbd3941e32889da9f012a01b51e3e4 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 d5da5df5d05aeba83b454d2da3e1990c6b13cb85..c47872b693cac0409ad0d9b74c2a548d42e7eb9d 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 c91409c7d65a42ddbcffa000ea7f598aeaf9088a..45f4a0d670db1616933f5028f438324b8e973fd9 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();