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();