diff --git a/src/field/DistributedField.cpp b/src/field/DistributedField.cpp
index e987a9cbf0b091dffabab2e2ba31ca563b33a06b..dbbcba9692b6660cbbad4cbd61ebf9681fdeed7d 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 b52a90f519740d12cfde442448cde53c079c4178..c66c1923830e2f87c5ccf2b9db7f98fe5383b67f 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 e1b31ef2fb3ee800254ee58b9b2b051c666afd04..1ab626fee2b6035dfa973feef20ab2ef6acb751c 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 3e29409c02804c640da92d0103d6ec2c07828160..d32b24366d000f52e1ece1bda3c1b2ac965b9678 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 b7c52f046a740142c7c9d8e525196f00eaf38e3e..12b67834d9553423ffa94317268631881162cb48 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();