56 commsType_(commsType),
63 <<
"decomposedBlockData " <<
name()
64 <<
" constructed with IOobject::MUST_READ_IF_MODIFIED" 65 " but decomposedBlockData does not support automatic rereading." 91 commsType_(commsType),
98 <<
"decomposedBlockData " <<
name()
99 <<
" constructed with IOobject::MUST_READ_IF_MODIFIED" 100 " but decomposedBlockData does not support automatic rereading." 131 commsType_(commsType),
138 <<
"decomposedBlockData " <<
name()
139 <<
" constructed with IOobject::MUST_READ_IF_MODIFIED" 140 " but decomposedBlockData does not support automatic rereading." 172 Pout<<
"decomposedBlockData::readMasterHeader:" 180 is.
fatalCheck(
"read(Istream&) : reading entry");
201 <<
" version " << version <<
";\n" 202 <<
" format " << format <<
";\n" 203 <<
" class " << type <<
";\n";
206 os <<
" note " << note <<
";\n";
211 os <<
" location " << location <<
";\n";
214 os <<
" object " << name <<
";\n" 230 Pout<<
"decomposedBlockData::readBlock:" 231 <<
" stream:" << is.
name() <<
" attempt to read block " << blocki
243 is.
fatalCheck(
"read(Istream&) : reading entry");
245 string buf(data.begin(), data.size());
252 <<
"problem while reading header for object " 260 is.
fatalCheck(
"read(Istream&) : reading entry");
265 string buf(data.begin(), data.size());
272 <<
"problem while reading header for object " 275 ver = headerStream.version();
276 fmt = headerStream.format();
279 for (
label i = 1; i < blocki+1; i++)
283 is.
fatalCheck(
"read(Istream&) : reading entry");
285 string buf(data.begin(), data.size());
290 realIsPtr().version(ver);
306 Pout<<
"decomposedBlockData::readBlocks:" 307 <<
" stream:" << (isPtr.
valid() ? isPtr().name() :
"invalid")
309 <<
" comm:" << comm <<
endl;
324 is.
fatalCheck(
"read(Istream&) : reading entry");
336 is.
fatalCheck(
"read(Istream&) : reading entry");
381 is.
fatalCheck(
"read(Istream&) : reading entry");
393 is.
fatalCheck(
"read(Istream&) : reading entry");
427 Pout<<
"decomposedBlockData::readBlocks:" 428 <<
" stream:" << (isPtr.
valid() ? isPtr().name() :
"invalid")
447 is.
fatalCheck(
"read(Istream&) : reading entry");
449 string buf(data.begin(), data.size());
456 <<
"problem while reading header for object " 470 is.
fatalCheck(
"read(Istream&) : reading entry");
497 string buf(data.begin(), data.size());
518 is.
fatalCheck(
"read(Istream&) : reading entry");
520 string buf(data.begin(), data.size());
527 <<
"problem while reading header for object " 541 is.
fatalCheck(
"read(Istream&) : reading entry");
558 string buf(data.begin(), data.size());
566 string versionString(realIsPtr().version().str());
573 os << realIsPtr().format();
574 string formatString(os.
str());
576 realIsPtr().format(formatString);
601 char* data0Ptr =
reinterpret_cast<char*
>(datas.
begin());
608 forAll(recvOffsets, proci)
613 int(reinterpret_cast<char*>(&datas[proci]) - data0Ptr);
620 reinterpret_cast<const char*>(&data),
636 const label startProc,
649 sliceSizes.
setSize(numProcs, 0);
650 sliceOffsets.
setSize(numProcs+1, 0);
653 label proci = startProc;
654 for (
label i = 0; i < nProcs; i++)
656 sliceSizes[proci] = int(recvSizes[proci]);
657 sliceOffsets[proci] = totalSize;
658 totalSize += sliceSizes[proci];
661 sliceOffsets[proci] = totalSize;
693 const off_t maxBufferSize,
695 const label startProci
700 label nSendProcs = -1;
703 off_t totalSize = recvSizes[startProci];
704 label proci = startProci+1;
705 while (proci < nProcs && (totalSize+recvSizes[proci] < maxBufferSize))
707 totalSize += recvSizes[proci];
711 nSendProcs = proci-startProci;
718 reinterpret_cast<const char*>(&nSendProcs),
721 reinterpret_cast<char*>(&n),
741 const bool syncReturnState
746 Pout<<
"decomposedBlockData::writeBlocks:" 747 <<
" stream:" << (osPtr.
valid() ? osPtr().name() :
"invalid")
748 <<
" data:" << data.
size()
749 <<
" (master only) slaveData:" << slaveData.size()
757 if (slaveData.size())
777 label slaveOffset = 0;
779 for (
label proci = 1; proci < nProcs; proci++)
781 os <<
nl <<
nl <<
"// Processor" << proci <<
nl;
784 os << slaveData[proci];
785 slaveOffset += recvSizes[proci];
807 for (
label proci = 1; proci < nProcs; proci++)
809 elems.
setSize(recvSizes[proci]);
820 os <<
nl <<
nl <<
"// Processor" << proci <<
nl;
860 label nSendProcs = nProcs-1;
862 while (nSendProcs > 0 && startProc < nProcs)
864 nSendProcs = calcNumProcs
870 maxMasterFileBufferSize
905 label proci = startProc;
906 proci < startProc+nSendProcs;
910 os <<
nl <<
nl <<
"// Processor" << proci <<
nl;
917 sliceOffsets[proci+1]-sliceOffsets[proci],
923 startProc += nSendProcs;
954 return readBlocks(comm_, isPtr, data, commsType_);
964 reinterpret_cast<const char*>(data.
cbegin()),
986 formatString = os.
str();
998 fileName masterLocation(instance()/db().dbDir()/local());
1008 io.headerClassName(),
1044 gather(comm_,
label(this->byteSize()), recvSizes);
1066 is.
fatalCheck(
"decomposedBlockData::numBlocks(const fileName&)");
1074 token firstToken(is);
1091 token sizeToken(is);
decomposedBlockData(const label comm, const IOobject &, const UPstream::commsTypes=UPstream::commsTypes::scheduled)
Construct given an IOobject.
A simple container for copying or transferring objects of type <T>.
virtual ~decomposedBlockData()
Destructor.
static bool readBlocks(const label comm, autoPtr< ISstream > &isPtr, List< char > &data, const UPstream::commsTypes commsType)
Read data into *this. ISstream is only valid on master.
#define forAll(list, i)
Loop across all elements in list.
static streamFormat formatEnum(const word &)
Return stream format of given format name.
virtual bool read()
Read object.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
static int masterNo()
Process index of the master.
const word & name() const
Return name.
A class for handling file names.
static Stream & writeBanner(Stream &os, bool noHint=false)
Write the standard OpenFOAM file/dictionary banner.
virtual bool writeData(Ostream &) const
Write separated content. Assumes content is the serialised data.
void finishedSends(const bool block=true)
Mark all sends as having been done. This will start receives.
errorManipArg< error, int > exit(error &err, const int errNo=1)
void reset(T *=nullptr)
If object pointer already set, delete object and set to given.
static void scatter(const char *sendData, const UList< int > &sendSizes, const UList< int > &sendOffsets, char *recvData, int recvSize, const label communicator=0)
Send data to all processors from the root of the communicator.
A list of keyword definitions, which are a keyword followed by any number of values (e...
commsTypes
Types of communications.
const word & wordToken() const
static Stream & writeDivider(Stream &os)
Write the standard file section divider.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
static bool writeBlocks(const label comm, autoPtr< OSstream > &osPtr, List< std::streamoff > &start, const UList< char > &masterData, const labelUList &recvSizes, const PtrList< SubList< char >> &slaveData, const UPstream::commsTypes, const bool syncReturnState=true)
Write *this. Ostream only valid on master. Returns starts of.
void size(const label)
Override size to be inconsistent with allocated storage.
virtual void rename(const word &newName)
Rename.
A token holds items read from Istream.
static int myProcNo(const label communicator=0)
Number of this process (starting from masterNo() = 0)
const_iterator cbegin() const
Return const_iterator to begin traversing the constant UList.
void putBack(const token &)
Put back token.
Ostream & endl(Ostream &os)
Add newline and flush stream.
static label numBlocks(const fileName &)
Detect number of blocks in a file.
static bool master(const label communicator=0)
Am I the master process.
static int & msgType()
Message tag of standard messages.
versionNumber version() const
Return the stream version.
bool good() const
Return true if next operation might succeed.
virtual Ostream & writeQuoted(const std::string &, const bool quoted=true)=0
Write std::string surrounded by quotes.
Input inter-processor communications stream.
Input inter-processor communications stream operating on external buffer.
bool readHeader(Istream &)
Read header.
string & note()
Return non-constant access to the optional note.
A List obtained as a section of another List.
bool read(const char *, int32_t &)
A class for handling words, derived from string.
virtual const fileName & name() const
Return the name of the stream.
static void writeHeader(Ostream &os, const IOstream::versionNumber version, const IOstream::streamFormat format, const word &type, const string ¬e, const fileName &location, const word &name)
Helper: write FoamFile IOobject header.
iterator begin()
Return an iterator to begin traversing the UList.
streamFormat
Enumeration for the format of data in the stream.
static const word null
An empty word.
const fileOperation & fileHandler()
Get current file handler.
streamFormat format() const
Return current stream format.
bool valid() const
Return true if the autoPtr valid (ie, the pointer is set)
void fatalCheck(const char *operation) const
Check IOstream status for given operation.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
static void scatter(const List< commsStruct > &comms, T &Value, const int tag, const label comm)
Scatter data. Distribute without modification. Reverse of gather.
compressionType
Enumeration for the format of data in the stream.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Output inter-processor communications stream operating on external buffer.
static label read(const commsTypes commsType, const int fromProcNo, char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label communicator=0)
Read into given buffer from given processor and return the.
defineTypeNameAndDebug(combustionModel, 0)
static bool write(const commsTypes commsType, const int toProcNo, const char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label communicator=0)
Write given buffer to given processor.
static const NamedEnum< commsTypes, 3 > commsTypeNames
Output inter-processor communications stream.
Buffers for inter-processor communications streams (UOPstream, UIPstream).
static void gatherSlaveData(const label comm, const UList< char > &data, const labelUList &recvSizes, const label startProc, const label nProcs, List< int > &recvOffsets, List< char > &recvData)
Helper: gather data from (subset of) slaves. Returns.
word name(const complex &)
Return a string representation of a complex.
virtual bool writeObject(IOstream::streamFormat, IOstream::versionNumber, IOstream::compressionType, const bool valid) const
Write using given format, version and compression.
void operator=(const UList< T > &)
Assignment to UList operator. Takes linear time.
static label calcNumProcs(const label comm, const off_t maxBufferSize, const labelUList &recvSizes, const label startProci)
Helper: determine number of processors whose recvSizes fits.
virtual ostream & stdStream()
Access to underlying std::ostream.
void setSize(const label)
Reset size of List.
static autoPtr< ISstream > readBlock(const label blocki, Istream &is, IOobject &headerIO)
Read selected block (non-seeking) + header information.
static label nProcs(const label communicator=0)
Number of processes in parallel run.
static Stream & writeEndDivider(Stream &os)
Write the standard end file divider.
static bool readMasterHeader(IOobject &, Istream &)
Read header. Call only on master.
static void gather(const char *sendData, int sendSize, char *recvData, const UList< int > &recvSizes, const UList< int > &recvOffsets, const label communicator=0)
Receive data from all processors on the master.
#define WarningInFunction
Report a warning using Foam::Warning.
static const versionNumber currentVersion
Current version number.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
string str() const
Return the versionNumber as a character string.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
std::streamsize byteSize() const
Return the binary size in number of characters of the UList.
Input from memory buffer stream.
prefixOSstream Pout(cout, "Pout")
string str() const
Return the string.
regIOobject is an abstract class derived from IOobject to handle automatic object registration with t...
bool writeHeader(Ostream &) const
Write header.
label size() const
Return the number of elements in the UList.
readOption readOpt() const
const word & headerClassName() const
Return name of the class name read from header.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Output to memory buffer stream.
void transfer(List< T > &)
Transfer the contents of the argument List into this list.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.
static void gather(const label comm, const label data, labelList &datas)
Helper: gather single label. Note: using native Pstream.