ENH: Added mesh name to path of not using default region

This commit is contained in:
andy
2012-10-16 10:38:21 +01:00
parent f4ee6e1418
commit 967e389e94

View File

@ -25,6 +25,7 @@ License
#include "functionObjectFile.H" #include "functionObjectFile.H"
#include "Time.H" #include "Time.H"
#include "polyMesh.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -47,6 +48,16 @@ Foam::fileName Foam::functionObjectFile::baseFileDir() const
baseDir = baseDir/outputPrefix; baseDir = baseDir/outputPrefix;
} }
// append mesh name if not default region
if (isA<polyMesh>(obr_))
{
const polyMesh& mesh = refCast<const polyMesh>(obr_);
if (mesh.name() != polyMesh::defaultRegion)
{
baseDir = baseDir/mesh.name();
}
}
return baseDir; return baseDir;
} }
@ -58,6 +69,8 @@ Foam::fileName Foam::functionObjectFile::baseTimeDir() const
void Foam::functionObjectFile::createFiles() void Foam::functionObjectFile::createFiles()
{
if (Pstream::master())
{ {
const word startTimeName = const word startTimeName =
obr_.time().timeName(obr_.time().startTime().value()); obr_.time().timeName(obr_.time().startTime().value());
@ -65,7 +78,7 @@ void Foam::functionObjectFile::createFiles()
label i = 0; label i = 0;
forAllConstIter(wordHashSet, names_, iter) forAllConstIter(wordHashSet, names_, iter)
{ {
if (Pstream::master() && !filePtrs_.set(i)) if (!filePtrs_.set(i))
{ {
fileName outputDir(baseFileDir()/prefix_/startTimeName); fileName outputDir(baseFileDir()/prefix_/startTimeName);
@ -77,6 +90,7 @@ void Foam::functionObjectFile::createFiles()
} }
} }
} }
}
void Foam::functionObjectFile::writeFileHeader(const label i) void Foam::functionObjectFile::writeFileHeader(const label i)
@ -86,15 +100,14 @@ void Foam::functionObjectFile::writeFileHeader(const label i)
void Foam::functionObjectFile::write() void Foam::functionObjectFile::write()
{
if (Pstream::master())
{ {
createFiles(); createFiles();
} }
}
void Foam::functionObjectFile::resetNames(const wordList& names) void Foam::functionObjectFile::resetNames(const wordList& names)
{
if (Pstream::master())
{ {
names_.clear(); names_.clear();
names_.insert(names); names_.insert(names);
@ -104,9 +117,12 @@ void Foam::functionObjectFile::resetNames(const wordList& names)
createFiles(); createFiles();
} }
}
void Foam::functionObjectFile::resetName(const word& name) void Foam::functionObjectFile::resetName(const word& name)
{
if (Pstream::master())
{ {
names_.clear(); names_.clear();
names_.insert(name); names_.insert(name);
@ -116,6 +132,7 @@ void Foam::functionObjectFile::resetName(const word& name)
createFiles(); createFiles();
} }
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@ -144,12 +161,17 @@ Foam::functionObjectFile::functionObjectFile
prefix_(prefix), prefix_(prefix),
names_(), names_(),
filePtrs_() filePtrs_()
{
if (Pstream::master())
{ {
names_.clear(); names_.clear();
names_.insert(name); names_.insert(name);
filePtrs_.clear(); filePtrs_.clear();
filePtrs_.setSize(names_.toc().size()); filePtrs_.setSize(names_.toc().size());
// cannot create files - need to access virtual function
}
} }
@ -164,12 +186,17 @@ Foam::functionObjectFile::functionObjectFile
prefix_(prefix), prefix_(prefix),
names_(names), names_(names),
filePtrs_() filePtrs_()
{
if (Pstream::master())
{ {
names_.clear(); names_.clear();
names_.insert(names); names_.insert(names);
filePtrs_.clear(); filePtrs_.clear();
filePtrs_.setSize(names_.toc().size()); filePtrs_.setSize(names_.toc().size());
// cannot create files - need to access virtual function
}
} }
@ -183,6 +210,13 @@ Foam::functionObjectFile::~functionObjectFile()
Foam::OFstream& Foam::functionObjectFile::file() Foam::OFstream& Foam::functionObjectFile::file()
{ {
if (!Pstream::master())
{
FatalErrorIn("Foam::OFstream& Foam::functionObjectFile::file()")
<< "Request for file() can only be done by the master process"
<< abort(FatalError);
}
if (filePtrs_.size() != 1) if (filePtrs_.size() != 1)
{ {
WarningIn("Foam::Ostream& Foam::functionObjectFile::file()") WarningIn("Foam::Ostream& Foam::functionObjectFile::file()")
@ -196,12 +230,29 @@ Foam::OFstream& Foam::functionObjectFile::file()
Foam::PtrList<Foam::OFstream>& Foam::functionObjectFile::files() Foam::PtrList<Foam::OFstream>& Foam::functionObjectFile::files()
{ {
if (!Pstream::master())
{
FatalErrorIn("Foam::OFstream& Foam::functionObjectFile::files()")
<< "Request for files() can only be done by the master process"
<< abort(FatalError);
}
return filePtrs_; return filePtrs_;
} }
Foam::OFstream& Foam::functionObjectFile::file(const label i) Foam::OFstream& Foam::functionObjectFile::file(const label i)
{ {
if (!Pstream::master())
{
FatalErrorIn
(
"Foam::OFstream& Foam::functionObjectFile::file(const label)"
)
<< "Request for file(i) can only be done by the master process"
<< abort(FatalError);
}
return filePtrs_[i]; return filePtrs_[i];
} }