From 42d9c764d07a38b89520f3290c85afcd6195560f Mon Sep 17 00:00:00 2001 From: podlesny <podlesny@zedat.fu-berlin.de> Date: Tue, 9 Feb 2021 00:47:56 +0100 Subject: [PATCH] new program_state and fixpointiterator with makeLinearSolver, FunctionalFactory, NonlinearSolver working as intended --- dune/tectonic/spatial-solving/makelinearsolver.hh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/dune/tectonic/spatial-solving/makelinearsolver.hh b/dune/tectonic/spatial-solving/makelinearsolver.hh index ada00835..3c5fc029 100644 --- a/dune/tectonic/spatial-solving/makelinearsolver.hh +++ b/dune/tectonic/spatial-solving/makelinearsolver.hh @@ -57,8 +57,8 @@ auto makeLinearSolver(const Dune::ParameterTree& parset, const ContactNetwork& c auto linearSolver = std::make_shared<LinearSolver>(cgStep, parset_.template get<int>("solver.tnnmg.main.multi"), parset_.template get<double>("solver.tnnmg.preconditioner.basesolver.tolerance"), norm, Solver::QUIET); */ - // set multigrid solver - auto smoother = TruncatedBlockGSStep<Matrix, Vector>(); + + // transfer operators need to be recomputed on change due to setDeformation() using TransferOperator = NBodyContactTransfer<ContactNetwork, Vector>; @@ -76,11 +76,9 @@ auto makeLinearSolver(const Dune::ParameterTree& parset, const ContactNetwork& c auto linearMultigridStep = std::make_shared<Dune::Solvers::MultigridStep<Matrix, Vector> >(); linearMultigridStep->setMGType(1, 3, 3); - linearMultigridStep->setSmoother(smoother); + linearMultigridStep->setSmoother(TruncatedBlockGSStep<Matrix, Vector>()); linearMultigridStep->setTransferOperators(transfer); - Norm norm(*linearMultigridStep); - - return std::make_shared<LinearSolver>(linearMultigridStep, parset.template get<int>("solver.tnnmg.main.multi"), parset.template get<double>("solver.tnnmg.preconditioner.basesolver.tolerance"), norm, Solver::QUIET); + return std::make_shared<LinearSolver>(linearMultigridStep, parset.template get<int>("solver.tnnmg.main.multi"), parset.template get<double>("solver.tnnmg.preconditioner.basesolver.tolerance"), Norm(*linearMultigridStep), Solver::QUIET); } #endif -- GitLab