mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: collated: pass through label/scalar size. Fixes #1545.
This commit is contained in:
@ -37,6 +37,7 @@ License
|
|||||||
#include "labelPair.H"
|
#include "labelPair.H"
|
||||||
#include "masterUncollatedFileOperation.H"
|
#include "masterUncollatedFileOperation.H"
|
||||||
#include "IListStream.H"
|
#include "IListStream.H"
|
||||||
|
#include "foamVersion.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -210,12 +211,10 @@ void Foam::decomposedBlockData::writeHeader
|
|||||||
<< " class " << type << ";\n";
|
<< " class " << type << ";\n";
|
||||||
|
|
||||||
// This may be useful to have as well
|
// This may be useful to have as well
|
||||||
/*
|
|
||||||
if (os.format() == IOstream::BINARY)
|
if (os.format() == IOstream::BINARY)
|
||||||
{
|
{
|
||||||
os << " arch " << foamVersion::buildArch << ";\n";
|
os << " arch " << foamVersion::buildArch << ";\n";
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
if (Pstream::parRun())
|
if (Pstream::parRun())
|
||||||
{
|
{
|
||||||
@ -290,6 +289,8 @@ Foam::autoPtr<Foam::ISstream> Foam::decomposedBlockData::readBlock
|
|||||||
|
|
||||||
IOstream::versionNumber ver(IOstream::currentVersion);
|
IOstream::versionNumber ver(IOstream::currentVersion);
|
||||||
IOstream::streamFormat fmt;
|
IOstream::streamFormat fmt;
|
||||||
|
unsigned labelByteSize;
|
||||||
|
unsigned scalarByteSize;
|
||||||
{
|
{
|
||||||
UIListStream headerStream
|
UIListStream headerStream
|
||||||
(
|
(
|
||||||
@ -308,6 +309,8 @@ Foam::autoPtr<Foam::ISstream> Foam::decomposedBlockData::readBlock
|
|||||||
}
|
}
|
||||||
ver = headerStream.version();
|
ver = headerStream.version();
|
||||||
fmt = headerStream.format();
|
fmt = headerStream.format();
|
||||||
|
labelByteSize = headerStream.labelByteSize();
|
||||||
|
scalarByteSize = headerStream.scalarByteSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (label i = 1; i < blocki+1; i++)
|
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
|
// Apply master stream settings to realIsPtr
|
||||||
realIsPtr().format(fmt);
|
realIsPtr().format(fmt);
|
||||||
realIsPtr().version(ver);
|
realIsPtr().version(ver);
|
||||||
|
realIsPtr().setLabelByteSize(labelByteSize);
|
||||||
|
realIsPtr().setScalarByteSize(scalarByteSize);
|
||||||
}
|
}
|
||||||
return realIsPtr;
|
return realIsPtr;
|
||||||
}
|
}
|
||||||
@ -353,6 +358,22 @@ bool Foam::decomposedBlockData::readBlocks
|
|||||||
|
|
||||||
bool ok = false;
|
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 (commsType == UPstream::commsTypes::scheduled)
|
||||||
{
|
{
|
||||||
if (UPstream::master(comm))
|
if (UPstream::master(comm))
|
||||||
@ -637,19 +658,31 @@ Foam::autoPtr<Foam::ISstream> Foam::decomposedBlockData::readBlocks
|
|||||||
|
|
||||||
Pstream::scatter(ok, Pstream::msgType(), comm);
|
Pstream::scatter(ok, Pstream::msgType(), comm);
|
||||||
|
|
||||||
// version
|
//- Set stream properties from isPtr on master
|
||||||
string versionString(realIsPtr().version().str());
|
|
||||||
Pstream::scatter(versionString, Pstream::msgType(), comm);
|
|
||||||
realIsPtr().version(IOstream::versionNumber(versionString));
|
|
||||||
|
|
||||||
// stream
|
// Scatter master header info
|
||||||
|
string ver;
|
||||||
|
string format;
|
||||||
|
unsigned labelByteSize;
|
||||||
|
unsigned scalarByteSize;
|
||||||
|
if (UPstream::master(comm))
|
||||||
{
|
{
|
||||||
|
ver = isPtr().version().str();
|
||||||
OStringStream os;
|
OStringStream os;
|
||||||
os << realIsPtr().format();
|
os << isPtr().format();
|
||||||
string formatString(os.str());
|
format = os.str();
|
||||||
Pstream::scatter(formatString, Pstream::msgType(), comm);
|
labelByteSize = isPtr().labelByteSize();
|
||||||
realIsPtr().format(formatString);
|
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());
|
word name(headerIO.name());
|
||||||
Pstream::scatter(name, Pstream::msgType(), comm);
|
Pstream::scatter(name, Pstream::msgType(), comm);
|
||||||
|
|||||||
@ -34,6 +34,7 @@ License
|
|||||||
#include "registerSwitch.H"
|
#include "registerSwitch.H"
|
||||||
#include "masterOFstream.H"
|
#include "masterOFstream.H"
|
||||||
#include "OFstream.H"
|
#include "OFstream.H"
|
||||||
|
#include "foamVersion.H"
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */
|
/* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */
|
||||||
|
|
||||||
@ -217,8 +218,15 @@ bool Foam::fileOperations::collatedFileOperation::appendObject
|
|||||||
<< " version " << os.version() << ";\n"
|
<< " version " << os.version() << ";\n"
|
||||||
<< " format " << os.format() << ";\n"
|
<< " format " << os.format() << ";\n"
|
||||||
<< " class " << decomposedBlockData::typeName
|
<< " class " << decomposedBlockData::typeName
|
||||||
<< ";\n"
|
<< ";\n";
|
||||||
<< " location " << pathName << ";\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"
|
<< " object " << pathName.name() << ";\n"
|
||||||
<< "}" << nl;
|
<< "}" << nl;
|
||||||
IOobject::writeDivider(os) << nl;
|
IOobject::writeDivider(os) << nl;
|
||||||
|
|||||||
@ -2039,18 +2039,18 @@ Foam::fileOperations::masterUncollatedFileOperation::readStream
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Scatter master header info
|
// Scatter master header info
|
||||||
string versionString;
|
//string versionString;
|
||||||
string formatString;
|
//string formatString;
|
||||||
if (isPtr.valid())
|
//if (isPtr.valid())
|
||||||
{
|
//{
|
||||||
versionString = isPtr().version().str();
|
// versionString = isPtr().version().str();
|
||||||
OStringStream os;
|
// OStringStream os;
|
||||||
os << isPtr().format();
|
// os << isPtr().format();
|
||||||
formatString = (os.str());
|
// formatString = (os.str());
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
Pstream::scatter(versionString); //, Pstream::msgType(), comm);
|
//Pstream::scatter(versionString); //, Pstream::msgType(), comm);
|
||||||
Pstream::scatter(formatString); //, Pstream::msgType(), comm);
|
//Pstream::scatter(formatString); //, Pstream::msgType(), comm);
|
||||||
|
|
||||||
// Get size of file
|
// Get size of file
|
||||||
off_t sz = Foam::fileSize(fName);
|
off_t sz = Foam::fileSize(fName);
|
||||||
|
|||||||
Reference in New Issue
Block a user