From a18b37f45dd09103c75aa86efd310833bfb1b3f6 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Wed, 9 Jul 2014 09:39:31 +0000 Subject: [PATCH] Adapt to changes in dune-solvers The hasObstacle_ and obstacles_ fields are now single arrays. The corresponding fields for the entire grid hierarchy is assembled within dune-solvers now. [[Imported from SVN: r9816]] --- dune/gfe/riemanniantrsolver.cc | 12 ++++-------- dune/gfe/riemanniantrsolver.hh | 5 ++--- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc index 0d65e6d5..22b83532 100644 --- a/dune/gfe/riemanniantrsolver.cc +++ b/dune/gfe/riemanniantrsolver.cc @@ -106,7 +106,6 @@ setup(const GridType& grid, mmgStep->basesolver_ = baseSolver; mmgStep->setSmoother(presmoother, postsmoother); mmgStep->obstacleRestrictor_= new MandelObstacleRestrictor<CorrectionType>(); - mmgStep->hasObstacle_ = &hasObstacle_; mmgStep->verbosity_ = Solver::QUIET; // ////////////////////////////////////////////////////////////////////////////////////// @@ -226,13 +225,10 @@ setup(const GridType& grid, if (rank==0) { - hasObstacle_.resize(numLevels); - hasObstacle_.back().resize(guIndex_->nGlobalEntity(), true); - - // If there is more than one level use the transfer operators to determine the correct coarse level system sizes - for (int i=0; i<hasObstacle_.size()-1; i++) - hasObstacle_[i].resize(dynamic_cast<TruncatedCompressedMGTransfer<CorrectionType>* >(mmgStep->mgTransfer_[i])->getMatrix().M(),true); + hasObstacle_.resize(guIndex_->nGlobalEntity(), true); + mmgStep->hasObstacle_ = &hasObstacle_; } + } @@ -336,7 +332,7 @@ void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve() mgStep->setProblem(stiffnessMatrix, corr_global, rhs_global); trustRegionObstacles.back() = trustRegion.obstacles(); - mgStep->obstacles_ = &trustRegionObstacles; + mgStep->obstacles_ = &trustRegionObstacles.back(); innerSolver_->preprocess(); diff --git a/dune/gfe/riemanniantrsolver.hh b/dune/gfe/riemanniantrsolver.hh index b87c29c7..7454702c 100644 --- a/dune/gfe/riemanniantrsolver.hh +++ b/dune/gfe/riemanniantrsolver.hh @@ -127,9 +127,8 @@ protected: /** \brief The solver for the quadratic inner problems */ std::shared_ptr<Solver> innerSolver_; - /** \brief Dummy fields containing 'true' everywhere. The multigrid step - expects them :-( */ - std::vector<Dune::BitSetVector<1> > hasObstacle_; + /** \brief Contains 'true' everywhere -- the trust-region is bounded */ + Dune::BitSetVector<1> hasObstacle_; /** \brief The Dirichlet nodes */ const Dune::BitSetVector<blocksize>* ignoreNodes_; -- GitLab