diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/IPBstreams.C b/src/OpenFOAM/db/IOstreams/Pstreams/IPBstreams.C index a43f73116e4bebd5f8f47a74dd9f10edf12f85d7..54b1305f27ed6d378682f44c0de1aec9280e0cb4 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/IPBstreams.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/IPBstreams.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2022-2023 OpenCFD Ltd. + Copyright (C) 2022-2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -34,7 +34,7 @@ License Foam::UIPBstream::UIPBstream ( const UPstream::commsTypes commsType, - const int fromProcNo, + const int rootProcNo, DynamicList<char>& receiveBuf, label& receiveBufPosition, const int tag, @@ -45,11 +45,11 @@ Foam::UIPBstream::UIPBstream : UIPstreamBase ( - commsType, - fromProcNo, + commsType, // irrelevant + rootProcNo, // normally UPstream::masterNo() receiveBuf, receiveBufPosition, - tag, + tag, // irrelevant comm, clearAtEnd, fmt @@ -62,7 +62,7 @@ Foam::UIPBstream::UIPBstream Foam::IPBstream::IPBstream ( const UPstream::commsTypes commsType, - const int fromProcNo, + const int rootProcNo, const label bufSize, const int tag, const label comm, @@ -72,11 +72,11 @@ Foam::IPBstream::IPBstream Pstream(commsType, bufSize), UIPBstream ( - commsType, - fromProcNo, + commsType, // irrelevant + rootProcNo, // normally UPstream::masterNo() Pstream::transferBuf_, UIPstreamBase::storedRecvBufPos_, // Internal only - tag, + tag, // irrelevant comm, false, // Do not clear Pstream::transferBuf_ if at end fmt @@ -86,7 +86,7 @@ Foam::IPBstream::IPBstream Foam::IPBstream::IPBstream ( - const int fromProcNo, + const int rootProcNo, const label comm, IOstreamOption::streamFormat fmt ) @@ -94,7 +94,25 @@ Foam::IPBstream::IPBstream IPBstream ( UPstream::commsTypes::scheduled, // irrelevant - fromProcNo, + rootProcNo, + label(0), // bufSize + UPstream::msgType(), // irrelevant + comm, + fmt + ) +{} + + +Foam::IPBstream::IPBstream +( + const label comm, + IOstreamOption::streamFormat fmt +) +: + IPBstream + ( + UPstream::commsTypes::scheduled, // irrelevant + UPstream::masterNo(), // rootProcNo label(0), // bufSize UPstream::msgType(), // irrelevant comm, diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/IPstream.H b/src/OpenFOAM/db/IOstreams/Pstreams/IPstream.H index c71bb4b24c594db26153ee2af2dde9da7ec8300c..2f7eeea3df58d2df7ce76170bcebbdaea6da699b 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/IPstream.H +++ b/src/OpenFOAM/db/IOstreams/Pstreams/IPstream.H @@ -127,11 +127,19 @@ public: IOstreamOption::streamFormat fmt = IOstreamOption::BINARY ); - //- Construct for broadcast root with optional communicator, - //- write format - explicit IPBstream + //- Construct for broadcast root and communicator, + //- with optional read format + IPBstream ( const int rootProcNo, //!< normally UPstream::masterNo() + const label comm, + IOstreamOption::streamFormat fmt = IOstreamOption::BINARY + ); + + //- Construct with optional communicator and read format. + //- Uses UPstream::masterNo() root + explicit IPBstream + ( const label comm = UPstream::worldComm, IOstreamOption::streamFormat fmt = IOstreamOption::BINARY ); diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/OPBstreams.C b/src/OpenFOAM/db/IOstreams/Pstreams/OPBstreams.C index 487cdf6716cccd00dbe655082ab2ccc4da897b25..b68dc927a709dee58c924768adeb6291482be183 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/OPBstreams.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/OPBstreams.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2022-2023 OpenCFD Ltd. + Copyright (C) 2022-2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -34,7 +34,7 @@ License Foam::UOPBstream::UOPBstream ( const UPstream::commsTypes commsType, - const int toProcNo, + const int rootProcNo, DynamicList<char>& sendBuf, const int tag, const label comm, @@ -42,14 +42,23 @@ Foam::UOPBstream::UOPBstream IOstreamOption::streamFormat fmt ) : - UOPstreamBase(commsType, toProcNo, sendBuf, tag, comm, sendAtDestruct, fmt) + UOPstreamBase + ( + commsType, // irrelevant + rootProcNo, // normally UPstream::masterNo() + sendBuf, + tag, // irrelevant + comm, + sendAtDestruct, + fmt + ) {} Foam::OPBstream::OPBstream ( const UPstream::commsTypes commsType, - const int toProcNo, + const int rootProcNo, const label bufSize, const int tag, const label comm, @@ -59,10 +68,10 @@ Foam::OPBstream::OPBstream Pstream(commsType, bufSize), UOPBstream ( - commsType, - toProcNo, + commsType, // irrelevant + rootProcNo, // normally UPstream::masterNo() Pstream::transferBuf_, - tag, + tag, // irrelevant comm, true, // sendAtDestruct fmt @@ -72,7 +81,25 @@ Foam::OPBstream::OPBstream Foam::OPBstream::OPBstream ( - const int toProcNo, + const int rootProcNo, + const label comm, + IOstreamOption::streamFormat fmt +) +: + OPBstream + ( + UPstream::commsTypes::scheduled, // irrelevant + rootProcNo, + label(0), // bufSize + UPstream::msgType(), // irrelevant + comm, + fmt + ) +{} + + +Foam::OPBstream::OPBstream +( const label comm, IOstreamOption::streamFormat fmt ) @@ -80,7 +107,7 @@ Foam::OPBstream::OPBstream OPBstream ( UPstream::commsTypes::scheduled, // irrelevant - toProcNo, + UPstream::masterNo(), // rootProcNo label(0), // bufSize UPstream::msgType(), // irrelevant comm, diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/OPstream.H b/src/OpenFOAM/db/IOstreams/Pstreams/OPstream.H index 87d56367593778fa10149f94eb1904b426a11430..bf0445f04a37207a5f9d444c0c942c91e7f97cd2 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/OPstream.H +++ b/src/OpenFOAM/db/IOstreams/Pstreams/OPstream.H @@ -144,11 +144,19 @@ public: IOstreamOption::streamFormat fmt = IOstreamOption::BINARY ); - //- Construct for broadcast root with optional communicator, - //- write format - explicit OPBstream + //- Construct for broadcast root and communicator, + //- with optional write format + OPBstream ( const int rootProcNo, //!< normally UPstream::masterNo() + const label comm, + IOstreamOption::streamFormat fmt = IOstreamOption::BINARY + ); + + //- Construct with optional communicator and write format. + //- Uses UPstream::masterNo() root + explicit OPBstream + ( const label comm = UPstream::worldComm, IOstreamOption::streamFormat fmt = IOstreamOption::BINARY ); diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBroadcast.C b/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBroadcast.C index 7bba29d4fbb798de37e98df1c129ab7ddd7e2dca..b41fafee10db47c66c2a5ea3f4f34cfb76aa86a5 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBroadcast.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/PstreamBroadcast.C @@ -41,20 +41,19 @@ void Foam::Pstream::broadcast(Type& value, const label comm) ( reinterpret_cast<char*>(&value), sizeof(Type), - comm, - UPstream::masterNo() + comm ); } else if (UPstream::is_parallel(comm)) { if (UPstream::master(comm)) { - OPBstream os(UPstream::masterNo(), comm); + OPBstream os(comm); os << value; } else // UPstream::is_subrank(comm) { - IPBstream is(UPstream::masterNo(), comm); + IPBstream is(comm); is >> value; } } @@ -68,12 +67,12 @@ void Foam::Pstream::broadcasts(const label comm, Type& arg1, Args&&... args) { if (UPstream::master(comm)) { - OPBstream os(UPstream::masterNo(), comm); + OPBstream os(comm); Detail::outputLoop(os, arg1, std::forward<Args>(args)...); } else // UPstream::is_subrank(comm) { - IPBstream is(UPstream::masterNo(), comm); + IPBstream is(comm); Detail::inputLoop(is, arg1, std::forward<Args>(args)...); } } @@ -98,8 +97,7 @@ void Foam::Pstream::broadcastList(ListType& list, const label comm) ( reinterpret_cast<char*>(&len), sizeof(label), - comm, - UPstream::masterNo() + comm ); if (UPstream::is_subrank(comm)) @@ -113,8 +111,7 @@ void Foam::Pstream::broadcastList(ListType& list, const label comm) ( list.data_bytes(), list.size_bytes(), - comm, - UPstream::masterNo() + comm ); } } @@ -125,12 +122,12 @@ void Foam::Pstream::broadcastList(ListType& list, const label comm) if (UPstream::master(comm)) { - OPBstream os(UPstream::masterNo(), comm); + OPBstream os(comm); os << list; } else // UPstream::is_subrank(comm) { - IPBstream is(UPstream::masterNo(), comm); + IPBstream is(comm); is >> list; } } diff --git a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C index 100e87b22743fc13bda52274de82989a3ac94fe7..ac4ffc8e22921cc1abb7262ed08d57d808bfb6e2 100644 --- a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C +++ b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C @@ -2195,26 +2195,18 @@ bool Foam::fileOperations::masterUncollatedFileOperation::read io.note() ); - if (Pstream::master(UPstream::worldComm)) + if (UPstream::master(UPstream::worldComm)) { - OPBstream toAll - ( - UPstream::masterNo(), - UPstream::worldComm, - format - ); - bool okWrite = io.writeData(toAll); + OPBstream os(UPstream::worldComm, format); + + bool okWrite = io.writeData(os); ok = ok && okWrite; } else { - IPBstream fromMaster - ( - UPstream::masterNo(), - UPstream::worldComm, - format - ); - ok = io.readData(fromMaster); + IPBstream is(UPstream::worldComm, format); + + ok = io.readData(is); } } } diff --git a/src/OpenFOAM/global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C b/src/OpenFOAM/global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C index 75996732c3bb307f2ae80b1ab281380b9eb2e82f..ea85088558196869d01eb328cda6725484ad924e 100644 --- a/src/OpenFOAM/global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C +++ b/src/OpenFOAM/global/fileOperations/uncollatedFileOperation/uncollatedFileOperation.C @@ -752,24 +752,16 @@ bool Foam::fileOperations::uncollatedFileOperation::read if (UPstream::master(UPstream::worldComm)) { - OPBstream toAll - ( - UPstream::masterNo(), - UPstream::worldComm, - format - ); - bool okWrite = io.writeData(toAll); + OPBstream os(UPstream::worldComm, format); + + bool okWrite = io.writeData(os); ok = ok && okWrite; } else { - IPBstream fromMaster - ( - UPstream::masterNo(), - UPstream::worldComm, - format - ); - ok = io.readData(fromMaster); + IPBstream is(UPstream::worldComm, format); + + ok = io.readData(is); } } diff --git a/src/OpenFOAM/parallel/fieldsDistributor/fieldsDistributorTemplates.C b/src/OpenFOAM/parallel/fieldsDistributor/fieldsDistributorTemplates.C index 491b8f31ee0d17941d240b94b7f864b0790c1a1e..01c0195b81c37b4cd50de61dda8b50f71508904e 100644 --- a/src/OpenFOAM/parallel/fieldsDistributor/fieldsDistributorTemplates.C +++ b/src/OpenFOAM/parallel/fieldsDistributor/fieldsDistributorTemplates.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2022-2023 OpenCFD Ltd. + Copyright (C) 2022-2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -270,7 +270,7 @@ void Foam::fieldsDistributor::readFieldsImpl // Broadcast zero sized fields everywhere (if needed) // Send like a list of dictionaries - OPBstream toProcs(UPstream::masterNo()); // worldComm + OPBstream toProcs(UPstream::worldComm); const label nDicts = (subsetter ? fields.size() : label(0)); @@ -299,7 +299,7 @@ void Foam::fieldsDistributor::readFieldsImpl else { // Receive the broadcast... - IPBstream fromMaster(UPstream::masterNo()); // worldComm + IPBstream fromMaster(UPstream::worldComm); // But only consume where needed... if (!haveMeshOnProc.test(UPstream::myProcNo()))