86 lines
2.1 KiB
C++
86 lines
2.1 KiB
C++
#include "fileSeries.hpp"
|
|
#include "oFstream.hpp"
|
|
#include "streams.hpp"
|
|
|
|
void pFlow::PFtoVTK::fileSeries::writeOneBaseName(const word &baseName)
|
|
{
|
|
auto& fList = timeFiles_[baseName];
|
|
word fileName = baseName + ".vtk.series";
|
|
oFstream os(destDir_+fileName);
|
|
|
|
REPORT(1)<<"Writing to "<<os.name()<<END_REPORT;
|
|
|
|
os<<"{\n";
|
|
os<<" \"file-series-version\" : \"1.0\",\n";
|
|
os<<" \"files\" : [\n";
|
|
const auto lastItem = std::prev(fList.end());
|
|
for(auto iter = fList.begin(); iter != fList.end(); ++iter)
|
|
{
|
|
os<<" {\"name\" : \"";
|
|
os<< iter->second;
|
|
os<<"\", \"time\" :";
|
|
os<<iter->first;
|
|
if(iter == lastItem)
|
|
os<<"}\n";
|
|
else
|
|
os<<"},\n";
|
|
}
|
|
os<<" ]\n";
|
|
os<<"}\n";
|
|
|
|
}
|
|
|
|
pFlow::PFtoVTK::fileSeries::fileSeries(const fileSystem dest)
|
|
: destDir_(dest)
|
|
{
|
|
|
|
|
|
}
|
|
|
|
pFlow::PFtoVTK::fileSeries::~fileSeries()
|
|
{
|
|
REPORT(0)<<"Writing time series files..."<<END_REPORT;
|
|
for(const auto& fSeries:timeFiles_)
|
|
{
|
|
writeOneBaseName(fSeries.first);
|
|
}
|
|
}
|
|
|
|
bool pFlow::PFtoVTK::fileSeries::addTimeFile(const word& baseName, real time, const word &fileName)
|
|
{
|
|
fileSystem fs(fileName);
|
|
word relFileName = fs.relative(destDir_).wordPath();
|
|
|
|
if( auto [iter, found]=timeFiles_.findIf(baseName); found )
|
|
{
|
|
return iter->second.insertIf(time, relFileName);
|
|
}
|
|
else
|
|
{
|
|
TimeFileType newList;
|
|
newList.insertIf(time, relFileName);
|
|
return timeFiles_.insertIf(baseName, newList);
|
|
}
|
|
|
|
}
|
|
|
|
bool pFlow::PFtoVTK::fileSeries::addTimeFile(const wordList &baseNames, real time, const wordList &fileNames)
|
|
{
|
|
if(baseNames.size()!= fileNames.size() )
|
|
{
|
|
fatalErrorInFunction<<"sizes of base names and file names are not equal\n";
|
|
return false;
|
|
}
|
|
|
|
for(size_t i=0; i<baseNames.size(); i++)
|
|
{
|
|
if(!addTimeFile(baseNames[i], time, fileNames[i]))
|
|
{
|
|
fatalErrorInFunction<<"Error in adding multiple time files\n";
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|