diff --git a/opm/simulators/utils/ParallelRestart.cpp b/opm/simulators/utils/ParallelRestart.cpp index 7ff45a3c5..51e5b342c 100644 --- a/opm/simulators/utils/ParallelRestart.cpp +++ b/opm/simulators/utils/ParallelRestart.cpp @@ -855,6 +855,7 @@ std::size_t packSize(const TableManager& data, Dune::MPIHelper::MPICommunicator packSize(data.getWatdentTable(), comm) + packSize(data.getPvtwSaltTables(), comm) + packSize(data.getBrineDensityTables(), comm) + + packSize(data.getSolventDensityTables(), comm) + packSize(data.getPlymwinjTables(), comm) + packSize(data.getSkprwatTables(), comm) + packSize(data.getSkprpolyTables(), comm) + @@ -2029,6 +2030,12 @@ std::size_t packSize(const FaultCollection& data, return packSize(data.getFaults(), comm); } +std::size_t packSize(const SolventDensityTable& data, + Dune::MPIHelper::MPICommunicator comm) +{ + return packSize(data.getSolventDensityColumn(), comm); +} + ////// pack routines template @@ -2702,6 +2709,7 @@ void pack(const TableManager& data, std::vector& buffer, int& position, pack(data.getWatdentTable(), buffer, position, comm); pack(data.getPvtwSaltTables(), buffer, position, comm); pack(data.getBrineDensityTables(), buffer, position, comm); + pack(data.getSolventDensityTables(), buffer, position, comm); pack(data.getPlymwinjTables(), buffer, position, comm); pack(data.getSkprwatTables(), buffer, position, comm); pack(data.getSkprpolyTables(), buffer, position, comm); @@ -3939,6 +3947,13 @@ void pack(const EclEpsScalingPointsInfo& data, std::vector& buffer pack(data.maxKrg, buffer, position, comm); } +void pack(const SolventDensityTable& data, + std::vector& buffer, int& position, + Dune::MPIHelper::MPICommunicator comm) +{ + pack(data.getSolventDensityColumn(), buffer, position, comm); +} + /// unpack routines template @@ -4833,6 +4848,7 @@ void unpack(TableManager& data, std::vector& buffer, int& position, WatdentTable watdentTable; std::vector pvtwsaltTables; std::vector bdensityTables; + std::vector sdensityTables; std::map plymwinjTables; std::map skprwatTables; std::map skprpolyTables; @@ -4860,6 +4876,7 @@ void unpack(TableManager& data, std::vector& buffer, int& position, unpack(watdentTable, buffer, position, comm); unpack(pvtwsaltTables, buffer, position, comm); unpack(bdensityTables, buffer, position, comm); + unpack(sdensityTables, buffer, position, comm); unpack(plymwinjTables, buffer, position, comm); unpack(skprwatTables, buffer, position, comm); unpack(skprpolyTables, buffer, position, comm); @@ -4885,7 +4902,7 @@ void unpack(TableManager& data, std::vector& buffer, int& position, data = TableManager(simpleTables, pvtgTables, pvtoTables, rock2dTables, rock2dtrTables, pvtwTable, pvcdoTable, densityTable, rockTable, viscrefTable, watdentTable, pvtwsaltTables, - bdensityTables, plymwinjTables, + bdensityTables, sdensityTables, plymwinjTables, skprwatTables, skprpolyTables, tabdims, regdims, eqldims, aqudims, hasImptvd, hasEntpvd, hasEqlnum, jfunc, oilDenT, gasDenT, watDenT, gas_comp_index, rtemp); @@ -6691,6 +6708,15 @@ void unpack(FaultCollection& data, data = FaultCollection(faults); } +void unpack(SolventDensityTable& data, std::vector& buffer, int& position, + Dune::MPIHelper::MPICommunicator comm) +{ + std::vector tableValues; + + unpack(tableValues, buffer, position, comm); + data = SolventDensityTable(tableValues); +} + #define INSTANTIATE_PACK_VECTOR(...) \ template std::size_t packSize(const std::vector<__VA_ARGS__>& data, \ Dune::MPIHelper::MPICommunicator comm); \ diff --git a/opm/simulators/utils/ParallelRestart.hpp b/opm/simulators/utils/ParallelRestart.hpp index adbc73a14..a8f8cd36f 100644 --- a/opm/simulators/utils/ParallelRestart.hpp +++ b/opm/simulators/utils/ParallelRestart.hpp @@ -141,6 +141,7 @@ class SimulationConfig; class SimpleTable; class SkprpolyTable; class SkprwatTable; +class SolventDensityTable; class SpiralICD; class SummaryConfig; class SummaryNode; @@ -767,6 +768,7 @@ ADD_PACK_PROTOTYPES(SimulationConfig) ADD_PACK_PROTOTYPES(SimpleTable) ADD_PACK_PROTOTYPES(SkprpolyTable) ADD_PACK_PROTOTYPES(SkprwatTable) +ADD_PACK_PROTOTYPES(SolventDensityTable) ADD_PACK_PROTOTYPES(SpiralICD) ADD_PACK_PROTOTYPES(std::string) ADD_PACK_PROTOTYPES(SummaryConfig) diff --git a/tests/test_ParallelRestart.cpp b/tests/test_ParallelRestart.cpp index 6945f0c8a..d90fd93db 100644 --- a/tests/test_ParallelRestart.cpp +++ b/tests/test_ParallelRestart.cpp @@ -1206,6 +1206,7 @@ BOOST_AUTO_TEST_CASE(TableManager) Opm::WatdentTable({Opm::WATDENTRecord{1.0, 2.0, 3.0}}), {{1.0, 2.0, {1.0, 2.0, 3.0}}}, {{{1.0, 2.0, 3.0}}}, + {{{4.0, 5.0, 6.0}}}, {{1, Opm::PlymwinjTable({1.0}, {2.0}, 1, {{1.0}, {2.0}})}}, {{2, Opm::SkprwatTable({1.0}, {2.0}, 1, {{1.0}, {2.0}})}}, {{3, Opm::SkprpolyTable({1.0}, {2.0}, 1, {{1.0}, {2.0}}, 3.0)}}, @@ -2509,6 +2510,16 @@ BOOST_AUTO_TEST_CASE(EclEpsScalingPointsInfo) } +BOOST_AUTO_TEST_CASE(SolventDensityTable) +{ +#ifdef HAVE_MPI + Opm::SolventDensityTable val1({1.0, 2.0, 3.0}); + auto val2 = PackUnpack(val1); + DO_CHECKS(SolventDensityTable) +#endif +} + + bool init_unit_test_func() { return true;