diff --git a/dune/gfe/parallel/matrixcommunicator.hh b/dune/gfe/parallel/matrixcommunicator.hh index f73b4c14adb12556d9b6e7d0af3f3bdd5d2743cb..c934286dcd1eb828b9148fb52281233f0a3bee65 100644 --- a/dune/gfe/parallel/matrixcommunicator.hh +++ b/dune/gfe/parallel/matrixcommunicator.hh @@ -9,7 +9,7 @@ #include <dune/gfe/parallel/mpifunctions.hh> -template<typename GUIndex, typename GridView, typename MatrixType, typename LocalMapper1, typename LocalMapper2, typename ColGUIndex=GUIndex> +template<typename RowGlobalMapper, typename GridView, typename MatrixType, typename LocalMapper1, typename LocalMapper2, typename ColumnGlobalMapper=RowGlobalMapper> class MatrixCommunicator { struct TransferMatrixTuple { @@ -45,9 +45,9 @@ class MatrixCommunicator { } public: - MatrixCommunicator(const GUIndex& rowIndex, const GridView& gridView, const LocalMapper1& localMapper1, const LocalMapper2& localMapper2, const int& root) - : guIndex1_(rowIndex), - guIndex2_(rowIndex), + MatrixCommunicator(const RowGlobalMapper& rowGlobalMapper, const GridView& gridView, const LocalMapper1& localMapper1, const LocalMapper2& localMapper2, const int& root) + : rowGlobalMapper_(rowGlobalMapper), + columnGlobalMapper_(rowGlobalMapper), localMapper1_(localMapper1), localMapper2_(localMapper2), communicator_(gridView.comm()), @@ -56,9 +56,9 @@ public: setLocalToGlobal(gridView); } - MatrixCommunicator(const GUIndex& rowIndex, const ColGUIndex& colIndex, const GridView& gridView, const LocalMapper1& localMapper1, const LocalMapper2& localMapper2, const int& root) - : guIndex1_(rowIndex), - guIndex2_(colIndex), + MatrixCommunicator(const RowGlobalMapper& rowGlobalMapper, const ColumnGlobalMapper& columnGlobalMapper, const GridView& gridView, const LocalMapper1& localMapper1, const LocalMapper2& localMapper2, const int& root) + : rowGlobalMapper_(rowGlobalMapper), + columnGlobalMapper_(columnGlobalMapper), localMapper1_(localMapper1), localMapper2_(localMapper2), communicator_(gridView.comm()), @@ -76,7 +76,7 @@ public: // Create occupation pattern in matrix Dune::MatrixIndexSet occupationPattern; - occupationPattern.resize(guIndex1_.size(), guIndex2_.size()); + occupationPattern.resize(rowGlobalMapper_.size(), columnGlobalMapper_.size()); for (size_t k = 0; k < globalMatrixEntries.size(); ++k) occupationPattern.add(globalMatrixEntries[k].row, globalMatrixEntries[k].col); @@ -128,14 +128,14 @@ private: for (int codim = 0; codim <= GridView::dimension; codim++) for (size_t i=0; i<it->subEntities(codim); i++) { - typename GUIndex::Index localIdx; - typename GUIndex::Index globalIdx; + typename RowGlobalMapper::Index localIdx; + typename RowGlobalMapper::Index globalIdx; if (localMapper1_.contains(*it,i,codim,localIdx) - and guIndex1_.contains(*it,i,codim,globalIdx)) + and rowGlobalMapper_.contains(*it,i,codim,globalIdx)) localToGlobal1_[localIdx] = globalIdx; if (localMapper2_.contains(*it,i,codim,localIdx) - and guIndex2_.contains(*it,i,codim,globalIdx)) + and columnGlobalMapper_.contains(*it,i,codim,globalIdx)) localToGlobal2_[localIdx] = globalIdx; } @@ -143,8 +143,8 @@ private: } // Mappers for the global numbering - const GUIndex& guIndex1_; - const ColGUIndex& guIndex2_; + const RowGlobalMapper& rowGlobalMapper_; + const ColumnGlobalMapper& columnGlobalMapper_; // Mappers for the local numbering const LocalMapper1& localMapper1_; @@ -153,8 +153,8 @@ private: const typename GridView::CollectiveCommunication& communicator_; int root_rank; - std::vector<typename GUIndex::Index> localToGlobal1_; - std::vector<typename ColGUIndex::Index> localToGlobal2_; + std::vector<typename RowGlobalMapper::Index> localToGlobal1_; + std::vector<typename ColumnGlobalMapper::Index> localToGlobal2_; std::vector<TransferMatrixTuple> globalMatrixEntries; };