BUG: globalIndex gather/scatter fails with multi-world (fixes #2706)
- was using UPstream::procIDs(), which returns the sub-ranks with respect to the parent communicator. This is normally just an identity list (single-world) but with multi-world the indexing is incorrect. Use UPstream::allProcs() instead.
This commit is contained in:
parent
ffde9c2c6f
commit
2c6fc15734
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2018-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2018-2023 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -395,12 +395,12 @@ public:
|
||||
|
||||
//- Collect indirect data in processor order on master
|
||||
// Offsets needed on master only.
|
||||
template<class Type, class Addr>
|
||||
template<class ProcIDsContainer, class Type, class Addr>
|
||||
static void gather
|
||||
(
|
||||
const labelUList& offsets,
|
||||
const label comm, //!< communicator
|
||||
const UList<int>& procIDs,
|
||||
const ProcIDsContainer& procIDs,
|
||||
const IndirectListBase<Type, Addr>& fld,
|
||||
List<Type>& allFld,
|
||||
const int tag = UPstream::msgType(),
|
||||
|
@ -6,7 +6,7 @@
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2013-2017 OpenFOAM Foundation
|
||||
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||
Copyright (C) 2019-2023 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -225,12 +225,12 @@ void Foam::globalIndex::gather
|
||||
}
|
||||
|
||||
|
||||
template<class Type, class Addr>
|
||||
template<class ProcIDsContainer, class Type, class Addr>
|
||||
void Foam::globalIndex::gather
|
||||
(
|
||||
const labelUList& off,
|
||||
const label comm,
|
||||
const UList<int>& procIDs,
|
||||
const ProcIDsContainer& procIDs,
|
||||
const IndirectListBase<Type, Addr>& fld,
|
||||
List<Type>& allFld,
|
||||
const int tag,
|
||||
@ -302,7 +302,7 @@ void Foam::globalIndex::gather
|
||||
gather
|
||||
(
|
||||
comm,
|
||||
UPstream::procID(comm),
|
||||
UPstream::allProcs(comm), // All communicator ranks
|
||||
fld,
|
||||
allFld,
|
||||
tag,
|
||||
@ -325,7 +325,7 @@ void Foam::globalIndex::gather
|
||||
(
|
||||
offsets_,
|
||||
comm,
|
||||
UPstream::procID(comm),
|
||||
UPstream::allProcs(comm), // All communicator ranks
|
||||
fld,
|
||||
allFld,
|
||||
tag,
|
||||
@ -370,7 +370,7 @@ void Foam::globalIndex::gather
|
||||
gather
|
||||
(
|
||||
comm,
|
||||
UPstream::procID(comm),
|
||||
UPstream::allProcs(comm), // All communicator ranks
|
||||
fld,
|
||||
allFld,
|
||||
tag,
|
||||
@ -658,7 +658,7 @@ void Foam::globalIndex::scatter
|
||||
(
|
||||
offsets_,
|
||||
comm,
|
||||
UPstream::procID(comm),
|
||||
UPstream::allProcs(comm), // All communicator ranks
|
||||
allFld,
|
||||
fld,
|
||||
tag,
|
||||
|
@ -1845,7 +1845,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
|
||||
// //globalBorderTris.gather
|
||||
// //(
|
||||
// // UPstream::worldComm,
|
||||
// // UPstream::procID(Pstream::worldComm),
|
||||
// // UPstream::allProcs(UPstream::worldComm),
|
||||
// // globalBorderCentres
|
||||
// //);
|
||||
// pointField globalBorderCentres(allCentres);
|
||||
@ -1893,7 +1893,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
|
||||
// //globalBorderTris.scatter
|
||||
// //(
|
||||
// // UPstream::worldComm,
|
||||
// // UPstream::procID(Pstream::worldComm),
|
||||
// // UPstream::allProcs(UPstream::worldComm),
|
||||
// // isMasterPoint
|
||||
// //);
|
||||
// //boolList isMasterBorder(s.size(), false);
|
||||
@ -1990,7 +1990,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
|
||||
globalTris().gather
|
||||
(
|
||||
UPstream::worldComm,
|
||||
UPstream::procID(Pstream::worldComm),
|
||||
UPstream::allProcs(UPstream::worldComm),
|
||||
allCentres
|
||||
);
|
||||
}
|
||||
@ -2040,7 +2040,7 @@ Foam::distributedTriSurfaceMesh::independentlyDistributedBbs
|
||||
globalTris().scatter
|
||||
(
|
||||
UPstream::worldComm,
|
||||
UPstream::procID(Pstream::worldComm),
|
||||
UPstream::allProcs(UPstream::worldComm),
|
||||
allDistribution,
|
||||
distribution
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user