Skip to content
Snippets Groups Projects
Commit 6f61ef51 authored by Jonathan Youett's avatar Jonathan Youett Committed by Sander, Oliver
Browse files

Create baseSolver and error on stack and let the solver take over ownership

parent f1b437c9
No related branches found
No related tags found
1 merge request!8Adjust riemannian tr solver to upstream changes
......@@ -74,21 +74,15 @@ setup(const GridType& grid,
#ifdef HAVE_IPOPT
// First create an IPOpt base solver
auto baseSolver = std::make_shared<QuadraticIPOptSolver<MatrixType,CorrectionType> >();
baseSolver->setVerbosity(NumProc::QUIET);
baseSolver->setTolerance(baseTolerance);
QuadraticIPOptSolver<MatrixType,CorrectionType> baseSolver;
baseSolver.setSolverParameter(baseTolerance, 100, NumProc::QUIET);
#else
// First create a Gauss-seidel base solver
auto baseSolverStep = std::make_shared<TrustRegionGSStep<MatrixType, CorrectionType> >();
// Hack: the two-norm may not scale all that well, but it is fast!
auto baseNorm = std::make_shared<TwoNorm<CorrectionType> >();
auto baseSolver = std::make_shared<::LoopSolver<CorrectionType> >(baseSolverStep,
baseIterations,
baseTolerance,
baseNorm,
Solver::QUIET);
::LoopSolver<CorrectionType> baseSolver(TrustRegionGSStep<MatrixType, CorrectionType>{},
baseIterations,
baseTolerance,
TwoNorm<CorrectionType>{},
Solver::QUIET);
#endif
#if HAVE_MPI
// Transfer all Dirichlet data to the master processor
......@@ -109,7 +103,7 @@ setup(const GridType& grid,
mmgStep->setMGType(mu, nu1, nu2);
mmgStep->ignoreNodes_ = globalDirichletNodes;
mmgStep->setBaseSolver(baseSolver);
mmgStep->setBaseSolver(std::move(baseSolver));
mmgStep->setSmoother(smoother);
mmgStep->setObstacleRestrictor(std::make_shared<MandelObstacleRestrictor<CorrectionType> >());
mmgStep->setVerbosity(Solver::QUIET);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment