From bddbf1a47b40a4b7a8ba4746af2ff1799672fd52 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Tue, 28 Jan 2020 11:35:50 +0100 Subject: [PATCH 1/5] remove unnecessary and erronous prototypes --- opm/simulators/utils/ParallelRestart.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/opm/simulators/utils/ParallelRestart.hpp b/opm/simulators/utils/ParallelRestart.hpp index 374d68ad2..88c8c462f 100644 --- a/opm/simulators/utils/ParallelRestart.hpp +++ b/opm/simulators/utils/ParallelRestart.hpp @@ -75,8 +75,6 @@ namespace Action { } class Aqudims; -class BCConfig; -class BCConfig::BCFace; class BrineDensityTable; class ColumnSchema; class Connection; From 6cb300c0f9c15df0f8f17f075444145f9549bd26 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Tue, 28 Jan 2020 14:09:30 +0100 Subject: [PATCH 2/5] initialize variable to avoid warning spew --- ebos/eclproblem.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ebos/eclproblem.hh b/ebos/eclproblem.hh index 74ecf5d05..b42b64bff 100644 --- a/ebos/eclproblem.hh +++ b/ebos/eclproblem.hh @@ -3023,7 +3023,7 @@ private: for (const auto& bcface : bcconfig) { const auto& type = bcface.bctype; if (type == BCType::RATE) { - int compIdx; + int compIdx = 0; switch (bcface.component) { case BCComponent::OIL: From 4c462421361d675f35d6ec93b5420c41ffd3bf7f Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Tue, 28 Jan 2020 14:08:05 +0100 Subject: [PATCH 3/5] fix WaterPvtMultiplexer serialization after brine addition --- opm/simulators/utils/ParallelRestart.cpp | 49 ++++++++++++++---------- opm/simulators/utils/ParallelRestart.hpp | 12 +++--- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/opm/simulators/utils/ParallelRestart.cpp b/opm/simulators/utils/ParallelRestart.cpp index 9b985fc18..4262836f4 100644 --- a/opm/simulators/utils/ParallelRestart.cpp +++ b/opm/simulators/utils/ParallelRestart.cpp @@ -322,7 +322,7 @@ std::size_t packSize(const std::vector& data, Dune::MPIHelper::MPICommunica std::size_t size = packSize(data.size(), comm); for (const auto& entry: data) - size+=packSize(entry, comm); + size += packSize(entry, comm); return size; } @@ -1026,13 +1026,13 @@ std::size_t packSize(const OilPvtThermal& data, template std::size_t packSize(const OilPvtThermal& data, Dune::MPIHelper::MPICommunicator comm); -template -std::size_t packSize(const WaterPvtMultiplexer& data, +template +std::size_t packSize(const WaterPvtMultiplexer& data, Dune::MPIHelper::MPICommunicator comm) { std::size_t size = packSize(data.approach(), comm); const void* realWaterPvt = data.realWaterPvt(); - using PvtApproach = WaterPvtMultiplexer; + using PvtApproach = WaterPvtMultiplexer; if (data.approach() == PvtApproach::ConstantCompressibilityWaterPvt) { const auto& pvt = *static_cast*>(realWaterPvt); size += packSize(pvt, comm); @@ -1044,9 +1044,9 @@ std::size_t packSize(const WaterPvtMultiplexer& data, return size; } -template std::size_t packSize(const WaterPvtMultiplexer& data, +template std::size_t packSize(const WaterPvtMultiplexer& data, Dune::MPIHelper::MPICommunicator comm); -template std::size_t packSize(const WaterPvtMultiplexer& data, +template std::size_t packSize(const WaterPvtMultiplexer& data, Dune::MPIHelper::MPICommunicator comm); template @@ -1083,9 +1083,13 @@ std::size_t packSize(const WaterPvtThermal& data, packSize(data.enableThermalViscosity(), comm) + packSize(data.enableInternalEnergy(), comm); size += packSize(bool(), comm); + if (data.isoThermalPvt()) + size += packSize(data.isoThermalPvt()->approach(), comm); + using PvtApproach = WaterPvtThermal; - if (data.isoThermalPvt()->approach() != PvtApproach::IsothermalPvt::NoWaterPvt) + if (data.isoThermalPvt()->approach() != PvtApproach::IsothermalPvt::NoWaterPvt) { size += packSize(*data.isoThermalPvt(), comm); + } return size; } @@ -2899,14 +2903,14 @@ template void pack(const OilPvtThermal& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm); -template -void pack(const WaterPvtMultiplexer& data, +template +void pack(const WaterPvtMultiplexer& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm) { pack(data.approach(), buffer, position, comm); const void* realWaterPvt = data.realWaterPvt(); - using PvtApproach = WaterPvtMultiplexer; + using PvtApproach = WaterPvtMultiplexer; if (data.approach() == PvtApproach::ConstantCompressibilityWaterPvt) { const auto& pvt = *static_cast*>(realWaterPvt); pack(pvt, buffer, position, comm); @@ -2916,10 +2920,10 @@ void pack(const WaterPvtMultiplexer& data, } } -template void pack(const WaterPvtMultiplexer& data, +template void pack(const WaterPvtMultiplexer& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm); -template void pack(const WaterPvtMultiplexer& data, +template void pack(const WaterPvtMultiplexer& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm); @@ -2962,8 +2966,11 @@ void pack(const WaterPvtThermal& data, pack(data.isoThermalPvt() != nullptr, buffer, position, comm); using PvtApproach = WaterPvtThermal; - if (data.isoThermalPvt()->approach() != PvtApproach::IsothermalPvt::NoWaterPvt) + if (data.isoThermalPvt()) + pack(data.isoThermalPvt()->approach(), buffer, position, comm); + if (data.isoThermalPvt()->approach() != PvtApproach::IsothermalPvt::NoWaterPvt) { pack(*data.isoThermalPvt(), buffer, position, comm); + } } template void pack(const WaterPvtThermal& data, @@ -4064,7 +4071,7 @@ template void unpack(std::vector& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm) { - std::size_t length=0; + std::size_t length = 0; unpack(length, buffer, position, comm); data.resize(length); @@ -5158,14 +5165,14 @@ template void unpack(OilPvtThermal& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm); -template -void unpack(WaterPvtMultiplexer& data, +template +void unpack(WaterPvtMultiplexer& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm) { - typename WaterPvtMultiplexer::WaterPvtApproach approach; + typename WaterPvtMultiplexer::WaterPvtApproach approach; unpack(approach, buffer, position, comm); - using PvtApproach = WaterPvtMultiplexer; + using PvtApproach = WaterPvtMultiplexer; void* pvt = nullptr; if (approach == PvtApproach::ConstantCompressibilityWaterPvt) { auto* realPvt = new ConstantCompressibilityWaterPvt; @@ -5176,7 +5183,7 @@ void unpack(WaterPvtMultiplexer& data, unpack(*realPvt, buffer, position, comm); pvt = realPvt; } - data = WaterPvtMultiplexer(approach, pvt); + data = WaterPvtMultiplexer(approach, pvt); } template void unpack(WaterPvtMultiplexer& data, @@ -5244,7 +5251,9 @@ void unpack(WaterPvtThermal& data, if (isothermal) { pvt = new typename WaterPvtThermal::IsothermalPvt; using PvtApproach = WaterPvtThermal; - if (pvt->approach() != PvtApproach::IsothermalPvt::NoWaterPvt) + typename PvtApproach::IsothermalPvt::WaterPvtApproach approach; + unpack(approach, buffer, position, comm); + if (approach != PvtApproach::IsothermalPvt::NoWaterPvt) unpack(*pvt, buffer, position, comm); } data = WaterPvtThermal(pvt, viscrefPress, watdentRefTemp, diff --git a/opm/simulators/utils/ParallelRestart.hpp b/opm/simulators/utils/ParallelRestart.hpp index 88c8c462f..93d0ab3a3 100644 --- a/opm/simulators/utils/ParallelRestart.hpp +++ b/opm/simulators/utils/ParallelRestart.hpp @@ -291,8 +291,8 @@ std::size_t packSize(const LiveOilPvt& data, template std::size_t packSize(const OilPvtThermal& data, Dune::MPIHelper::MPICommunicator comm); -template -std::size_t packSize(const WaterPvtMultiplexer& data, +template +std::size_t packSize(const WaterPvtMultiplexer& data, Dune::MPIHelper::MPICommunicator comm); template @@ -451,8 +451,8 @@ template void pack(const OilPvtThermal& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm); -template -void pack(const WaterPvtMultiplexer& data, +template +void pack(const WaterPvtMultiplexer& data, const std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm); @@ -615,8 +615,8 @@ template void unpack(OilPvtThermal& data, std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm); -template -void unpack(WaterPvtMultiplexer& data, +template +void unpack(WaterPvtMultiplexer& data, const std::vector& buffer, int& position, Dune::MPIHelper::MPICommunicator comm); From 35a085fe0d0a921629c613a2d13a1e78bffa2bd6 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Wed, 29 Jan 2020 08:46:43 +0100 Subject: [PATCH 4/5] changed: adjust to ThermalLawManager initialization changes --- ebos/eclproblem.hh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ebos/eclproblem.hh b/ebos/eclproblem.hh index b42b64bff..a93263969 100644 --- a/ebos/eclproblem.hh +++ b/ebos/eclproblem.hh @@ -2387,7 +2387,6 @@ private: const auto& simulator = this->simulator(); const auto& vanguard = simulator.vanguard(); - const auto& deck = vanguard.deck(); const auto& eclState = vanguard.eclState(); // fluid-matrix interactions (saturation functions; relperm/capillary pressure) @@ -2397,7 +2396,7 @@ private: compressedToCartesianElemIdx[elemIdx] = vanguard.cartesianIndex(elemIdx); thermalLawManager_ = std::make_shared(); - thermalLawManager_->initFromDeck(deck, eclState, compressedToCartesianElemIdx); + thermalLawManager_->initParamsForElements(eclState, compressedToCartesianElemIdx); } void updateReferencePorosity_() From 33d3fabb39ed638c3c58e627105360ea7455abdf Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Tue, 28 Jan 2020 11:35:38 +0100 Subject: [PATCH 5/5] add thermal parallel regression test --- compareECLFiles.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/compareECLFiles.cmake b/compareECLFiles.cmake index ec5648cfe..68bbf8f81 100755 --- a/compareECLFiles.cmake +++ b/compareECLFiles.cmake @@ -505,4 +505,11 @@ if(MPI_FOUND) SIMULATOR flow ABS_TOL ${abs_tol} REL_TOL ${rel_tol}) + + add_test_compare_parallel_simulation(CASENAME spe1_thermal + FILENAME SPE1CASE2_THERMAL + SIMULATOR flow + ABS_TOL ${abs_tol_parallel} + REL_TOL 1e-1 + DIR spe1) endif()