Select Git revision
VTKWriter.cpp
VTKWriter.cpp 19.17 KiB
#include <output/VTKWriter.hpp>
#include <mesh/Connectivity.hpp>
#include <mesh/Mesh.hpp>
#include <utils/Messenger.hpp>
#include <utils/RevisionInfo.hpp>
#include <ctime>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <unordered_map>
std::string
VTKWriter::_getFilenamePVTU() const
{
std::ostringstream sout;
sout << m_base_filename;
sout << '.' << std::setfill('0') << std::setw(4) << m_file_number << ".pvtu";
return sout.str();
}
std::string
VTKWriter::_getDateAndVersionComment() const
{
std::ostringstream os;
std::time_t now = std::time(nullptr);
os << "<!--\n";
os << " Generated by pugs: " << std::ctime(&now);
os << " version: " << RevisionInfo::version() << '\n';
os << " tag: " << RevisionInfo::gitTag() << '\n';
os << " HEAD: " << RevisionInfo::gitHead() << '\n';
os << " hash: " << RevisionInfo::gitHash() << " (" << ((RevisionInfo::gitIsClean()) ? "clean" : "dirty") << ")\n";
os << "-->\n";
return os.str();
}
std::string
VTKWriter::_getFilenameVTU(int rank_number) const
{
std::ostringstream sout;
sout << m_base_filename;
if (parallel::size() > 1) {
sout << '-' << std::setfill('0') << std::setw(4) << rank_number;
}
sout << '.' << std::setfill('0') << std::setw(4) << m_file_number << ".vtu";
return sout.str();
}
template <typename DataType>
void
VTKWriter::_write_node_pvtu(std::ofstream& os, const std::string& name, const NodeValue<const DataType>&) const
{
os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\"/>\n";
}
template <size_t N, typename DataType>
void
VTKWriter::_write_node_pvtu(std::ofstream& os,
const std::string& name,
const NodeValue<const TinyVector<N, DataType>>&) const
{
os << "<PDataArray type=\"" << VTKType<DataType>::name << "\" Name=\"" << name << "\" NumberOfComponents=\"" << N
<< "\"/>\n";
}
template <size_t N, typename DataType>
void
VTKWriter::_write_node_pvtu(std::ofstream& os,