From 72cc08f14a29649b3a5172af25c0d43b3afad0c6 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Wed, 29 May 2024 08:49:53 +0200
Subject: [PATCH] Add a checkpointing namespace

---
 src/language/modules/CoreModule.cpp           |  9 ++-
 src/language/modules/MeshModule.cpp           | 59 +++++++++++--------
 src/language/modules/SchemeModule.cpp         | 30 +++++-----
 src/language/modules/WriterModule.cpp         | 15 +++--
 src/output/WriterBase.hpp                     | 24 ++++++--
 src/utils/checkpointing/CheckpointUtils.cpp   |  5 ++
 src/utils/checkpointing/CheckpointUtils.hpp   |  5 ++
 src/utils/checkpointing/ReadArray.hpp         |  5 ++
 .../ReadDiscreteFunctionVariant.cpp           |  5 ++
 .../ReadDiscreteFunctionVariant.hpp           |  5 ++
 .../ReadIBoundaryConditionDescriptor.cpp      |  5 ++
 .../ReadIBoundaryConditionDescriptor.hpp      |  5 ++
 .../checkpointing/ReadIBoundaryDescriptor.cpp |  5 ++
 .../checkpointing/ReadIBoundaryDescriptor.hpp |  5 ++
 .../ReadIDiscreteFunctionDescriptor.cpp       |  5 ++
 .../ReadIDiscreteFunctionDescriptor.hpp       |  5 ++
 .../ReadIInterfaceDescriptor.cpp              |  5 ++
 .../ReadIInterfaceDescriptor.hpp              |  5 ++
 .../checkpointing/ReadINamedDiscreteData.cpp  |  5 ++
 .../checkpointing/ReadINamedDiscreteData.hpp  |  5 ++
 .../ReadIQuadratureDescriptor.cpp             |  5 ++
 .../ReadIQuadratureDescriptor.hpp             |  5 ++
 src/utils/checkpointing/ReadIWriter.cpp       |  5 ++
 src/utils/checkpointing/ReadIWriter.hpp       |  5 ++
 .../checkpointing/ReadIZoneDescriptor.cpp     |  5 ++
 .../checkpointing/ReadIZoneDescriptor.hpp     |  5 ++
 src/utils/checkpointing/ReadItemArray.hpp     |  5 ++
 .../checkpointing/ReadItemArrayVariant.cpp    |  5 ++
 .../checkpointing/ReadItemArrayVariant.hpp    |  5 ++
 src/utils/checkpointing/ReadItemType.cpp      |  5 ++
 src/utils/checkpointing/ReadItemType.hpp      |  5 ++
 src/utils/checkpointing/ReadItemValue.hpp     |  5 ++
 .../checkpointing/ReadItemValueVariant.cpp    |  5 ++
 .../checkpointing/ReadItemValueVariant.hpp    |  5 ++
 src/utils/checkpointing/ReadMesh.cpp          |  5 ++
 src/utils/checkpointing/ReadMesh.hpp          |  5 ++
 src/utils/checkpointing/ReadOStream.cpp       |  5 ++
 src/utils/checkpointing/ReadOStream.hpp       |  5 ++
 .../ReadSubItemArrayPerItemVariant.cpp        |  5 ++
 .../ReadSubItemArrayPerItemVariant.hpp        |  5 ++
 .../ReadSubItemValuePerItemVariant.cpp        |  5 ++
 .../ReadSubItemValuePerItemVariant.hpp        |  5 ++
 src/utils/checkpointing/ReadTable.hpp         |  5 ++
 .../ReadVariableBCDescriptor.cpp              |  5 ++
 .../ReadVariableBCDescriptor.hpp              |  5 ++
 src/utils/checkpointing/Resume.cpp            |  6 +-
 src/utils/checkpointing/ResumingData.cpp      |  5 ++
 src/utils/checkpointing/ResumingData.hpp      |  5 ++
 48 files changed, 294 insertions(+), 59 deletions(-)

diff --git a/src/language/modules/CoreModule.cpp b/src/language/modules/CoreModule.cpp
index 7f894d406..14817b1c8 100644
--- a/src/language/modules/CoreModule.cpp
+++ b/src/language/modules/CoreModule.cpp
@@ -232,10 +232,13 @@ CoreModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeOStream(symbol_name, embedded_data, file, checkpoint_group, symbol_table_group);
+                           checkpointing::writeOStream(symbol_name, embedded_data, file, checkpoint_group,
+                                                       symbol_table_group);
                          }),
-                         std::function([](const std::string& symbol_name, const HighFive::Group& symbol_table_group)
-                                         -> EmbeddedData { return readOStream(symbol_name, symbol_table_group); }));
+                         std::function([](const std::string& symbol_name,
+                                          const HighFive::Group& symbol_table_group) -> EmbeddedData {
+                           return checkpointing::readOStream(symbol_name, symbol_table_group);
+                         }));
 
 #endif   // PUGS_HAS_HDF5
 }
diff --git a/src/language/modules/MeshModule.cpp b/src/language/modules/MeshModule.cpp
index 56d893f71..7c5ea712a 100644
--- a/src/language/modules/MeshModule.cpp
+++ b/src/language/modules/MeshModule.cpp
@@ -322,22 +322,25 @@ MeshModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeMesh(symbol_name, embedded_data, file, checkpoint_group, symbol_table_group);
+                           checkpointing::writeMesh(symbol_name, embedded_data, file, checkpoint_group,
+                                                    symbol_table_group);
                          }),
