From 4c1e8804963e34f004e3066a691bf30a5652ca59 Mon Sep 17 00:00:00 2001 From: "oliver.sander_at_tu-dresden.de" <oliver.sander@tu-dresden.de> Date: Sat, 5 Sep 2020 18:36:17 +0000 Subject: [PATCH] Merge branch 'fix-multigridstep-constructor-bug' into 'master' Fix bug in MultigridStep constructor See merge request agnumpde/dune-solvers!45 (cherry picked from commit 994f9aca1f070081193285b2703064c7f4f9398a) eba49954 Fix bug in MultigridStep constructor --- dune/solvers/iterationsteps/multigridstep.hh | 2 +- dune/solvers/test/multigridtest.cc | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dune/solvers/iterationsteps/multigridstep.hh b/dune/solvers/iterationsteps/multigridstep.hh index a1dce7d6..e2ae953c 100644 --- a/dune/solvers/iterationsteps/multigridstep.hh +++ b/dune/solvers/iterationsteps/multigridstep.hh @@ -54,7 +54,7 @@ namespace Dune { setSmoother(preSmoother,postSmoother); - basesolver_ = baseSolver; + basesolver_ = std::shared_ptr<Solver>(baseSolver, [](auto*){} ); this->ignoreNodes_ = ignoreNodes; } diff --git a/dune/solvers/test/multigridtest.cc b/dune/solvers/test/multigridtest.cc index 43eb2094..46a31182 100644 --- a/dune/solvers/test/multigridtest.cc +++ b/dune/solvers/test/multigridtest.cc @@ -85,6 +85,13 @@ struct MultigridTestSuite mgStep.setIgnore(p.ignore); mgStep.setBaseSolver(basesolver); + // create an unused second multigrid step just to check that the constructor works + MGStep alternativeStep(p.A, p.u, p.rhs, + 1, 3, 3, + &smoother, &smoother, + &basesolver, + &p.ignore); + // create loop solver Solver solver(mgStep, maxIterations, tol, p.energyNorm, Solver::FULL); -- GitLab