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);