diff --git a/dune/solvers/iterationsteps/cgstep.hh b/dune/solvers/iterationsteps/cgstep.hh index d4f8749a7c6ff9aa3403003b68f3d0ee71ceebe3..2ef4b232bfb7bce6b1b237cae08d83b7a2f21886 100644 --- a/dune/solvers/iterationsteps/cgstep.hh +++ b/dune/solvers/iterationsteps/cgstep.hh @@ -47,6 +47,12 @@ namespace Dune { p_.resize(r_.size()); } + template<typename P> + void setPreconditioner(P&& preconditioner) + { + preconditioner_ = wrap_own_share<Preconditioner>(std::forward<P>(preconditioner)); + } + void check() const override; void preprocess() override; void iterate() override; diff --git a/dune/solvers/test/energynormtest.cc b/dune/solvers/test/energynormtest.cc index 9a59df8a36fe9f5ffe507c59a5a5e57db93ea641..f01c76dd932c7fce4a68e35194b10f73ccd2fd62 100644 --- a/dune/solvers/test/energynormtest.cc +++ b/dune/solvers/test/energynormtest.cc @@ -266,7 +266,7 @@ int main() try return 1; return 0; -} catch(Dune::Exception e) { +} catch(const Dune::Exception& e) { std::cout << e << std::endl; return 1; } catch(...) { diff --git a/dune/solvers/test/sumoperatortest.cc b/dune/solvers/test/sumoperatortest.cc index ca6c189cc2f8f04f733b3628c95a752b83811c15..e1694f028add27e519451e1d27bd279fb6e94de8 100644 --- a/dune/solvers/test/sumoperatortest.cc +++ b/dune/solvers/test/sumoperatortest.cc @@ -188,7 +188,7 @@ bool checkResize() try { DUNE_THROW(Exception, "Resize yields unexpected vector size."); std::cout << "passed" << std::endl; return true; -} catch(Dune::Exception e) { +} catch(const Dune::Exception& e) { std::cout << " FAILED." << std::endl; std::cout << "Exception was: " << e << std::endl; return false;