From 74d396b9a988ad9479d734dca08be2eb2db9d462 Mon Sep 17 00:00:00 2001
From: Boris Martin <boris.martin@uliege.be>
Date: Fri, 18 Apr 2025 14:09:23 +0200
Subject: [PATCH] Adding the ranks topology arg to SynGlobalDofs

---
 src/field/DistributedField.cpp | 2 +-
 src/field/DistributedField.h   | 2 +-
 src/field/FieldInterface.cpp   | 2 +-
 src/field/FieldInterface.h     | 2 +-
 src/problem/Formulation.cpp    | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/field/DistributedField.cpp b/src/field/DistributedField.cpp
index e987a9cb..dbbcba96 100644
--- a/src/field/DistributedField.cpp
+++ b/src/field/DistributedField.cpp
@@ -391,7 +391,7 @@ namespace gmshfem::field
   }
 
   template< class T_Scalar, field::Form T_Form >
-  void DistributedField< T_Scalar, T_Form >::syncGlobalDofs(std::vector< unsigned long long > &localToGlobal, std::vector< unsigned long long > &readIDs)
+  void DistributedField< T_Scalar, T_Form >::syncGlobalDofs(std::vector< unsigned long long > &localToGlobal, std::vector< unsigned long long > &readIDs, const std::optional<std::vector<int>>&  neighboringRanks)
   {
   #ifdef HAVE_MPI
 
diff --git a/src/field/DistributedField.h b/src/field/DistributedField.h
index b52a90f5..c66c1923 100644
--- a/src/field/DistributedField.h
+++ b/src/field/DistributedField.h
@@ -61,7 +61,7 @@ namespace gmshfem::field
     virtual void preProMPI(const std::optional<std::vector<int>>&  neighboringRanks = std::nullopt) override;
     virtual std::unordered_set<dofs::Dof*> getAllOwnedDofs() override;
     virtual std::unordered_set<dofs::Dof*> getNonOwnedDofs() override;
-    virtual void syncGlobalDofs(std::vector<unsigned long long>& localToGlobal, std::vector<unsigned long long>& readIDs) override;
+    virtual void syncGlobalDofs(std::vector<unsigned long long>& localToGlobal, std::vector<unsigned long long>& readIDs, const std::optional<std::vector<int>>&  neighboringRanks = std::nullopt) override;
     void dumpOwnedKeys();
 
    public:
diff --git a/src/field/FieldInterface.cpp b/src/field/FieldInterface.cpp
index e1b31ef2..1ab626fe 100644
--- a/src/field/FieldInterface.cpp
+++ b/src/field/FieldInterface.cpp
@@ -169,7 +169,7 @@ namespace gmshfem::field
   }
 
   template< class T_Scalar >
-  void FieldInterface< T_Scalar >::syncGlobalDofs(std::vector<unsigned long long>& localToGlobal, std::vector<unsigned long long>& readIDs)
+  void FieldInterface< T_Scalar >::syncGlobalDofs(std::vector<unsigned long long>& localToGlobal, std::vector<unsigned long long>& readIDs, const std::optional<std::vector<int>>&  neighboringRanks)
   {
     // Do nothing
   }
diff --git a/src/field/FieldInterface.h b/src/field/FieldInterface.h
index 3e29409c..d32b2436 100644
--- a/src/field/FieldInterface.h
+++ b/src/field/FieldInterface.h
@@ -244,7 +244,7 @@ namespace gmshfem::field
     virtual void preProMPI(const std::optional<std::vector<int>>&  neighboringRanks = std::nullopt);
     virtual std::unordered_set<dofs::Dof*> getAllOwnedDofs();
     virtual std::unordered_set<dofs::Dof*> getNonOwnedDofs();
-    virtual void syncGlobalDofs(std::vector<unsigned long long>& localToGlobal, std::vector<unsigned long long>& readIDs);
+    virtual void syncGlobalDofs(std::vector<unsigned long long>& localToGlobal, std::vector<unsigned long long>& readIDs, const std::optional<std::vector<int>>&  neighboringRanks = std::nullopt);
 
 
    public:
diff --git a/src/problem/Formulation.cpp b/src/problem/Formulation.cpp
index b7c52f04..12b67834 100644
--- a/src/problem/Formulation.cpp
+++ b/src/problem/Formulation.cpp
@@ -1242,7 +1242,7 @@ namespace gmshfem::problem
     timeSyncGlobal.tick();
     /* A dof knows its gmsh ID and its global index -> let the field handle the sharing */
     for (auto [tag, fieldInterfacePtr] : _unknownFields) {
-      fieldInterfacePtr->syncGlobalDofs(localToGlobalMap, localIdOfNonOwned);
+      fieldInterfacePtr->syncGlobalDofs(localToGlobalMap, localIdOfNonOwned, neighboringRanks);
     }
     common::GmshFem::BarrierMPI();
 
-- 
GitLab