-                         std::function([](const std::string& symbol_name, const HighFive::Group& symbol_table_group)
-                                         -> EmbeddedData { return readMesh(symbol_name, symbol_table_group); }));
+                         std::function([](const std::string& symbol_name,
+                                          const HighFive::Group& symbol_table_group) -> EmbeddedData {
+                           return checkpointing::readMesh(symbol_name, symbol_table_group);
+                         }));
 
   CheckpointResumeRepository::instance()
     .addCheckpointResume(ast_node_data_type_from<std::shared_ptr<const IBoundaryDescriptor>>,
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeIBoundaryDescriptor(symbol_name, embedded_data, file, checkpoint_group,
-                                                    symbol_table_group);
+                           checkpointing::writeIBoundaryDescriptor(symbol_name, embedded_data, file, checkpoint_group,
+                                                                   symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readIBoundaryDescriptor(symbol_name, symbol_table_group);
+                           return checkpointing::readIBoundaryDescriptor(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -345,12 +348,12 @@ MeshModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeIInterfaceDescriptor(symbol_name, embedded_data, file, checkpoint_group,
-                                                     symbol_table_group);
+                           checkpointing::writeIInterfaceDescriptor(symbol_name, embedded_data, file, checkpoint_group,
+                                                                    symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readIInterfaceDescriptor(symbol_name, symbol_table_group);
+                           return checkpointing::readIInterfaceDescriptor(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -358,11 +361,12 @@ MeshModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeIZoneDescriptor(symbol_name, embedded_data, file, checkpoint_group, symbol_table_group);
+                           checkpointing::writeIZoneDescriptor(symbol_name, embedded_data, file, checkpoint_group,
+                                                               symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readIZoneDescriptor(symbol_name, symbol_table_group);
+                           return checkpointing::readIZoneDescriptor(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -370,22 +374,25 @@ MeshModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeItemType(symbol_name, embedded_data, file, checkpoint_group, symbol_table_group);
+                           checkpointing::writeItemType(symbol_name, embedded_data, file, checkpoint_group,
+                                                        symbol_table_group);
                          }),
-                         std::function([](const std::string& symbol_name, const HighFive::Group& symbol_table_group)
-                                         -> EmbeddedData { return readItemType(symbol_name, symbol_table_group); }));
+                         std::function([](const std::string& symbol_name,
+                                          const HighFive::Group& symbol_table_group) -> EmbeddedData {
+                           return checkpointing::readItemType(symbol_name, symbol_table_group);
+                         }));
 
   CheckpointResumeRepository::instance()
     .addCheckpointResume(ast_node_data_type_from<std::shared_ptr<const ItemArrayVariant>>,
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeItemArrayVariant(symbol_name, embedded_data, file, checkpoint_group,
-                                                 symbol_table_group);
+                           checkpointing::writeItemArrayVariant(symbol_name, embedded_data, file, checkpoint_group,
+                                                                symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readItemArrayVariant(symbol_name, symbol_table_group);
+                           return checkpointing::readItemArrayVariant(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -393,12 +400,12 @@ MeshModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeItemValueVariant(symbol_name, embedded_data, file, checkpoint_group,
-                                                 symbol_table_group);
+                           checkpointing::writeItemValueVariant(symbol_name, embedded_data, file, checkpoint_group,
+                                                                symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readItemValueVariant(symbol_name, symbol_table_group);
+                           return checkpointing::readItemValueVariant(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -406,12 +413,12 @@ MeshModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeSubItemArrayPerItemVariant(symbol_name, embedded_data, file, checkpoint_group,
-                                                           symbol_table_group);
+                           checkpointing::writeSubItemArrayPerItemVariant(symbol_name, embedded_data, file,
+                                                                          checkpoint_group, symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readSubItemArrayPerItemVariant(symbol_name, symbol_table_group);
+                           return checkpointing::readSubItemArrayPerItemVariant(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -419,12 +426,12 @@ MeshModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeSubItemValuePerItemVariant(symbol_name, embedded_data, file, checkpoint_group,
-                                                           symbol_table_group);
+                           checkpointing::writeSubItemValuePerItemVariant(symbol_name, embedded_data, file,
+                                                                          checkpoint_group, symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readSubItemValuePerItemVariant(symbol_name, symbol_table_group);
+                           return checkpointing::readSubItemValuePerItemVariant(symbol_name, symbol_table_group);
                          }));
 
 #endif   // PUGS_HAS_HDF5
diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp
index 6c022fba0..658642e06 100644
--- a/src/language/modules/SchemeModule.cpp
+++ b/src/language/modules/SchemeModule.cpp
@@ -700,12 +700,12 @@ SchemeModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeDiscreteFunctionVariant(symbol_name, embedded_data, file, checkpoint_group,
-                                                        symbol_table_group);
+                           checkpointing::writeDiscreteFunctionVariant(symbol_name, embedded_data, file,
+                                                                       checkpoint_group, symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readDiscreteFunctionVariant(symbol_name, symbol_table_group);
+                           return checkpointing::readDiscreteFunctionVariant(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -713,12 +713,12 @@ SchemeModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeIBoundaryConditionDescriptor(symbol_name, embedded_data, file, checkpoint_group,
-                                                             symbol_table_group);
+                           checkpointing::writeIBoundaryConditionDescriptor(symbol_name, embedded_data, file,
+                                                                            checkpoint_group, symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readIBoundaryConditionDescriptor(symbol_name, symbol_table_group);
+                           return checkpointing::readIBoundaryConditionDescriptor(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -726,12 +726,12 @@ SchemeModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeIDiscreteFunctionDescriptor(symbol_name, embedded_data, file, checkpoint_group,
-                                                            symbol_table_group);
+                           checkpointing::writeIDiscreteFunctionDescriptor(symbol_name, embedded_data, file,
+                                                                           checkpoint_group, symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readIDiscreteFunctionDescriptor(symbol_name, symbol_table_group);
+                           return checkpointing::readIDiscreteFunctionDescriptor(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -739,12 +739,12 @@ SchemeModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeIQuadratureDescriptor(symbol_name, embedded_data, file, checkpoint_group,
-                                                      symbol_table_group);
+                           checkpointing::writeIQuadratureDescriptor(symbol_name, embedded_data, file, checkpoint_group,
+                                                                     symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readIQuadratureDescriptor(symbol_name, symbol_table_group);
+                           return checkpointing::readIQuadratureDescriptor(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -752,12 +752,12 @@ SchemeModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeVariableBCDescriptor(symbol_name, embedded_data, file, checkpoint_group,
-                                                     symbol_table_group);
+                           checkpointing::writeVariableBCDescriptor(symbol_name, embedded_data, file, checkpoint_group,
+                                                                    symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readVariableBCDescriptor(symbol_name, symbol_table_group);
+                           return checkpointing::readVariableBCDescriptor(symbol_name, symbol_table_group);
                          }));
 
 #endif   // PUGS_HAS_HDF5
diff --git a/src/language/modules/WriterModule.cpp b/src/language/modules/WriterModule.cpp
index 03ea6268f..e75919ef2 100644
--- a/src/language/modules/WriterModule.cpp
+++ b/src/language/modules/WriterModule.cpp
@@ -200,12 +200,12 @@ WriterModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeINamedDiscreteData(symbol_name, embedded_data, file, checkpoint_group,
-                                                   symbol_table_group);
+                           checkpointing::writeINamedDiscreteData(symbol_name, embedded_data, file, checkpoint_group,
+                                                                  symbol_table_group);
                          }),
                          std::function([](const std::string& symbol_name,
                                           const HighFive::Group& symbol_table_group) -> EmbeddedData {
-                           return readINamedDiscreteData(symbol_name, symbol_table_group);
+                           return checkpointing::readINamedDiscreteData(symbol_name, symbol_table_group);
                          }));
 
   CheckpointResumeRepository::instance()
@@ -213,10 +213,13 @@ WriterModule::registerCheckpointResume() const
                          std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data,
                                           HighFive::File& file, HighFive::Group& checkpoint_group,
                                           HighFive::Group& symbol_table_group) {
-                           writeIWriter(symbol_name, embedded_data, file, checkpoint_group, symbol_table_group);
+                           checkpointing::writeIWriter(symbol_name, embedded_data, file, checkpoint_group,
+                                                       symbol_table_group);
                          }),
-                         std::function([](const std::string& symbol_name, const HighFive::Group& symbol_table_group)
-                                         -> EmbeddedData { return readIWriter(symbol_name, symbol_table_group); }));
+                         std::function([](const std::string& symbol_name,
+                                          const HighFive::Group& symbol_table_group) -> EmbeddedData {
+                           return checkpointing::readIWriter(symbol_name, symbol_table_group);
+                         }));
 
 #endif   // PUGS_HAS_HDF5
 }
diff --git a/src/output/WriterBase.hpp b/src/output/WriterBase.hpp
index d3821b964..dcd61da2d 100644
--- a/src/output/WriterBase.hpp
+++ b/src/output/WriterBase.hpp
@@ -15,6 +15,17 @@ class OutputNamedItemDataSet;
 class NamedDiscreteFunction;
 class EmbeddedData;
 
+namespace checkpointing
+{
+void writeIWriter(const std::string& symbol_name,
+                  const EmbeddedData& embedded_data,
+                  HighFive::File& file,
+                  HighFive::Group& checkpoint_group,
+                  HighFive::Group& symbol_table_group);
+
+EmbeddedData readIWriter(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
+}   // namespace checkpointing
+
 class WriterBase : public IWriter
 {
  public:
@@ -95,14 +106,15 @@ class WriterBase : public IWriter
 
  protected:
   // useful for checkpoint
-  friend void writeIWriter(const std::string& symbol_name,
-                           const EmbeddedData& embedded_data,
-                           HighFive::File& file,
-                           HighFive::Group& checkpoint_group,
-                           HighFive::Group& symbol_table_group);
+  friend void checkpointing::writeIWriter(const std::string& symbol_name,
+                                          const EmbeddedData& embedded_data,
+                                          HighFive::File& file,
+                                          HighFive::Group& checkpoint_group,
+                                          HighFive::Group& symbol_table_group);
 
   // useful for resume
-  friend EmbeddedData readIWriter(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
+  friend EmbeddedData checkpointing::readIWriter(const std::string& symbol_name,
+                                                 const HighFive::Group& symbol_table_group);
 
   const std::string m_base_filename;
 
diff --git a/src/utils/checkpointing/CheckpointUtils.cpp b/src/utils/checkpointing/CheckpointUtils.cpp
index fb0e9361f..e2d6d2b21 100644
--- a/src/utils/checkpointing/CheckpointUtils.cpp
+++ b/src/utils/checkpointing/CheckpointUtils.cpp
@@ -54,6 +54,9 @@
 #include <scheme/OutflowBoundaryConditionDescriptor.hpp>
 #include <scheme/SymmetryBoundaryConditionDescriptor.hpp>
 
+namespace checkpointing
+{
+
 void writeMesh(std::shared_ptr<const MeshVariant> mesh_v, HighFive::File& file, HighFive::Group& checkpoint_group);
 
 template <typename DataType, ItemType item_type, typename ConnectivityPtr>
@@ -897,3 +900,5 @@ writeVariableBCDescriptor(const std::string& symbol_name,
     writeIBoundaryConditionDescriptor(bc_descriptor_group, bc_descriptor_list[i_bc_descriptor]);
   }
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/CheckpointUtils.hpp b/src/utils/checkpointing/CheckpointUtils.hpp
index 2449455b8..f0ce0f39e 100644
--- a/src/utils/checkpointing/CheckpointUtils.hpp
+++ b/src/utils/checkpointing/CheckpointUtils.hpp
@@ -11,6 +11,9 @@
 #include <mesh/ItemValue.hpp>
 #include <utils/Messenger.hpp>
 
+namespace checkpointing
+{
+
 template <typename DataType>
 PUGS_INLINE void
 write(HighFive::Group& group, const std::string& name, const Array<DataType>& array)
@@ -219,4 +222,6 @@ void writeVariableBCDescriptor(const std::string& symbol_name,
                                HighFive::Group& checkpoint_group,
                                HighFive::Group& symbol_table_group);
 
+}   // checkpointing
+
 #endif   // CHECKPOINT_UTILS_HPP
diff --git a/src/utils/checkpointing/ReadArray.hpp b/src/utils/checkpointing/ReadArray.hpp
index 9aad33efe..5b851ad4f 100644
--- a/src/utils/checkpointing/ReadArray.hpp
+++ b/src/utils/checkpointing/ReadArray.hpp
@@ -7,6 +7,9 @@
 #include <utils/HighFivePugsUtils.hpp>
 #include <utils/Messenger.hpp>
 
+namespace checkpointing
+{
+
 template <typename DataType>
 PUGS_INLINE Array<DataType>
 readArray(const HighFive::Group& group, const std::string& name)
@@ -44,4 +47,6 @@ readArray(const HighFive::Group& group, const std::string& name)
   return array;
 }
 
+}   // namespace checkpointing
+
 #endif   // READ_ARRAY_HPP
diff --git a/src/utils/checkpointing/ReadDiscreteFunctionVariant.cpp b/src/utils/checkpointing/ReadDiscreteFunctionVariant.cpp
index aea937d87..0fdb68c7d 100644
--- a/src/utils/checkpointing/ReadDiscreteFunctionVariant.cpp
+++ b/src/utils/checkpointing/ReadDiscreteFunctionVariant.cpp
@@ -8,6 +8,9 @@
 #include <utils/checkpointing/ReadItemValue.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 
+namespace checkpointing
+{
+
 std::shared_ptr<DiscreteFunctionVariant>
 readDiscreteFunctionVariant(const HighFive::Group& discrete_function_group)
 {
@@ -91,3 +94,5 @@ readDiscreteFunctionVariant(const std::string& symbol_name, const HighFive::Grou
 
   return {std::make_shared<DataHandler<const DiscreteFunctionVariant>>(p_discrete_function)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadDiscreteFunctionVariant.hpp b/src/utils/checkpointing/ReadDiscreteFunctionVariant.hpp
index 0564d5de3..70b87e415 100644
--- a/src/utils/checkpointing/ReadDiscreteFunctionVariant.hpp
+++ b/src/utils/checkpointing/ReadDiscreteFunctionVariant.hpp
@@ -6,8 +6,13 @@
 class DiscreteFunctionVariant;
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 std::shared_ptr<DiscreteFunctionVariant> readDiscreteFunctionVariant(const HighFive::Group& discrete_function_group);
 
 EmbeddedData readDiscreteFunctionVariant(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_DISCRETE_FUNCTION_VARIANT_HPP
diff --git a/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.cpp b/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.cpp
index 96f62113a..1439b8b1e 100644
--- a/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.cpp
+++ b/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.cpp
@@ -18,6 +18,9 @@
 #include <utils/checkpointing/ReadIBoundaryDescriptor.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 
+namespace checkpointing
+{
+
 std::shared_ptr<const IBoundaryConditionDescriptor>
 readIBoundaryConditionDescriptor(const HighFive::Group& iboundaryconditiondecriptor_group)
 {
@@ -106,3 +109,5 @@ readIBoundaryConditionDescriptor(const std::string& symbol_name, const HighFive:
     readIBoundaryConditionDescriptor(symbol_table_group.getGroup("embedded/" + symbol_name));
   return {std::make_shared<DataHandler<const IBoundaryConditionDescriptor>>(bc_descriptor)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.hpp b/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.hpp
index 1187efdc0..380772d98 100644
--- a/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.hpp
+++ b/src/utils/checkpointing/ReadIBoundaryConditionDescriptor.hpp
@@ -6,10 +6,15 @@
 class IBoundaryConditionDescriptor;
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 std::shared_ptr<const IBoundaryConditionDescriptor> readIBoundaryConditionDescriptor(
   const HighFive::Group& iboundaryconditiondecriptor_group);
 
 EmbeddedData readIBoundaryConditionDescriptor(const std::string& symbol_name,
                                               const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_IBOUNDARY_CONDITION_DESCRIPTOR_HPP
diff --git a/src/utils/checkpointing/ReadIBoundaryDescriptor.cpp b/src/utils/checkpointing/ReadIBoundaryDescriptor.cpp
index ed9cdd654..819c22180 100644
--- a/src/utils/checkpointing/ReadIBoundaryDescriptor.cpp
+++ b/src/utils/checkpointing/ReadIBoundaryDescriptor.cpp
@@ -8,6 +8,9 @@
 #include <mesh/NumberedBoundaryDescriptor.hpp>
 #include <utils/checkpointing/IBoundaryDescriptorHFType.hpp>
 
+namespace checkpointing
+{
+
 std::shared_ptr<const IBoundaryDescriptor>
 readIBoundaryDescriptor(const HighFive::Group& iboundarydescriptor_group)
 {
@@ -39,3 +42,5 @@ readIBoundaryDescriptor(const std::string& symbol_name, const HighFive::Group& s
 
   return {std::make_shared<DataHandler<const IBoundaryDescriptor>>(readIBoundaryDescriptor(iboundarydescriptor_group))};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadIBoundaryDescriptor.hpp b/src/utils/checkpointing/ReadIBoundaryDescriptor.hpp
index 19c55c323..4384dd80b 100644
--- a/src/utils/checkpointing/ReadIBoundaryDescriptor.hpp
+++ b/src/utils/checkpointing/ReadIBoundaryDescriptor.hpp
@@ -6,8 +6,13 @@
 class IBoundaryDescriptor;
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 std::shared_ptr<const IBoundaryDescriptor> readIBoundaryDescriptor(const HighFive::Group& iboundarydescriptor_group);
 
 EmbeddedData readIBoundaryDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_IBOUNDARY_DESCRIPTOR_HPP
diff --git a/src/utils/checkpointing/ReadIDiscreteFunctionDescriptor.cpp b/src/utils/checkpointing/ReadIDiscreteFunctionDescriptor.cpp
index 166094433..4c016ed73 100644
--- a/src/utils/checkpointing/ReadIDiscreteFunctionDescriptor.cpp
+++ b/src/utils/checkpointing/ReadIDiscreteFunctionDescriptor.cpp
@@ -6,6 +6,9 @@
 #include <scheme/DiscreteFunctionDescriptorP0Vector.hpp>
 #include <utils/checkpointing/DiscreteFunctionTypeHFType.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readIDiscreteFunctionDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -28,3 +31,5 @@ readIDiscreteFunctionDescriptor(const std::string& symbol_name, const HighFive::
 
   return {std::make_shared<DataHandler<const IDiscreteFunctionDescriptor>>(idiscrete_function_descriptor)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadIDiscreteFunctionDescriptor.hpp b/src/utils/checkpointing/ReadIDiscreteFunctionDescriptor.hpp
index 89f63e5df..f804b2340 100644
--- a/src/utils/checkpointing/ReadIDiscreteFunctionDescriptor.hpp
+++ b/src/utils/checkpointing/ReadIDiscreteFunctionDescriptor.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readIDiscreteFunctionDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_IDISCRETE_FUNCTION_DESCRIPTOR_HPP
diff --git a/src/utils/checkpointing/ReadIInterfaceDescriptor.cpp b/src/utils/checkpointing/ReadIInterfaceDescriptor.cpp
index c3a1f5c89..79a7469f4 100644
--- a/src/utils/checkpointing/ReadIInterfaceDescriptor.cpp
+++ b/src/utils/checkpointing/ReadIInterfaceDescriptor.cpp
@@ -6,6 +6,9 @@
 #include <mesh/NumberedInterfaceDescriptor.hpp>
 #include <utils/checkpointing/IInterfaceDescriptorHFType.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readIInterfaceDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -29,3 +32,5 @@ readIInterfaceDescriptor(const std::string& symbol_name, const HighFive::Group&
   }
   return {std::make_shared<DataHandler<const IInterfaceDescriptor>>(iinterface_descriptor)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadIInterfaceDescriptor.hpp b/src/utils/checkpointing/ReadIInterfaceDescriptor.hpp
index 43b93d5c1..fe2f462fe 100644
--- a/src/utils/checkpointing/ReadIInterfaceDescriptor.hpp
+++ b/src/utils/checkpointing/ReadIInterfaceDescriptor.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readIInterfaceDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_IINTERFACE_DESCRIPTOR_HPP
diff --git a/src/utils/checkpointing/ReadINamedDiscreteData.cpp b/src/utils/checkpointing/ReadINamedDiscreteData.cpp
index ed85949bf..58879d6b0 100644
--- a/src/utils/checkpointing/ReadINamedDiscreteData.cpp
+++ b/src/utils/checkpointing/ReadINamedDiscreteData.cpp
@@ -10,6 +10,9 @@
 #include <utils/checkpointing/ReadItemArrayVariant.hpp>
 #include <utils/checkpointing/ReadItemValueVariant.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readINamedDiscreteData(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -43,3 +46,5 @@ readINamedDiscreteData(const std::string& symbol_name, const HighFive::Group& sy
 
   return {std::make_shared<DataHandler<const INamedDiscreteData>>(inamed_discrete_data)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadINamedDiscreteData.hpp b/src/utils/checkpointing/ReadINamedDiscreteData.hpp
index ee08ff275..3c90ccf9e 100644
--- a/src/utils/checkpointing/ReadINamedDiscreteData.hpp
+++ b/src/utils/checkpointing/ReadINamedDiscreteData.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readINamedDiscreteData(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_INAMED_DISCRETE_DATA_HPP
diff --git a/src/utils/checkpointing/ReadIQuadratureDescriptor.cpp b/src/utils/checkpointing/ReadIQuadratureDescriptor.cpp
index 56398f8d6..902f0f64c 100644
--- a/src/utils/checkpointing/ReadIQuadratureDescriptor.cpp
+++ b/src/utils/checkpointing/ReadIQuadratureDescriptor.cpp
@@ -7,6 +7,9 @@
 #include <language/utils/EmbeddedData.hpp>
 #include <utils/checkpointing/QuadratureTypeHFType.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readIQuadratureDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -34,3 +37,5 @@ readIQuadratureDescriptor(const std::string& symbol_name, const HighFive::Group&
 
   return {std::make_shared<DataHandler<const IQuadratureDescriptor>>(iquadrature_descrptor)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadIQuadratureDescriptor.hpp b/src/utils/checkpointing/ReadIQuadratureDescriptor.hpp
index ad22dc4e0..ac1b9670f 100644
--- a/src/utils/checkpointing/ReadIQuadratureDescriptor.hpp
+++ b/src/utils/checkpointing/ReadIQuadratureDescriptor.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readIQuadratureDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_IQUADRATURE_DESCRIPTOR_HPP
diff --git a/src/utils/checkpointing/ReadIWriter.cpp b/src/utils/checkpointing/ReadIWriter.cpp
index c8a25fd8a..1f4dc1a55 100644
--- a/src/utils/checkpointing/ReadIWriter.cpp
+++ b/src/utils/checkpointing/ReadIWriter.cpp
@@ -7,6 +7,9 @@
 #include <output/VTKWriter.hpp>
 #include <utils/checkpointing/IWriterHFType.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readIWriter(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -50,3 +53,5 @@ readIWriter(const std::string& symbol_name, const HighFive::Group& symbol_table_
 
   return {std::make_shared<DataHandler<const IWriter>>(p_writer)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadIWriter.hpp b/src/utils/checkpointing/ReadIWriter.hpp
index b37c4c813..88c0eaaff 100644
--- a/src/utils/checkpointing/ReadIWriter.hpp
+++ b/src/utils/checkpointing/ReadIWriter.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readIWriter(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_IWRITER_HPP
diff --git a/src/utils/checkpointing/ReadIZoneDescriptor.cpp b/src/utils/checkpointing/ReadIZoneDescriptor.cpp
index 1d4b90255..3ae82c9ae 100644
--- a/src/utils/checkpointing/ReadIZoneDescriptor.cpp
+++ b/src/utils/checkpointing/ReadIZoneDescriptor.cpp
@@ -6,6 +6,9 @@
 #include <mesh/NumberedZoneDescriptor.hpp>
 #include <utils/checkpointing/IZoneDescriptorHFType.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readIZoneDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -30,3 +33,5 @@ readIZoneDescriptor(const std::string& symbol_name, const HighFive::Group& symbo
 
   return {std::make_shared<DataHandler<const IZoneDescriptor>>(izone_descriptor)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadIZoneDescriptor.hpp b/src/utils/checkpointing/ReadIZoneDescriptor.hpp
index 2791285e2..cf8f59e8d 100644
--- a/src/utils/checkpointing/ReadIZoneDescriptor.hpp
+++ b/src/utils/checkpointing/ReadIZoneDescriptor.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readIZoneDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_IZONE_DESCRIPTOR_HPP
diff --git a/src/utils/checkpointing/ReadItemArray.hpp b/src/utils/checkpointing/ReadItemArray.hpp
index f22fdad60..7e23a480b 100644
--- a/src/utils/checkpointing/ReadItemArray.hpp
+++ b/src/utils/checkpointing/ReadItemArray.hpp
@@ -5,6 +5,9 @@
 #include <utils/HighFivePugsUtils.hpp>
 #include <utils/checkpointing/ReadTable.hpp>
 
+namespace checkpointing
+{
+
 template <typename T, ItemType item_type>
 ItemArray<T, item_type>
 readItemArray(const HighFive::Group& group, const std::string& name, const IConnectivity& connectivity)
@@ -12,4 +15,6 @@ readItemArray(const HighFive::Group& group, const std::string& name, const IConn
   return {connectivity, readTable<T>(group, name)};
 }
 
+}   // namespace checkpointing
+
 #endif   // READ_ITEM_ARRAY_HPP
diff --git a/src/utils/checkpointing/ReadItemArrayVariant.cpp b/src/utils/checkpointing/ReadItemArrayVariant.cpp
index f684e03d0..6420d9331 100644
--- a/src/utils/checkpointing/ReadItemArrayVariant.cpp
+++ b/src/utils/checkpointing/ReadItemArrayVariant.cpp
@@ -9,6 +9,9 @@
 #include <utils/checkpointing/ReadItemArray.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 
+namespace checkpointing
+{
+
 template <ItemType item_type>
 std::shared_ptr<ItemArrayVariant>
 readItemArrayVariant(const HighFive::Group& item_array_variant_group)
@@ -91,3 +94,5 @@ readItemArrayVariant(const std::string& symbol_name, const HighFive::Group& symb
   const HighFive::Group item_array_variant_group = symbol_table_group.getGroup("embedded/" + symbol_name);
   return {std::make_shared<DataHandler<const ItemArrayVariant>>(readItemArrayVariant(item_array_variant_group))};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadItemArrayVariant.hpp b/src/utils/checkpointing/ReadItemArrayVariant.hpp
index 721571eea..c3f0890ad 100644
--- a/src/utils/checkpointing/ReadItemArrayVariant.hpp
+++ b/src/utils/checkpointing/ReadItemArrayVariant.hpp
@@ -6,8 +6,13 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 std::shared_ptr<ItemArrayVariant> readItemArrayVariant(const HighFive::Group& item_array_variant_group);
 
 EmbeddedData readItemArrayVariant(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_ITEM_ARRAY_VARIANT_HPP
diff --git a/src/utils/checkpointing/ReadItemType.cpp b/src/utils/checkpointing/ReadItemType.cpp
index e699173c6..3974f872c 100644
--- a/src/utils/checkpointing/ReadItemType.cpp
+++ b/src/utils/checkpointing/ReadItemType.cpp
@@ -4,6 +4,9 @@
 #include <language/utils/EmbeddedData.hpp>
 #include <utils/checkpointing/ItemTypeHFType.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readItemType(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -12,3 +15,5 @@ readItemType(const std::string& symbol_name, const HighFive::Group& symbol_table
 
   return {std::make_shared<DataHandler<const ItemType>>(std::make_shared<const ItemType>(item_type))};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadItemType.hpp b/src/utils/checkpointing/ReadItemType.hpp
index 3239f08ef..94abfd33f 100644
--- a/src/utils/checkpointing/ReadItemType.hpp
+++ b/src/utils/checkpointing/ReadItemType.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readItemType(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_ITEM_TYPE_HPP
diff --git a/src/utils/checkpointing/ReadItemValue.hpp b/src/utils/checkpointing/ReadItemValue.hpp
index 5444ec1b9..a973a56fc 100644
--- a/src/utils/checkpointing/ReadItemValue.hpp
+++ b/src/utils/checkpointing/ReadItemValue.hpp
@@ -5,6 +5,9 @@
 #include <utils/HighFivePugsUtils.hpp>
 #include <utils/checkpointing/ReadArray.hpp>
 
+namespace checkpointing
+{
+
 template <typename T, ItemType item_type>
 ItemValue<T, item_type>
 readItemValue(const HighFive::Group& group, const std::string& name, const IConnectivity& connectivity)
@@ -12,4 +15,6 @@ readItemValue(const HighFive::Group& group, const std::string& name, const IConn
   return {connectivity, readArray<T>(group, name)};
 }
 
+}   // namespace checkpointing
+
 #endif   // READ_ITEM_VALUE_HPP
diff --git a/src/utils/checkpointing/ReadItemValueVariant.cpp b/src/utils/checkpointing/ReadItemValueVariant.cpp
index 2ec70594c..8ebb98225 100644
--- a/src/utils/checkpointing/ReadItemValueVariant.cpp
+++ b/src/utils/checkpointing/ReadItemValueVariant.cpp
@@ -9,6 +9,9 @@
 #include <utils/checkpointing/ReadItemValue.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 
+namespace checkpointing
+{
+
 template <ItemType item_type>
 std::shared_ptr<ItemValueVariant>
 readItemValueVariant(const HighFive::Group& item_value_variant_group)
@@ -91,3 +94,5 @@ readItemValueVariant(const std::string& symbol_name, const HighFive::Group& symb
   const HighFive::Group item_value_variant_group = symbol_table_group.getGroup("embedded/" + symbol_name);
   return {std::make_shared<DataHandler<const ItemValueVariant>>(readItemValueVariant(item_value_variant_group))};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadItemValueVariant.hpp b/src/utils/checkpointing/ReadItemValueVariant.hpp
index 521cac486..0c5c7450e 100644
--- a/src/utils/checkpointing/ReadItemValueVariant.hpp
+++ b/src/utils/checkpointing/ReadItemValueVariant.hpp
@@ -6,8 +6,13 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 std::shared_ptr<ItemValueVariant> readItemValueVariant(const HighFive::Group& item_value_variant_group);
 
 EmbeddedData readItemValueVariant(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_ITEM_VALUE_VARIANT_HPP
diff --git a/src/utils/checkpointing/ReadMesh.cpp b/src/utils/checkpointing/ReadMesh.cpp
index 8f018faa5..fd93cd54d 100644
--- a/src/utils/checkpointing/ReadMesh.cpp
+++ b/src/utils/checkpointing/ReadMesh.cpp
@@ -6,6 +6,9 @@
 #include <utils/checkpointing/ItemTypeHFType.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readMesh(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -15,3 +18,5 @@ readMesh(const std::string& symbol_name, const HighFive::Group& symbol_table_gro
 
   return {std::make_shared<DataHandler<const MeshVariant>>(ResumingData::instance().meshVariant(mesh_id))};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadMesh.hpp b/src/utils/checkpointing/ReadMesh.hpp
index f55fad1d9..50d43511e 100644
--- a/src/utils/checkpointing/ReadMesh.hpp
+++ b/src/utils/checkpointing/ReadMesh.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readMesh(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_MESH_HPP
diff --git a/src/utils/checkpointing/ReadOStream.cpp b/src/utils/checkpointing/ReadOStream.cpp
index d7c99ce97..c01491c46 100644
--- a/src/utils/checkpointing/ReadOStream.cpp
+++ b/src/utils/checkpointing/ReadOStream.cpp
@@ -5,6 +5,9 @@
 #include <language/utils/OFStream.hpp>
 #include <utils/checkpointing/OStreamTypeHFType.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readOStream(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -28,3 +31,5 @@ readOStream(const std::string& symbol_name, const HighFive::Group& symbol_table_
 
   return {std::make_shared<DataHandler<const OStream>>(p_ostream)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadOStream.hpp b/src/utils/checkpointing/ReadOStream.hpp
index 9de6e6f7a..871426f21 100644
--- a/src/utils/checkpointing/ReadOStream.hpp
+++ b/src/utils/checkpointing/ReadOStream.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readOStream(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_OSTREAM_HPP
diff --git a/src/utils/checkpointing/ReadSubItemArrayPerItemVariant.cpp b/src/utils/checkpointing/ReadSubItemArrayPerItemVariant.cpp
index 1dd826418..e2b6b6c90 100644
--- a/src/utils/checkpointing/ReadSubItemArrayPerItemVariant.cpp
+++ b/src/utils/checkpointing/ReadSubItemArrayPerItemVariant.cpp
@@ -9,6 +9,9 @@
 #include <utils/checkpointing/ReadTable.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 
+namespace checkpointing
+{
+
 template <typename T, ItemType item_type, ItemType sub_item_type>
 SubItemArrayPerItem<T, ItemOfItemType<sub_item_type, item_type>>
 readSubItemArrayPerItem(const HighFive::Group& group, const std::string& name, const IConnectivity& connectivity)
@@ -151,3 +154,5 @@ readSubItemArrayPerItemVariant(const std::string& symbol_name, const HighFive::G
   return {std::make_shared<DataHandler<const SubItemArrayPerItemVariant>>(
     readSubItemArrayPerItemVariant(sub_item_array_per_item_variant_group))};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadSubItemArrayPerItemVariant.hpp b/src/utils/checkpointing/ReadSubItemArrayPerItemVariant.hpp
index 27b04ce94..7146d7c42 100644
--- a/src/utils/checkpointing/ReadSubItemArrayPerItemVariant.hpp
+++ b/src/utils/checkpointing/ReadSubItemArrayPerItemVariant.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readSubItemArrayPerItemVariant(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_SUB_ITEM_ARRAY_PER_ITEM_VARIANT_HPP
diff --git a/src/utils/checkpointing/ReadSubItemValuePerItemVariant.cpp b/src/utils/checkpointing/ReadSubItemValuePerItemVariant.cpp
index e3983d82b..0b3dd2b0b 100644
--- a/src/utils/checkpointing/ReadSubItemValuePerItemVariant.cpp
+++ b/src/utils/checkpointing/ReadSubItemValuePerItemVariant.cpp
@@ -9,6 +9,9 @@
 #include <utils/checkpointing/ReadArray.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 
+namespace checkpointing
+{
+
 template <typename T, ItemType item_type, ItemType sub_item_type>
 SubItemValuePerItem<T, ItemOfItemType<sub_item_type, item_type>>
 readSubItemValuePerItem(const HighFive::Group& group, const std::string& name, const IConnectivity& connectivity)
@@ -151,3 +154,5 @@ readSubItemValuePerItemVariant(const std::string& symbol_name, const HighFive::G
   return {std::make_shared<DataHandler<const SubItemValuePerItemVariant>>(
     readSubItemValuePerItemVariant(sub_item_value_per_item_variant_group))};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadSubItemValuePerItemVariant.hpp b/src/utils/checkpointing/ReadSubItemValuePerItemVariant.hpp
index dc69e5543..d1ce926b9 100644
--- a/src/utils/checkpointing/ReadSubItemValuePerItemVariant.hpp
+++ b/src/utils/checkpointing/ReadSubItemValuePerItemVariant.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readSubItemValuePerItemVariant(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_SUB_ITEM_VALUE_PER_ITEM_VARIANT_HPP
diff --git a/src/utils/checkpointing/ReadTable.hpp b/src/utils/checkpointing/ReadTable.hpp
index a78978a2d..f57a689a8 100644
--- a/src/utils/checkpointing/ReadTable.hpp
+++ b/src/utils/checkpointing/ReadTable.hpp
@@ -7,6 +7,9 @@
 #include <utils/Messenger.hpp>
 #include <utils/Table.hpp>
 
+namespace checkpointing
+{
+
 template <typename DataType>
 PUGS_INLINE Table<DataType>
 readTable(const HighFive::Group& group, const std::string& name)
@@ -42,4 +45,6 @@ readTable(const HighFive::Group& group, const std::string& name)
   return table;
 }
 
+}   // namespace checkpointing
+
 #endif   // READ_TABLE_HPP
diff --git a/src/utils/checkpointing/ReadVariableBCDescriptor.cpp b/src/utils/checkpointing/ReadVariableBCDescriptor.cpp
index 05b7deb29..5e58deca4 100644
--- a/src/utils/checkpointing/ReadVariableBCDescriptor.cpp
+++ b/src/utils/checkpointing/ReadVariableBCDescriptor.cpp
@@ -6,6 +6,9 @@
 #include <utils/checkpointing/ReadDiscreteFunctionVariant.hpp>
 #include <utils/checkpointing/ReadIBoundaryConditionDescriptor.hpp>
 
+namespace checkpointing
+{
+
 EmbeddedData
 readVariableBCDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group)
 {
@@ -28,3 +31,5 @@ readVariableBCDescriptor(const std::string& symbol_name, const HighFive::Group&
 
   return {std::make_shared<DataHandler<const VariableBCDescriptor>>(p_variable_bc_descriptor)};
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ReadVariableBCDescriptor.hpp b/src/utils/checkpointing/ReadVariableBCDescriptor.hpp
index 188cfc799..f80ba5f13 100644
--- a/src/utils/checkpointing/ReadVariableBCDescriptor.hpp
+++ b/src/utils/checkpointing/ReadVariableBCDescriptor.hpp
@@ -5,6 +5,11 @@
 
 class EmbeddedData;
 
+namespace checkpointing
+{
+
 EmbeddedData readVariableBCDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group);
 
+}   // namespace checkpointing
+
 #endif   // READ_VARIABLE_BC_DESCRIPTOR_HPP
diff --git a/src/utils/checkpointing/Resume.cpp b/src/utils/checkpointing/Resume.cpp
index 563b47ff0..60dc08d4c 100644
--- a/src/utils/checkpointing/Resume.cpp
+++ b/src/utils/checkpointing/Resume.cpp
@@ -25,7 +25,7 @@ void
 resume()
 {
   try {
-    ResumingData::create();
+    checkpointing::ResumingData::create();
     HighFive::File file(ResumingManager::getInstance().filename(), HighFive::File::ReadOnly);
 
     HighFive::Group checkpoint = file.getGroup("/resuming_checkpoint");
@@ -81,7 +81,7 @@ resume()
       default_options.precond() = linear_solver_options_default_group.getAttribute("precond").read<LSPrecond>();
     }
 
-    ResumingData::instance().readData(checkpoint, p_symbol_table);
+    checkpointing::ResumingData::instance().readData(checkpoint, p_symbol_table);
 
     bool finished = true;
     do {
@@ -283,7 +283,7 @@ resume()
 
     } while (not finished);
 
-    ResumingData::destroy();
+    checkpointing::ResumingData::destroy();
   }
   catch (HighFive::Exception& e) {
     throw NormalError(e.what());
diff --git a/src/utils/checkpointing/ResumingData.cpp b/src/utils/checkpointing/ResumingData.cpp
index edf172875..c90c7af5e 100644
--- a/src/utils/checkpointing/ResumingData.cpp
+++ b/src/utils/checkpointing/ResumingData.cpp
@@ -10,6 +10,9 @@
 #include <utils/checkpointing/ReadArray.hpp>
 #include <utils/checkpointing/RefItemListHFType.hpp>
 
+namespace checkpointing
+{
+
 ResumingData* ResumingData::m_instance = nullptr;
 
 void
@@ -431,3 +434,5 @@ ResumingData::destroy()
   delete m_instance;
   m_instance = nullptr;
 }
+
+}   // namespace checkpointing
diff --git a/src/utils/checkpointing/ResumingData.hpp b/src/utils/checkpointing/ResumingData.hpp
index 9da8cd067..68e8d3cc9 100644
--- a/src/utils/checkpointing/ResumingData.hpp
+++ b/src/utils/checkpointing/ResumingData.hpp
@@ -11,6 +11,9 @@ class MeshVariant;
 class SymbolTable;
 class FunctionSymbolId;
 
+namespace checkpointing
+{
+
 class ResumingData
 {
  private:
@@ -51,4 +54,6 @@ class ResumingData
   ResumingData(ResumingData&&)      = delete;
 };
 
+}   // namespace checkpointing
+
 #endif   // RESUMING_DATA_HPP
-- 
GitLab