diff --git a/src/language/modules/CoreModule.cpp b/src/language/modules/CoreModule.cpp index a21ad4130bbdff345d0b40bf67fa799be80e66c1..d031a75bc7d3437383eb71c74b3401fa9e3d678b 100644 --- a/src/language/modules/CoreModule.cpp +++ b/src/language/modules/CoreModule.cpp @@ -199,6 +199,7 @@ CoreModule::registerOperators() const void CoreModule::registerCheckpointResume() const { +#ifdef PUGS_HAS_HDF5 CheckpointResumeRepository::instance() .addCheckpointResume(ast_node_data_type_from<std::shared_ptr<const OStream>>, std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data, @@ -208,4 +209,6 @@ CoreModule::registerCheckpointResume() const }), std::function([](const std::string& symbol_name, const HighFive::Group& symbol_table_group) -> EmbeddedData { return 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 cab959a73d7cc1c5144c3c40abdaa0f547e984dd..80865761c125795bdc136e6e8b0c25fdd2091bc5 100644 --- a/src/language/modules/MeshModule.cpp +++ b/src/language/modules/MeshModule.cpp @@ -307,6 +307,8 @@ MeshModule::registerOperators() const void MeshModule::registerCheckpointResume() const { +#ifdef PUGS_HAS_HDF5 + CheckpointResumeRepository::instance() .addCheckpointResume(ast_node_data_type_from<std::shared_ptr<const MeshVariant>>, std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data, @@ -390,4 +392,6 @@ MeshModule::registerCheckpointResume() const const HighFive::Group& symbol_table_group) -> EmbeddedData { return readItemValueVariant(symbol_name, symbol_table_group); })); + +#endif // PUGS_HAS_HDF5 } diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp index 71e36183f6af48288fa6ece099a63793d9c97d79..a43b2942a16c02cc28494236931448e60801763d 100644 --- a/src/language/modules/SchemeModule.cpp +++ b/src/language/modules/SchemeModule.cpp @@ -689,6 +689,8 @@ SchemeModule::registerOperators() const void SchemeModule::registerCheckpointResume() const { +#ifdef PUGS_HAS_HDF5 + CheckpointResumeRepository::instance() .addCheckpointResume(ast_node_data_type_from<std::shared_ptr<const DiscreteFunctionVariant>>, std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data, @@ -753,4 +755,6 @@ SchemeModule::registerCheckpointResume() const const HighFive::Group& symbol_table_group) -> EmbeddedData { return 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 00095779ba4f184e1ef62afcd5cc17d6833f71d9..b5c3f020fd61de04e46b630608d9c98aa05b7cb3 100644 --- a/src/language/modules/WriterModule.cpp +++ b/src/language/modules/WriterModule.cpp @@ -191,6 +191,8 @@ WriterModule::registerOperators() const void WriterModule::registerCheckpointResume() const { +#ifdef PUGS_HAS_HDF5 + CheckpointResumeRepository::instance() .addCheckpointResume(ast_node_data_type_from<std::shared_ptr<const INamedDiscreteData>>, std::function([](const std::string& symbol_name, const EmbeddedData& embedded_data, @@ -213,4 +215,6 @@ WriterModule::registerCheckpointResume() const }), std::function([](const std::string& symbol_name, const HighFive::Group& symbol_table_group) -> EmbeddedData { return readIWriter(symbol_name, symbol_table_group); })); + +#endif // PUGS_HAS_HDF5 } diff --git a/src/utils/HighFivePugsUtils.hpp b/src/utils/HighFivePugsUtils.hpp index 8657e8aff68bb93a388962004fb5456101b13aef..e8aa4ca37cc991cddc6a146d8740d8040d7fa74f 100644 --- a/src/utils/HighFivePugsUtils.hpp +++ b/src/utils/HighFivePugsUtils.hpp @@ -39,6 +39,14 @@ class AtomicType<TinyMatrix<M, N, T>> : public HighFive::DataType } // namespace HighFive +#else + +namespace HighFive +{ +class File; +class Group; +} // namespace HighFive + #endif // PUGS_HAS_HDF5 #endif // HIGH_FIVE_PUGS_UTILS_HPP diff --git a/src/utils/checkpointing/CMakeLists.txt b/src/utils/checkpointing/CMakeLists.txt index aa95560ee62bf433341165a29122f6620e82103f..39429c9548a2844e447dff97201b22406afa8c1f 100644 --- a/src/utils/checkpointing/CMakeLists.txt +++ b/src/utils/checkpointing/CMakeLists.txt @@ -1,15 +1,27 @@ # ------------------- Source files -------------------- -add_library( - PugsCheckpointing +set(checkpointing_SOURCES) + +list(APPEND checkpointing_SOURCES Checkpoint.cpp - CheckpointUtils.cpp PrintCheckpointInfo.cpp Resume.cpp - ResumeUtils.cpp - ResumingData.cpp ResumingManager.cpp - ResumingUtils.cpp) + ResumingUtils.cpp +) + +if(PUGS_HAS_HDF5) + list(APPEND checkpointing_SOURCES + CheckpointUtils.cpp + ResumeUtils.cpp + ResumingData.cpp + ) +endif(PUGS_HAS_HDF5) + +add_library( + PugsCheckpointing + ${checkpointing_SOURCES} +) # Additional dependencies add_dependencies(PugsCheckpointing diff --git a/src/utils/checkpointing/CheckpointUtils.hpp b/src/utils/checkpointing/CheckpointUtils.hpp index 50fa940dc51086f9b5ad7de73b1d19e4317c8a4d..fb01fe674d9f4e450a6b782ae5b85340c94c9414 100644 --- a/src/utils/checkpointing/CheckpointUtils.hpp +++ b/src/utils/checkpointing/CheckpointUtils.hpp @@ -3,6 +3,8 @@ #include <utils/HighFivePugsUtils.hpp> +#ifdef PUGS_HAS_HDF5 + #include <language/utils/SymbolTable.hpp> #include <mesh/CellType.hpp> #include <mesh/ItemArray.hpp> @@ -103,6 +105,8 @@ write(HighFive::Group& group, const std::string& name, const Table<DataType>& ta dataset.createAttribute("number_of_columns", number_of_columns); } +#endif // PUGS_HAS_HDF5 + template <typename DataType, ItemType item_type, typename ConnectivityPtr> void write(HighFive::Group& group, const std::string& name, diff --git a/src/utils/checkpointing/ResumeUtils.hpp b/src/utils/checkpointing/ResumeUtils.hpp index f4ec5325dee1d417baa18a36608a340e2916a299..99992cbb2e75b4fe28455751326b13a0556d3c2f 100644 --- a/src/utils/checkpointing/ResumeUtils.hpp +++ b/src/utils/checkpointing/ResumeUtils.hpp @@ -9,6 +9,8 @@ #include <mesh/ItemValue.hpp> #include <utils/Messenger.hpp> +#ifdef PUGS_HAS_HDF5 + template <typename DataType> PUGS_INLINE Array<DataType> readArray(const HighFive::Group& group, const std::string& name) @@ -81,6 +83,8 @@ readTable(const HighFive::Group& group, const std::string& name) return table; } +#endif // PUGS_HAS_HDF5 + EmbeddedData readDiscreteFunctionVariant(const std::string& symbol_name, const HighFive::Group& symbol_table_group); EmbeddedData readIBoundaryConditionDescriptor(const std::string& symbol_name, const HighFive::Group& symbol_table_group);