From c28b8cf343350248f416b678cb094e6a8ae9d6e8 Mon Sep 17 00:00:00 2001
From: Rebecca Neumann <rebecca@dune-project.org>
Date: Fri, 13 May 2011 10:09:46 +0000
Subject: [PATCH] add additional communication needed for ALU

[[Imported from SVN: r1476]]
---
 dune/istl/paamg/globalaggregates.hh | 5 +++++
 dune/istl/repartition.hh            | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/dune/istl/paamg/globalaggregates.hh b/dune/istl/paamg/globalaggregates.hh
index 65ba082d9..ee7ab5ece 100644
--- a/dune/istl/paamg/globalaggregates.hh
+++ b/dune/istl/paamg/globalaggregates.hh
@@ -159,6 +159,11 @@ namespace Dune
         typedef Dune::Amg::GlobalAggregatesMap<Vertex,IndexSet> GlobalMap;
         GlobalMap gmap(aggregates, globalLookup);
         pinfo.copyOwnerToAll(gmap,gmap);
+        // communication only needed for ALU
+        // (ghosts with same global id as owners on the same process)
+        if (pinfo.getSolverCategory() ==
+            static_cast<int>(SolverCategory::nonoverlapping))
+          pinfo.copyCopyToAll(gmap,gmap);
 
         typedef typename ParallelInformation::RemoteIndices::const_iterator Lists;
         Lists lists = pinfo.remoteIndices().find(pinfo.communicator().rank());
diff --git a/dune/istl/repartition.hh b/dune/istl/repartition.hh
index f0228b545..96f6dadde 100644
--- a/dune/istl/repartition.hh
+++ b/dune/istl/repartition.hh
@@ -1416,6 +1416,11 @@ namespace Dune
 
     delete[] part;
     oocomm.copyOwnerToAll(setPartition, setPartition);
+    // communication only needed for ALU
+    // (ghosts with same global id as owners on the same process)
+    if (oocomm.getSolverCategory() ==
+        static_cast<int>(SolverCategory::nonoverlapping))
+      oocomm.copyCopyToAll(setPartition, setPartition);
     bool ret = buildCommunication(graph, setPartition, oocomm, outcomm, redistInf,
                                   verbose);
     if(verbose) {
-- 
GitLab