diff --git a/src/OpenFOAM/db/IOobjects/decomposedBlockData/decomposedBlockData.C b/src/OpenFOAM/db/IOobjects/decomposedBlockData/decomposedBlockData.C index 734148d6cfd3321211ff6285dbbb260677ff71d4..dfc8f5796dcbd7f353286a43f135f9cfc69df2e7 100644 --- a/src/OpenFOAM/db/IOobjects/decomposedBlockData/decomposedBlockData.C +++ b/src/OpenFOAM/db/IOobjects/decomposedBlockData/decomposedBlockData.C @@ -37,6 +37,7 @@ License #include "labelPair.H" #include "masterUncollatedFileOperation.H" #include "IListStream.H" +#include "foamVersion.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -210,12 +211,10 @@ void Foam::decomposedBlockData::writeHeader << " class " << type << ";\n"; // This may be useful to have as well - /* if (os.format() == IOstream::BINARY) { os << " arch " << foamVersion::buildArch << ";\n"; } - */ if (Pstream::parRun()) { @@ -290,6 +289,8 @@ Foam::autoPtr<Foam::ISstream> Foam::decomposedBlockData::readBlock IOstream::versionNumber ver(IOstream::currentVersion); IOstream::streamFormat fmt; + unsigned labelByteSize; + unsigned scalarByteSize; { UIListStream headerStream ( @@ -308,6 +309,8 @@ Foam::autoPtr<Foam::ISstream> Foam::decomposedBlockData::readBlock } ver = headerStream.version(); fmt = headerStream.format(); + labelByteSize = headerStream.labelByteSize(); + scalarByteSize = headerStream.scalarByteSize(); } for (label i = 1; i < blocki+1; i++) @@ -330,6 +333,8 @@ Foam::autoPtr<Foam::ISstream> Foam::decomposedBlockData::readBlock // Apply master stream settings to realIsPtr realIsPtr().format(fmt); realIsPtr().version(ver); + realIsPtr().setLabelByteSize(labelByteSize); + realIsPtr().setScalarByteSize(scalarByteSize); } return realIsPtr; } @@ -353,6 +358,22 @@ bool Foam::decomposedBlockData::readBlocks bool ok = false; + + + //// Scatter master header info + //string ver; + //unsigned labelByteSize; + //unsigned scalarByteSize; + //if (UPstream::master(comm)) + //{ + // ver = isPtr().version().str(); + // labelByteSize = isPtr().labelByteSize(); + // scalarByteSize = isPtr().scalarByteSize(); + //} + //Pstream::scatter(ver); //, Pstream::msgType(), comm); + //Pstream::scatter(labelByteSize); //, Pstream::msgType(), comm); + //Pstream::scatter(scalarByteSize); //, Pstream::msgType(), comm); + if (commsType == UPstream::commsTypes::scheduled) { if (UPstream::master(comm)) @@ -637,19 +658,31 @@ Foam::autoPtr<Foam::ISstream> Foam::decomposedBlockData::readBlocks Pstream::scatter(ok, Pstream::msgType(), comm); - // version - string versionString(realIsPtr().version().str()); - Pstream::scatter(versionString, Pstream::msgType(), comm); - realIsPtr().version(IOstream::versionNumber(versionString)); + //- Set stream properties from isPtr on master - // stream + // Scatter master header info + string ver; + string format; + unsigned labelByteSize; + unsigned scalarByteSize; + if (UPstream::master(comm)) { + ver = isPtr().version().str(); OStringStream os; - os << realIsPtr().format(); - string formatString(os.str()); - Pstream::scatter(formatString, Pstream::msgType(), comm); - realIsPtr().format(formatString); + os << isPtr().format(); + format = os.str(); + labelByteSize = isPtr().labelByteSize(); + scalarByteSize = isPtr().scalarByteSize(); } + Pstream::scatter(ver); //, Pstream::msgType(), comm); + Pstream::scatter(format); //, Pstream::msgType(), comm); + Pstream::scatter(labelByteSize); //, Pstream::msgType(), comm); + Pstream::scatter(scalarByteSize); //, Pstream::msgType(), comm); + + realIsPtr().version(IOstream::versionNumber(ver)); + realIsPtr().format(format); + realIsPtr().setLabelByteSize(labelByteSize); + realIsPtr().setScalarByteSize(scalarByteSize); word name(headerIO.name()); Pstream::scatter(name, Pstream::msgType(), comm); diff --git a/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C b/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C index 35432b2a0c89eaf0edd03c91f40ab0021d7ede66..1fb21959ecd5f45dd2d4e46a4d7777cf36149f9a 100644 --- a/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C +++ b/src/OpenFOAM/global/fileOperations/collatedFileOperation/collatedFileOperation.C @@ -34,6 +34,7 @@ License #include "registerSwitch.H" #include "masterOFstream.H" #include "OFstream.H" +#include "foamVersion.H" /* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */ @@ -217,8 +218,15 @@ bool Foam::fileOperations::collatedFileOperation::appendObject << " version " << os.version() << ";\n" << " format " << os.format() << ";\n" << " class " << decomposedBlockData::typeName - << ";\n" - << " location " << pathName << ";\n" + << ";\n"; + + // This may be useful to have as well + if (os.format() == IOstream::BINARY) + { + os << " arch " << foamVersion::buildArch << ";\n"; + } + + os << " location " << pathName << ";\n" << " object " << pathName.name() << ";\n" << "}" << nl; IOobject::writeDivider(os) << nl; diff --git a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C index 2796a2c3ca3e9a41b682732af83a788c7157119f..65ca4e950dc752ab7cda848afaa8c97eebd822c6 100644 --- a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C +++ b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C @@ -2039,18 +2039,18 @@ Foam::fileOperations::masterUncollatedFileOperation::readStream else { // Scatter master header info - string versionString; - string formatString; - if (isPtr.valid()) - { - versionString = isPtr().version().str(); - OStringStream os; - os << isPtr().format(); - formatString = (os.str()); - } - - Pstream::scatter(versionString); //, Pstream::msgType(), comm); - Pstream::scatter(formatString); //, Pstream::msgType(), comm); + //string versionString; + //string formatString; + //if (isPtr.valid()) + //{ + // versionString = isPtr().version().str(); + // OStringStream os; + // os << isPtr().format(); + // formatString = (os.str()); + //} + // + //Pstream::scatter(versionString); //, Pstream::msgType(), comm); + //Pstream::scatter(formatString); //, Pstream::msgType(), comm); // Get size of file off_t sz = Foam::fileSize(fName);