diff --git a/dune/solvers/iterationsteps/obstacletnnmgstep.hh b/dune/solvers/iterationsteps/obstacletnnmgstep.hh index f1a5b6b989f1832612f036f0c7297d3de77fe638..09e2db71ede931b1b27d5314f01c2bf6a00bb6b9 100644 --- a/dune/solvers/iterationsteps/obstacletnnmgstep.hh +++ b/dune/solvers/iterationsteps/obstacletnnmgstep.hh @@ -112,7 +112,7 @@ class ObstacleTNNMGStep linearSmoother_(Dune::Solvers::BlockGS::LocalSolvers::gs()), baseSolverStep_(Dune::Solvers::BlockGS::LocalSolvers::gs()), baseSolverNorm_(baseSolverStep_), - baseSolver_(&baseSolverStep_, 100, 1e-8, &baseSolverNorm_, LinearBaseSolver::QUIET), + baseSolver_(baseSolverStep_, 100, 1e-8, baseSolverNorm_, LinearBaseSolver::QUIET), preSmoothingSteps_(3), postSmoothingSteps_(3), linearIterationSteps_(1), @@ -158,7 +158,7 @@ class ObstacleTNNMGStep linearMGStep_.setTransferOperators(transfer_); linearMGStep_.setSmoother(&linearSmoother_); - linearMGStep_.basesolver_ = &baseSolver_; + linearMGStep_.setBaseSolver(baseSolver_); linearMGStep_.setMGType(1, linearPreSmoothingSteps_, linearPostSmoothingSteps_); hasObstacle_.resize(x_->size()); diff --git a/dune/solvers/test/cgsteptest.cc b/dune/solvers/test/cgsteptest.cc index 0ccc7372ae052cdcd527c6b28945399eb965ff97..f7540138dabe09b8f00ab7bfb38f4b5129945d55 100644 --- a/dune/solvers/test/cgsteptest.cc +++ b/dune/solvers/test/cgsteptest.cc @@ -83,7 +83,7 @@ struct CGTestSuite cgStep(p.A, u_copy, rhs_copy); cgStep.setIgnore(p.ignore); ::LoopSolver<typename Problem::Vector> solver( - &cgStep, maxIterations, stepTol, &p.twoNorm, Solver::QUIET, + cgStep, maxIterations, stepTol, p.twoNorm, Solver::QUIET, relativeErrors, &p.u_ex); solver.check(); solver.preprocess(); @@ -115,7 +115,7 @@ struct CGTestSuite if (withIgnore) cgStep.setIgnore(p.ignore); ::LoopSolver<typename Problem::Vector> solver( - &cgStep, maxIterations, stepTol, &p.twoNorm, verbosity, + cgStep, maxIterations, stepTol, p.twoNorm, verbosity, relativeErrors, &p.u_ex); solver.check(); timer.reset(); @@ -143,7 +143,7 @@ struct CGTestSuite if (withIgnore) cgStep.setIgnore(p.ignore); ::LoopSolver<typename Problem::Vector> solver( - &cgStep, maxIterations, stepTol, &p.twoNorm, verbosity, + cgStep, maxIterations, stepTol, p.twoNorm, verbosity, relativeErrors, &p.u_ex); solver.check(); timer.reset(); @@ -167,7 +167,7 @@ struct CGTestSuite typename Problem::Vector> cgStep(p.A, u_copy, rhs_copy, ilu0); ::LoopSolver<typename Problem::Vector> solver( - &cgStep, maxIterations, stepTol, &p.twoNorm, verbosity, + cgStep, maxIterations, stepTol, p.twoNorm, verbosity, relativeErrors, &p.u_ex); solver.check(); timer.reset(); @@ -189,7 +189,7 @@ struct CGTestSuite typename Problem::Vector> cgStep(p.A, u_copy, rhs_copy, ssor); ::LoopSolver<typename Problem::Vector> solver( - &cgStep, maxIterations, stepTol, &p.twoNorm, verbosity, + cgStep, maxIterations, stepTol, p.twoNorm, verbosity, relativeErrors, &p.u_ex); solver.check(); timer.reset(); @@ -211,7 +211,7 @@ struct CGTestSuite typename Problem::Vector> cgStep(p.A, u_copy, rhs_copy, ssor); ::LoopSolver<typename Problem::Vector> solver( - &cgStep, maxIterations, stepTol, &p.twoNorm, verbosity, + cgStep, maxIterations, stepTol, p.twoNorm, verbosity, relativeErrors, &p.u_ex); solver.check(); timer.reset(); @@ -233,7 +233,7 @@ struct CGTestSuite typename Problem::Vector> cgStep(p.A, u_copy, rhs_copy, ssor); ::LoopSolver<typename Problem::Vector> solver( - &cgStep, maxIterations, stepTol, &p.twoNorm, verbosity, + cgStep, maxIterations, stepTol, p.twoNorm, verbosity, relativeErrors, &p.u_ex); solver.check(); timer.reset(); @@ -255,7 +255,7 @@ struct CGTestSuite typename Problem::Vector> cgStep(p.A, u_copy, rhs_copy, ssor); ::LoopSolver<typename Problem::Vector> solver( - &cgStep, maxIterations, stepTol, &p.twoNorm, verbosity, + cgStep, maxIterations, stepTol, p.twoNorm, verbosity, relativeErrors, &p.u_ex); solver.check(); timer.reset(); diff --git a/dune/solvers/test/gssteptest.cc b/dune/solvers/test/gssteptest.cc index 2296fa9d257afdedf08e13562a8aa63c13be629b..5538592858ac73e4c249c2d5bc00cc0ad2147936 100644 --- a/dune/solvers/test/gssteptest.cc +++ b/dune/solvers/test/gssteptest.cc @@ -54,7 +54,7 @@ struct GSTestSuite { step->setProblem(p.A, u_init, p.rhs); step->setIgnore(p.ignore); - LoopSolver solver(step, maxIterations, stepTol, &p.energyNorm, verbosity, + LoopSolver solver(*step, maxIterations, stepTol, p.energyNorm, verbosity, relativeErrors); solver.check(); solver.preprocess(); diff --git a/dune/solvers/test/mmgtest.cc b/dune/solvers/test/mmgtest.cc index af9bfccf754ae4bdb455517ecd7ec331000b3f4c..0288bab7f64d09b7f6ab0acabefb71d74c283df9 100644 --- a/dune/solvers/test/mmgtest.cc +++ b/dune/solvers/test/mmgtest.cc @@ -42,10 +42,10 @@ void solveObstacleProblemByMMGSolver(const GridType& grid, const MatrixType& mat EnergyNorm<MatrixType, VectorType> baseEnergyNorm(baseSolverStep); - ::LoopSolver<VectorType> baseSolver(&baseSolverStep, + ::LoopSolver<VectorType> baseSolver(baseSolverStep, 100, // base iterations 1e-8, // tolerance - &baseEnergyNorm, + baseEnergyNorm, Solver::QUIET); // Make pre and postsmoothers @@ -58,7 +58,7 @@ void solveObstacleProblemByMMGSolver(const GridType& grid, const MatrixType& mat mmgStep.setIgnore(ignore); mmgStep.setBaseSolver(baseSolver); mmgStep.setSmoother(&smoother); - mmgStep.setObstacleRestrictor(std::make_shared<MandelObstacleRestrictor<VectorType> >()); + mmgStep.setObstacleRestrictor(MandelObstacleRestrictor<VectorType>()); Dune::BitSetVector<blockSize> hasObstacle(x.size(),true); mmgStep.hasObstacle_ = &hasObstacle; @@ -84,10 +84,10 @@ void solveObstacleProblemByMMGSolver(const GridType& grid, const MatrixType& mat EnergyNorm<MatrixType,VectorType> h1SemiNorm(mat); - ::LoopSolver<VectorType> solver (&mmgStep, + ::LoopSolver<VectorType> solver (mmgStep, maxIterations, // iterations tolerance, // tolerance - &h1SemiNorm, + h1SemiNorm, Solver::REDUCED); // solve problem solver.preprocess(); diff --git a/dune/solvers/test/multigridtest.cc b/dune/solvers/test/multigridtest.cc index a2aefae59807c9624d408938608fa6fdb3e92f4c..be4eb374f8c855f780218e8856613f0c12311816 100644 --- a/dune/solvers/test/multigridtest.cc +++ b/dune/solvers/test/multigridtest.cc @@ -75,7 +75,7 @@ struct MultigridTestSuite typename Problem::Norm basenorm(basesolver_step); - Solver basesolver(&basesolver_step, 1, 1e-10, &basenorm, Solver::QUIET); + Solver basesolver(basesolver_step, 1, 1e-10, basenorm, Solver::QUIET); // create iteration step and set all kinds of data MGStep mgStep; @@ -87,7 +87,7 @@ struct MultigridTestSuite mgStep.setBaseSolver(basesolver); // create loop solver - Solver solver(&mgStep, maxIterations, tol, &p.energyNorm, Solver::FULL); + Solver solver(mgStep, maxIterations, tol, p.energyNorm, Solver::FULL); // solve problem solver.preprocess(); diff --git a/dune/solvers/test/obstacletnnmgtest.cc b/dune/solvers/test/obstacletnnmgtest.cc index 6321ca035355eec91a46d3e2710b2e057fc2ab37..d7a55e48f0244f9a92d5d227269b4b96050482e9 100644 --- a/dune/solvers/test/obstacletnnmgtest.cc +++ b/dune/solvers/test/obstacletnnmgtest.cc @@ -78,7 +78,7 @@ void solveObstacleProblemByTNNMG(const GridType& grid, const MatrixType& mat, Ve tnnmgStep.nestedIteration(); // cretae loop solver - Solver solver(&tnnmgStep, maxIterations, tolerance, &norm, Solver::FULL); + Solver solver(tnnmgStep, maxIterations, tolerance, norm, Solver::FULL); // solve problem solver.solve(); diff --git a/dune/solvers/test/projectedgradienttest.cc b/dune/solvers/test/projectedgradienttest.cc index 7eeef5fdc704a57bb504fd50128ec4dda04a1102..131c73b0232efaa0804f7ded640769eddf540f4f 100644 --- a/dune/solvers/test/projectedgradienttest.cc +++ b/dune/solvers/test/projectedgradienttest.cc @@ -43,10 +43,10 @@ bool solveObstacleProblemByProjectedGradientSolver(const MatrixType& mat, Vector //projGrad.iterate(); EnergyNorm<MatrixType,VectorType>* h1SemiNorm = new EnergyNorm<MatrixType,VectorType>(mat); - ::LoopSolver<VectorType> solver (&projGradStep, + ::LoopSolver<VectorType> solver (projGradStep, maxIterations, // iterations tolerance, // tolerance - h1SemiNorm, + *h1SemiNorm, Solver::REDUCED); solver.solve(); x = projGradStep.getSol();