diff --git a/dune/gfe/targetspacertrsolver.cc b/dune/gfe/targetspacertrsolver.cc index 57c2168e81635498c9c50c6aed7909277676c08d..171d3f46116c19fc7fc746c586e23effdf58370c 100644 --- a/dune/gfe/targetspacertrsolver.cc +++ b/dune/gfe/targetspacertrsolver.cc @@ -30,14 +30,14 @@ setup(const AverageDistanceAssembler<TargetSpace>* assembler, // //////////////////////////////// // First create a Gauss-seidel base solver - TrustRegionGSStep<MatrixType, CorrectionType>* innerSolverStep = new TrustRegionGSStep<MatrixType, CorrectionType>; + innerSolverStep_ = std::auto_ptr<TrustRegionGSStep<MatrixType, CorrectionType> >(new TrustRegionGSStep<MatrixType, CorrectionType>); - EnergyNorm<MatrixType, CorrectionType>* energyNorm = new EnergyNorm<MatrixType, CorrectionType>(*innerSolverStep); + energyNorm_ = std::auto_ptr<EnergyNorm<MatrixType, CorrectionType> >(new EnergyNorm<MatrixType, CorrectionType>(*innerSolverStep_.get())); - innerSolver_ = std::auto_ptr< ::LoopSolver<CorrectionType> >(new ::LoopSolver<CorrectionType>(innerSolverStep, + innerSolver_ = std::auto_ptr< ::LoopSolver<CorrectionType> >(new ::LoopSolver<CorrectionType>(innerSolverStep_.get(), innerIterations, innerTolerance, - energyNorm, + energyNorm_.get(), Solver::QUIET)); innerSolver_->useRelativeError_ = false; diff --git a/dune/gfe/targetspacertrsolver.hh b/dune/gfe/targetspacertrsolver.hh index cb6928b4d432f174917c3d08d10b3862e93e9301..2ca7577c60590b7613ea1eb9e18dda279dbf0c2e 100644 --- a/dune/gfe/targetspacertrsolver.hh +++ b/dune/gfe/targetspacertrsolver.hh @@ -5,6 +5,8 @@ #include <dune/solvers/common/boxconstraint.hh> #include <dune/solvers/solvers/loopsolver.hh> +#include <dune/solvers/iterationsteps/trustregiongsstep.hh> +#include <dune/solvers/norms/energynorm.hh> /** \brief Riemannian trust-region solver for geodesic finite-element problems */ template <class TargetSpace> @@ -73,6 +75,12 @@ protected: /** \brief The solver for the quadratic inner problems */ std::auto_ptr< ::LoopSolver<CorrectionType> > innerSolver_; + /** \brief The iteration step for the quadratic inner problems */ + std::auto_ptr<TrustRegionGSStep<MatrixType, CorrectionType> > innerSolverStep_; + + /** \brief Norm for the quadratic inner problems */ + std::auto_ptr<EnergyNorm<MatrixType, CorrectionType> > energyNorm_; + // /** \brief Dummy field for the trustregiongsstep */ // Dune::BitSetVector<blocksize> dummyObstacle_;