diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake
index 4f93a5064..7f6606e4c 100644
--- a/CMakeLists_files.cmake
+++ b/CMakeLists_files.cmake
@@ -629,6 +629,9 @@ if(HDF5_FOUND)
opm/simulators/utils/HDF5Serializer.hpp
opm/simulators/utils/HDF5File.hpp
)
+ list(APPEND MAIN_SOURCE_FILES
+ opm/simulators/utils/HDF5Serializer.cpp
+ )
endif()
list (APPEND EXAMPLE_SOURCE_FILES
diff --git a/opm/simulators/utils/HDF5Serializer.cpp b/opm/simulators/utils/HDF5Serializer.cpp
new file mode 100644
index 000000000..38b852e17
--- /dev/null
+++ b/opm/simulators/utils/HDF5Serializer.cpp
@@ -0,0 +1,71 @@
+/*
+ This file is part of the Open Porous Media project (OPM).
+
+ OPM is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ OPM is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OPM. If not, see .
+
+ Consult the COPYING file in the top-level source directory of this
+ module for the precise wording of the license and the list of
+ copyright holders.
+*/
+#include
+#include
+
+#include
+#include
+
+namespace Opm {
+
+void HDF5Serializer::writeHeader(const std::string& simulator_name,
+ const std::string& module_version,
+ const std::string& time_stamp,
+ const std::string& case_name,
+ const std::string& params,
+ int num_procs)
+{
+ try {
+ this->pack(simulator_name, module_version, time_stamp,
+ case_name, params, num_procs);
+ } catch (...) {
+ m_packSize = std::numeric_limits::max();
+ throw;
+ }
+ m_h5file.write("/", "simulator_info", m_buffer, HDF5File::DataSetMode::ROOT_ONLY);
+}
+
+int HDF5Serializer::lastReportStep() const
+{
+ const auto entries = m_h5file.list("/report_step");
+ int last = -1;
+ for (const auto& entry : entries) {
+ int num = std::atoi(entry.c_str());
+ last = std::max(last, num);
+ }
+
+ return last;
+}
+
+std::vector HDF5Serializer::reportSteps() const
+{
+ const auto entries = m_h5file.list("/report_step");
+ std::vector result(entries.size());
+ std::transform(entries.begin(), entries.end(), result.begin(),
+ [](const std::string& input)
+ {
+ return std::atoi(input.c_str());
+ });
+ std::sort(result.begin(), result.end());
+ return result;
+}
+
+}
diff --git a/opm/simulators/utils/HDF5Serializer.hpp b/opm/simulators/utils/HDF5Serializer.hpp
index 13f9fd79d..22319a3e9 100644
--- a/opm/simulators/utils/HDF5Serializer.hpp
+++ b/opm/simulators/utils/HDF5Serializer.hpp
@@ -24,12 +24,12 @@
#include
#include
-#include
#include
#include
-#include
-#include
+#include
+#include
+#include
namespace Opm {
@@ -55,7 +55,7 @@ public:
try {
this->pack(data);
} catch (...) {
- m_packSize = std::numeric_limits::max();
+ m_packSize = std::numeric_limits::max();
throw;
}
@@ -74,17 +74,7 @@ public:
const std::string& time_stamp,
const std::string& case_name,
const std::string& params,
- int num_procs)
- {
- try {
- this->pack(simulator_name, module_version, time_stamp,
- case_name, params, num_procs);
- } catch (...) {
- m_packSize = std::numeric_limits::max();
- throw;
- }
- m_h5file.write("/", "simulator_info", m_buffer, HDF5File::DataSetMode::ROOT_ONLY);
- }
+ int num_procs);
//! \brief Read data and deserialize from restart file.
//! \tparam T Type of class to read
@@ -100,31 +90,10 @@ public:
}
//! \brief Returns the last report step stored in file.
- int lastReportStep() const
- {
- const auto entries = m_h5file.list("/report_step");
- int last = -1;
- for (const auto& entry : entries) {
- int num = std::atoi(entry.c_str());
- last = std::max(last, num);
- }
-
- return last;
- }
+ int lastReportStep() const;
//! \brief Returns a list of report steps stored in restart file.
- std::vector reportSteps() const
- {
- const auto entries = m_h5file.list("/report_step");
- std::vector result(entries.size());
- std::transform(entries.begin(), entries.end(), result.begin(),
- [](const std::string& input)
- {
- return std::atoi(input.c_str());
- });
- std::sort(result.begin(), result.end());
- return result;
- }
+ std::vector reportSteps() const;
private:
const Serialization::MemPacker m_packer_priv{}; //!< Packer instance