diff --git a/src/utils/checkpointing/Checkpoint.cpp b/src/utils/checkpointing/Checkpoint.cpp
index ed56dcb83b4cc33fc0cdbaac4c6e704423f13336..ebef0dddd218887a7c48187909757eeb719a14a6 100644
--- a/src/utils/checkpointing/Checkpoint.cpp
+++ b/src/utils/checkpointing/Checkpoint.cpp
@@ -4,8 +4,6 @@
 
 #ifdef PUGS_HAS_HDF5
 
-#include <algebra/EigenvalueSolverOptions.hpp>
-#include <algebra/LinearSolverOptions.hpp>
 #include <dev/ParallelChecker.hpp>
 #include <language/ast/ASTExecutionStack.hpp>
 #include <language/utils/ASTCheckpointsInfo.hpp>
@@ -25,6 +23,7 @@
 #include <utils/checkpointing/EigenvalueSolverOptionsHFType.hpp>
 #include <utils/checkpointing/LinearSolverOptionsHFType.hpp>
 #include <utils/checkpointing/ParallelCheckerHFType.hpp>
+#include <utils/checkpointing/PartitionerOptionsHFType.hpp>
 #include <utils/checkpointing/ResumingManager.hpp>
 
 #include <iostream>
@@ -131,6 +130,14 @@ checkpoint()
 
       eigenvalue_solver_options_default_group.createAttribute("library", default_options.library());
     }
+    {
+      HighFive::Group partitioner_options_default_group =
+        checkpoint.createGroup("singleton/partitioner_options_default");
+
+      const PartitionerOptions& default_options = PartitionerOptions::default_options;
+
+      partitioner_options_default_group.createAttribute("library", default_options.library());
+    }
     {
       const auto& primal_to_dual_connectivity_info_map =
         DualConnectivityManager::instance().primalToDualConnectivityInfoMap();
diff --git a/src/utils/checkpointing/PartitionerOptionsHFType.hpp b/src/utils/checkpointing/PartitionerOptionsHFType.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e022bb66119943081d22573ac657b46736613037
--- /dev/null
+++ b/src/utils/checkpointing/PartitionerOptionsHFType.hpp
@@ -0,0 +1,15 @@
+#ifndef PARTITIONER_OPTIONS_HF_TYPE_HPP
+#define PARTITIONER_OPTIONS_HF_TYPE_HPP
+
+#include <utils/HighFivePugsUtils.hpp>
+#include <utils/PartitionerOptions.hpp>
+#include <utils/PugsMacros.hpp>
+
+HighFive::EnumType<PartitionerLibrary> PUGS_INLINE
+create_enum_PTOptions_library_type()
+{
+  return {{"ParMETIS", PartitionerLibrary::parmetis}, {"PTScotch", PartitionerLibrary::ptscotch}};
+}
+HIGHFIVE_REGISTER_TYPE(PartitionerLibrary, create_enum_PTOptions_library_type)
+
+#endif   // PARTITIONER_OPTIONS_HF_TYPE_HPP
diff --git a/src/utils/checkpointing/Resume.cpp b/src/utils/checkpointing/Resume.cpp
index effd6b8080c5f5c8c3d64bbfe7d30fafbbbb1e7e..f342a2466caf36567840a8fc21686a28c26b4d8f 100644
--- a/src/utils/checkpointing/Resume.cpp
+++ b/src/utils/checkpointing/Resume.cpp
@@ -18,6 +18,7 @@
 #include <utils/checkpointing/EigenvalueSolverOptionsHFType.hpp>
 #include <utils/checkpointing/LinearSolverOptionsHFType.hpp>
 #include <utils/checkpointing/ParallelCheckerHFType.hpp>
+#include <utils/checkpointing/PartitionerOptionsHFType.hpp>
 #include <utils/checkpointing/ResumingData.hpp>
 #include <utils/checkpointing/ResumingManager.hpp>
 
@@ -91,6 +92,13 @@ resume()
 
       default_options.library() = eigenvalue_solver_options_default_group.getAttribute("library").read<ESLibrary>();
     }
+    {
+      HighFive::Group partitioner_options_default_group = checkpoint.getGroup("singleton/partitioner_options_default");
+
+      PartitionerOptions& default_options = PartitionerOptions::default_options;
+
+      default_options.library() = partitioner_options_default_group.getAttribute("library").read<PartitionerLibrary>();
+    }
 
     checkpointing::ResumingData::instance().readData(checkpoint, p_symbol_table);