From 85c6bc982bc36c00312ddd91f74713e0362e69da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com>
Date: Thu, 11 Feb 2021 18:12:05 +0100
Subject: [PATCH] Add generation info to .vtu and .pvtu files

---
 src/output/VTKWriter.cpp | 20 ++++++++++++++++++++
 src/output/VTKWriter.hpp |  2 ++
 2 files changed, 22 insertions(+)

diff --git a/src/output/VTKWriter.cpp b/src/output/VTKWriter.cpp
index 103807dbc..796a1c0ff 100644
--- a/src/output/VTKWriter.cpp
+++ b/src/output/VTKWriter.cpp
@@ -3,7 +3,9 @@
 #include <mesh/Connectivity.hpp>
 #include <mesh/Mesh.hpp>
 #include <utils/Messenger.hpp>
+#include <utils/RevisionInfo.hpp>
 
+#include <ctime>
 #include <fstream>
 #include <iomanip>
 #include <sstream>
@@ -18,6 +20,22 @@ VTKWriter::_getFilenamePVTU() const
   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
 {
@@ -269,6 +287,7 @@ VTKWriter::_write(const std::shared_ptr<const MeshType>& mesh,
   if (parallel::rank() == 0) {   // write PVTK file
     std::ofstream fout(_getFilenamePVTU());
     fout << "<?xml version=\"1.0\"?>\n";
+    fout << _getDateAndVersionComment();
     fout << "<VTKFile type=\"PUnstructuredGrid\">\n";
     fout << "<PUnstructuredGrid GhostLevel=\"0\">\n";
 
@@ -318,6 +337,7 @@ VTKWriter::_write(const std::shared_ptr<const MeshType>& mesh,
   {   // write VTK files
     std::ofstream fout(_getFilenameVTU(parallel::rank()));
     fout << "<?xml version=\"1.0\"?>\n";
+    fout << _getDateAndVersionComment();
     fout << "<VTKFile type=\"UnstructuredGrid\">\n";
     fout << "<UnstructuredGrid>\n";
     fout << "<Piece NumberOfPoints=\"" << mesh->numberOfNodes() << "\" NumberOfCells=\"" << mesh->numberOfCells()
diff --git a/src/output/VTKWriter.hpp b/src/output/VTKWriter.hpp
index fadec4f9d..52a4bd9d9 100644
--- a/src/output/VTKWriter.hpp
+++ b/src/output/VTKWriter.hpp
@@ -19,6 +19,8 @@ class VTKWriter : public IWriter
   mutable double m_last_time;
   const double m_time_period;
 
+  std::string _getDateAndVersionComment() const;
+
   std::string _getFilenamePVTU() const;
 
   std::string _getFilenameVTU(int rank_number) const;
-- 
GitLab