From 367dcf2df1148f7d545af9643715c2805cd1ffb4 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Mon, 27 Oct 2014 15:48:25 +0000 Subject: [PATCH] Use the GlobalP1Mapper instead of a GlobalIndexSet where appropriate [[Imported from SVN: r9936]] --- dune/gfe/riemanniantrsolver.cc | 21 +++++++++++++++++---- dune/gfe/riemanniantrsolver.hh | 5 +++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc index 5003a786..133193b3 100644 --- a/dune/gfe/riemanniantrsolver.cc +++ b/dune/gfe/riemanniantrsolver.cc @@ -247,12 +247,25 @@ setup(const GridType& grid, // If we are on more than 1 processors, join all local transfer matrices on rank 0, // and construct a single global transfer operator there. - typedef Dune::GlobalIndexSet<typename GridType::LevelGridView, gridDim> LevelGUIndex; - LevelGUIndex fineGUIndex(grid_->levelGridView(i+1)); - LevelGUIndex coarseGUIndex(grid_->levelGridView(i)); + typedef Dune::GlobalIndexSet<typename GridType::LevelGridView> LevelGUIndex; + LevelGUIndex fineGUIndex(grid_->levelGridView(i+1), gridDim); + LevelGUIndex coarseGUIndex(grid_->levelGridView(i), gridDim); + + typedef Dune::MultipleCodimMultipleGeomTypeMapper<typename GridType::LevelGridView, Dune::MCMGVertexLayout> LevelLocalMapper; + LevelLocalMapper fineLevelLocalMapper(grid_->levelGridView(i+1)); + LevelLocalMapper coarseLevelLocalMapper(grid_->levelGridView(i)); typedef typename TruncatedCompressedMGTransfer<CorrectionType>::TransferOperatorType TransferOperatorType; - MatrixCommunicator<LevelGUIndex, TransferOperatorType> matrixComm(fineGUIndex, coarseGUIndex, 0); + MatrixCommunicator<LevelGUIndex, + typename GridType::LevelGridView, + TransferOperatorType, + LevelLocalMapper, + LevelLocalMapper> matrixComm(fineGUIndex, + coarseGUIndex, + grid_->levelGridView(i), + fineLevelLocalMapper, + coarseLevelLocalMapper, + 0); mmgStep->mgTransfer_[i] = new TruncatedCompressedMGTransfer<CorrectionType>; Dune::shared_ptr<TransferOperatorType> transferOperatorMatrix = Dune::make_shared<TransferOperatorType>(matrixComm.reduceCopy(newTransferOp->getMatrix())); diff --git a/dune/gfe/riemanniantrsolver.hh b/dune/gfe/riemanniantrsolver.hh index 5f469c44..3319ea27 100644 --- a/dune/gfe/riemanniantrsolver.hh +++ b/dune/gfe/riemanniantrsolver.hh @@ -19,6 +19,7 @@ #include "geodesicfeassembler.hh" #include <dune/grid/utility/globalindexset.hh> +#include <dune/gfe/parallel/globalp1mapper.hh> #include <dune/gfe/parallel/globalp2mapper.hh> /** \brief Riemannian trust-region solver for geodesic finite-element problems */ @@ -44,7 +45,7 @@ class RiemannianTrustRegionSolver #elif defined SECOND_ORDER typedef Dune::GlobalP2Mapper<typename GridType::LeafGridView> GUIndex; #else - typedef GlobalUniqueIndex<typename GridType::LeafGridView, gridDim> GUIndex; + typedef Dune::GlobalP1Mapper<typename GridType::LeafGridView> GUIndex; #endif #ifdef THIRD_ORDER @@ -54,7 +55,7 @@ class RiemannianTrustRegionSolver typedef P2BasisMapper<typename GridType::LeafGridView> LocalMapper; #else typedef P1NodalBasis<typename GridType::LeafGridView,double> BasisType; - typedef Dune::MultipleCodimMultipleGeomTypeMapper<typename GridType::LeafGridView, Dune::VertexLayout> LocalMapper; + typedef Dune::MultipleCodimMultipleGeomTypeMapper<typename GridType::LeafGridView, Dune::MCMGVertexLayout> LocalMapper; #endif public: -- GitLab