From 28cb01ff748efa3aa2e0a1476b97aa60df2a38d9 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Wed, 22 May 2024 01:42:15 +0200 Subject: [PATCH] Fix compilation if HDF5 is not installed --- src/language/modules/CoreModule.cpp | 3 +++ src/language/modules/MeshModule.cpp | 4 ++++ src/language/modules/SchemeModule.cpp | 4 ++++ src/language/modules/WriterModule.cpp | 4 ++++ src/utils/HighFivePugsUtils.hpp | 8 +++++++ src/utils/checkpointing/CMakeLists.txt | 24 +++++++++++++++------ src/utils/checkpointing/CheckpointUtils.hpp | 4 ++++ src/utils/checkpointing/ResumeUtils.hpp | 4 ++++ 8 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/language/modules/CoreModule.cpp b/src/language/modules/CoreModule.cpp index a21ad4130..d031a75bc 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 cab959a73..80865761c 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 71e36183f..a43b2942a 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 00095779b..b5c3f020f 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 8657e8aff..e8aa4ca37 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 aa95560ee..39429c954 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 50fa940dc..fb01fe674 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 f4ec5325d..99992cbb2 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); -- GitLab