From bac2087b85d9fa430533d536e621275ce81540ae Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Tue, 20 Feb 2024 23:39:23 +0100 Subject: [PATCH] WellProdIndexCalculator: template Scalar type --- .../wells/BlackoilWellModelGeneric.hpp | 2 +- opm/simulators/wells/MultisegmentWell.hpp | 2 +- .../wells/MultisegmentWell_impl.hpp | 2 +- opm/simulators/wells/StandardWell.hpp | 2 +- opm/simulators/wells/StandardWell_impl.hpp | 2 +- opm/simulators/wells/WellInterface.hpp | 2 +- .../wells/WellProdIndexCalculator.cpp | 57 +++++++++++------ .../wells/WellProdIndexCalculator.hpp | 19 +++--- tests/test_wellprodindexcalculator.cpp | 64 +++++++++---------- 9 files changed, 87 insertions(+), 65 deletions(-) diff --git a/opm/simulators/wells/BlackoilWellModelGeneric.hpp b/opm/simulators/wells/BlackoilWellModelGeneric.hpp index 74ad2ff2f..20c434137 100644 --- a/opm/simulators/wells/BlackoilWellModelGeneric.hpp +++ b/opm/simulators/wells/BlackoilWellModelGeneric.hpp @@ -549,7 +549,7 @@ protected: std::vector> parallel_well_info_; std::vector>> local_parallel_well_info_; - std::vector prod_index_calc_; + std::vector> prod_index_calc_; mutable ParallelWBPCalculation wbpCalculationService_; std::vector pvt_region_idx_; diff --git a/opm/simulators/wells/MultisegmentWell.hpp b/opm/simulators/wells/MultisegmentWell.hpp index e62aa0574..385e369c5 100644 --- a/opm/simulators/wells/MultisegmentWell.hpp +++ b/opm/simulators/wells/MultisegmentWell.hpp @@ -135,7 +135,7 @@ namespace Opm { DeferredLogger& deferred_logger) override; void updateProductivityIndex(const Simulator& simulator, - const WellProdIndexCalculator& wellPICalc, + const WellProdIndexCalculator& wellPICalc, WellState& well_state, DeferredLogger& deferred_logger) const override; diff --git a/opm/simulators/wells/MultisegmentWell_impl.hpp b/opm/simulators/wells/MultisegmentWell_impl.hpp index 120956249..40e89e6bc 100644 --- a/opm/simulators/wells/MultisegmentWell_impl.hpp +++ b/opm/simulators/wells/MultisegmentWell_impl.hpp @@ -735,7 +735,7 @@ namespace Opm void MultisegmentWell:: updateProductivityIndex(const Simulator& simulator, - const WellProdIndexCalculator& wellPICalc, + const WellProdIndexCalculator& wellPICalc, WellState& well_state, DeferredLogger& deferred_logger) const { diff --git a/opm/simulators/wells/StandardWell.hpp b/opm/simulators/wells/StandardWell.hpp index d02c04e7e..846407a20 100644 --- a/opm/simulators/wells/StandardWell.hpp +++ b/opm/simulators/wells/StandardWell.hpp @@ -177,7 +177,7 @@ namespace Opm DeferredLogger& deferred_logger) override; // should be const? void updateProductivityIndex(const Simulator& simulator, - const WellProdIndexCalculator& wellPICalc, + const WellProdIndexCalculator& wellPICalc, WellState& well_state, DeferredLogger& deferred_logger) const override; diff --git a/opm/simulators/wells/StandardWell_impl.hpp b/opm/simulators/wells/StandardWell_impl.hpp index e09c20c7d..0e8daf767 100644 --- a/opm/simulators/wells/StandardWell_impl.hpp +++ b/opm/simulators/wells/StandardWell_impl.hpp @@ -1220,7 +1220,7 @@ namespace Opm void StandardWell:: updateProductivityIndex(const Simulator& simulator, - const WellProdIndexCalculator& wellPICalc, + const WellProdIndexCalculator& wellPICalc, WellState& well_state, DeferredLogger& deferred_logger) const { diff --git a/opm/simulators/wells/WellInterface.hpp b/opm/simulators/wells/WellInterface.hpp index 5df1faa4b..6c4ee45ca 100644 --- a/opm/simulators/wells/WellInterface.hpp +++ b/opm/simulators/wells/WellInterface.hpp @@ -255,7 +255,7 @@ public: DeferredLogger& deferred_logger) = 0; // should be const? virtual void updateProductivityIndex(const Simulator& simulator, - const WellProdIndexCalculator& wellPICalc, + const WellProdIndexCalculator& wellPICalc, WellState& well_state, DeferredLogger& deferred_logger) const = 0; diff --git a/opm/simulators/wells/WellProdIndexCalculator.cpp b/opm/simulators/wells/WellProdIndexCalculator.cpp index e0e9f811a..ea01ab61d 100644 --- a/opm/simulators/wells/WellProdIndexCalculator.cpp +++ b/opm/simulators/wells/WellProdIndexCalculator.cpp @@ -35,8 +35,9 @@ namespace { -void checkSizeCompatibility(const Opm::WellProdIndexCalculator& wellPICalc, - const std::vector& connMobility) +template +void checkSizeCompatibility(const Opm::WellProdIndexCalculator& wellPICalc, + const std::vector& connMobility) { if (connMobility.size() != wellPICalc.numConnections()) { throw std::logic_error { @@ -45,7 +46,8 @@ void checkSizeCompatibility(const Opm::WellProdIndexCalculator& wellPICalc, } } -double logRescale(const double r0, const double rw, const double rd, const double S) +template +Scalar logRescale(const Scalar r0, const Scalar rw, const Scalar rd, const Scalar S) { const auto numerator = std::log(r0 / rw) + S; const auto denom = std::log(rd / rw) + S; @@ -53,8 +55,9 @@ double logRescale(const double r0, const double rw, const double rd, const doubl return numerator / denom; } +template void standardConnFactorsExplicitDrainRadius(const Opm::Well& well, - std::vector& stdConnFact) + std::vector& stdConnFact) { const auto& connections = well.getConnections(); const auto rdrain = well.getDrainageRadius(); @@ -66,8 +69,9 @@ void standardConnFactorsExplicitDrainRadius(const Opm::Well& well, }); } +template void standardConnFactorsDrainIsEquivalent(const Opm::Well& well, - std::vector& stdConnFact) + std::vector& stdConnFact) { const auto& connections = well.getConnections(); @@ -78,9 +82,10 @@ void standardConnFactorsDrainIsEquivalent(const Opm::Well& well, }); } -std::vector calculateStandardConnFactors(const Opm::Well& well) +template +std::vector calculateStandardConnFactors(const Opm::Well& well) { - std::vector stdConnFact(well.getConnections().size()); + std::vector stdConnFact(well.getConnections().size()); if (well.getDrainageRadius() > 0.0) { // Well has an explicit drainage radius. Apply logarithmic @@ -98,28 +103,33 @@ std::vector calculateStandardConnFactors(const Opm::Well& well) } // namespace Anonymous -Opm::WellProdIndexCalculator::WellProdIndexCalculator(const Well& well) - : standardConnFactors_{ calculateStandardConnFactors(well) } +template +Opm::WellProdIndexCalculator:: +WellProdIndexCalculator(const Well& well) + : standardConnFactors_{ calculateStandardConnFactors(well) } {} -void Opm::WellProdIndexCalculator::reInit(const Well& well) +template +void Opm::WellProdIndexCalculator:: +reInit(const Well& well) { - this->standardConnFactors_ = calculateStandardConnFactors(well); + this->standardConnFactors_ = calculateStandardConnFactors(well); } -double -Opm::WellProdIndexCalculator:: +template +Scalar Opm::WellProdIndexCalculator:: connectionProdIndStandard(const std::size_t connIdx, - const double connMobility) const + const Scalar connMobility) const { return this->standardConnFactors_[connIdx] * connMobility; } // =========================================================================== -std::vector -Opm::connectionProdIndStandard(const WellProdIndexCalculator& wellPICalc, - const std::vector& connMobility) +template +std::vector +Opm::connectionProdIndStandard(const WellProdIndexCalculator& wellPICalc, + const std::vector& connMobility) { checkSizeCompatibility(wellPICalc, connMobility); @@ -133,10 +143,19 @@ Opm::connectionProdIndStandard(const WellProdIndexCalculator& wellPICalc, return connPI; } -double Opm::wellProdIndStandard(const WellProdIndexCalculator& wellPICalc, - const std::vector& connMobility) +template +Scalar Opm::wellProdIndStandard(const WellProdIndexCalculator& wellPICalc, + const std::vector& connMobility) { const auto connPI = connectionProdIndStandard(wellPICalc, connMobility); return std::accumulate(connPI.begin(), connPI.end(), 0.0); } + +template class Opm::WellProdIndexCalculator; +template std::vector +Opm::connectionProdIndStandard(const WellProdIndexCalculator&, + const std::vector&); +template double +Opm::wellProdIndStandard(const WellProdIndexCalculator&, + const std::vector&); diff --git a/opm/simulators/wells/WellProdIndexCalculator.hpp b/opm/simulators/wells/WellProdIndexCalculator.hpp index 3d67525c1..5e24f11f8 100644 --- a/opm/simulators/wells/WellProdIndexCalculator.hpp +++ b/opm/simulators/wells/WellProdIndexCalculator.hpp @@ -32,6 +32,7 @@ namespace Opm { /// Collect per-connection static information to enable calculating /// connection-level or well-level productivity index values when /// incorporating dynamic phase mobilities. +template class WellProdIndexCalculator { public: @@ -62,8 +63,8 @@ public: /// intersected by well's connection \p connIdx. /// /// \return Connection-level steady-state productivity index. - double connectionProdIndStandard(const std::size_t connIdx, - const double connMobility) const; + Scalar connectionProdIndStandard(const std::size_t connIdx, + const Scalar connMobility) const; /// Number of connections in this well. /// @@ -79,7 +80,7 @@ private: /// Corresponds to the well's connection transmissibility factors, /// multiplied by a ratio of logarithms if the well has an explicit, /// positive drainage radius. - std::vector standardConnFactors_{}; + std::vector standardConnFactors_{}; }; /// Compute connection-level productivity index values for all @@ -94,9 +95,10 @@ private: /// /// \return Connection-level steady-state productivity index values for /// all connections. -std::vector -connectionProdIndStandard(const WellProdIndexCalculator& wellPICalc, - const std::vector& connMobility); +template +std::vector +connectionProdIndStandard(const WellProdIndexCalculator& wellPICalc, + const std::vector& connMobility); /// Compute well-level productivity index value. /// @@ -108,8 +110,9 @@ connectionProdIndStandard(const WellProdIndexCalculator& wellPICalc, /// \code wellPICalc.numConnections() \endcode well connection. /// /// \return Well-level steady-state productivity index value. -double wellProdIndStandard(const WellProdIndexCalculator& wellPICalc, - const std::vector& connMobility); +template +Scalar wellProdIndStandard(const WellProdIndexCalculator& wellPICalc, + const std::vector& connMobility); } // namespace Opm diff --git a/tests/test_wellprodindexcalculator.cpp b/tests/test_wellprodindexcalculator.cpp index 46439a69a..c363ef20c 100644 --- a/tests/test_wellprodindexcalculator.cpp +++ b/tests/test_wellprodindexcalculator.cpp @@ -151,7 +151,7 @@ BOOST_AUTO_TEST_SUITE(ConnectionLevel) BOOST_AUTO_TEST_CASE(allDefaulted_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), noSkinFactor_SameCF()) }; @@ -165,7 +165,7 @@ BOOST_AUTO_TEST_CASE(allDefaulted_SameCF) BOOST_AUTO_TEST_CASE(allDefaulted_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), noSkinFactor_DifferentCF()) }; @@ -179,7 +179,7 @@ BOOST_AUTO_TEST_CASE(allDefaulted_DifferentCF) BOOST_AUTO_TEST_CASE(defaultedDRad_Skin2_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), skin2_SameCF()) }; @@ -193,7 +193,7 @@ BOOST_AUTO_TEST_CASE(defaultedDRad_Skin2_SameCF) BOOST_AUTO_TEST_CASE(defaultedDRad_skin421_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), skin421_DifferentCF()) }; @@ -207,7 +207,7 @@ BOOST_AUTO_TEST_CASE(defaultedDRad_skin421_DifferentCF) BOOST_AUTO_TEST_CASE(logarithmic_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), noSkinFactor_SameCF()) }; @@ -221,7 +221,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_SameCF) BOOST_AUTO_TEST_CASE(logarithmic_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), noSkinFactor_DifferentCF()) }; @@ -235,7 +235,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_DifferentCF) BOOST_AUTO_TEST_CASE(logarithmic_Skin2_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), skin2_SameCF()) }; @@ -249,7 +249,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_Skin2_SameCF) BOOST_AUTO_TEST_CASE(logarithmic_skin421_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), skin421_DifferentCF()) }; @@ -269,7 +269,7 @@ BOOST_AUTO_TEST_SUITE(AllConnections) BOOST_AUTO_TEST_CASE(allDefaulted_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), noSkinFactor_SameCF()) }; @@ -290,7 +290,7 @@ BOOST_AUTO_TEST_CASE(allDefaulted_SameCF) BOOST_AUTO_TEST_CASE(allDefaulted_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), noSkinFactor_DifferentCF()) }; @@ -311,7 +311,7 @@ BOOST_AUTO_TEST_CASE(allDefaulted_DifferentCF) BOOST_AUTO_TEST_CASE(defaultedDRad_Skin2_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), skin2_SameCF()) }; @@ -332,7 +332,7 @@ BOOST_AUTO_TEST_CASE(defaultedDRad_Skin2_SameCF) BOOST_AUTO_TEST_CASE(defaultedDRad_skin421_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), skin421_DifferentCF()) }; @@ -353,7 +353,7 @@ BOOST_AUTO_TEST_CASE(defaultedDRad_skin421_DifferentCF) BOOST_AUTO_TEST_CASE(logarithmic_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), noSkinFactor_SameCF()) }; @@ -374,7 +374,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_SameCF) BOOST_AUTO_TEST_CASE(logarithmic_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), noSkinFactor_DifferentCF()) }; @@ -395,7 +395,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_DifferentCF) BOOST_AUTO_TEST_CASE(logarithmic_Skin2_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), skin2_SameCF()) }; @@ -416,7 +416,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_Skin2_SameCF) BOOST_AUTO_TEST_CASE(logarithmic_skin421_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), skin421_DifferentCF()) }; @@ -445,7 +445,7 @@ BOOST_AUTO_TEST_SUITE(WellLevel) BOOST_AUTO_TEST_CASE(allDefaulted_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), noSkinFactor_SameCF()) }; @@ -461,7 +461,7 @@ BOOST_AUTO_TEST_CASE(allDefaulted_SameCF) BOOST_AUTO_TEST_CASE(allDefaulted_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), noSkinFactor_DifferentCF()) }; @@ -477,7 +477,7 @@ BOOST_AUTO_TEST_CASE(allDefaulted_DifferentCF) BOOST_AUTO_TEST_CASE(defaultedDRad_Skin2_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), skin2_SameCF()) }; @@ -493,7 +493,7 @@ BOOST_AUTO_TEST_CASE(defaultedDRad_Skin2_SameCF) BOOST_AUTO_TEST_CASE(defaultedDRad_skin421_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(drainRadDefaulted(), skin421_DifferentCF()) }; @@ -509,7 +509,7 @@ BOOST_AUTO_TEST_CASE(defaultedDRad_skin421_DifferentCF) BOOST_AUTO_TEST_CASE(logarithmic_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), noSkinFactor_SameCF()) }; @@ -525,7 +525,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_SameCF) BOOST_AUTO_TEST_CASE(logarithmic_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), noSkinFactor_DifferentCF()) }; @@ -541,7 +541,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_DifferentCF) BOOST_AUTO_TEST_CASE(logarithmic_Skin2_SameCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), skin2_SameCF()) }; @@ -557,7 +557,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_Skin2_SameCF) BOOST_AUTO_TEST_CASE(logarithmic_skin421_DifferentCF) { - const auto wpiCalc = Opm::WellProdIndexCalculator { + const auto wpiCalc = Opm::WellProdIndexCalculator { createWell(explicitDrainRad(), skin421_DifferentCF()) }; @@ -582,7 +582,7 @@ BOOST_AUTO_TEST_SUITE(Re_Init_Connection_Level) BOOST_AUTO_TEST_CASE(allDefaulted_SameCF) { auto well = createWell(drainRadDefaulted(), noSkinFactor_SameCF()); - auto wpiCalc = Opm::WellProdIndexCalculator { well }; + auto wpiCalc = Opm::WellProdIndexCalculator { well }; well.updateWellProductivityIndex( ); const auto scalingFactor = well.convertDeckPI(2.0) / (1.0*liquid_PI_unit()); @@ -605,7 +605,7 @@ BOOST_AUTO_TEST_CASE(allDefaulted_SameCF) BOOST_AUTO_TEST_CASE(allDefaulted_DifferentCF) { auto well = createWell(drainRadDefaulted(), noSkinFactor_DifferentCF()); - auto wpiCalc = Opm::WellProdIndexCalculator { well }; + auto wpiCalc = Opm::WellProdIndexCalculator { well }; well.updateWellProductivityIndex( ); const auto scalingFactor = well.convertDeckPI(2.0) / (1.0*liquid_PI_unit()); @@ -628,7 +628,7 @@ BOOST_AUTO_TEST_CASE(allDefaulted_DifferentCF) BOOST_AUTO_TEST_CASE(defaultedDRad_Skin2_SameCF) { auto well = createWell(drainRadDefaulted(), skin2_SameCF()); - auto wpiCalc = Opm::WellProdIndexCalculator { well }; + auto wpiCalc = Opm::WellProdIndexCalculator { well }; well.updateWellProductivityIndex( ); const auto scalingFactor = well.convertDeckPI(2.0) / (1.0*liquid_PI_unit()); @@ -651,7 +651,7 @@ BOOST_AUTO_TEST_CASE(defaultedDRad_Skin2_SameCF) BOOST_AUTO_TEST_CASE(defaultedDRad_skin421_DifferentCF) { auto well = createWell(drainRadDefaulted(), skin421_DifferentCF()); - auto wpiCalc = Opm::WellProdIndexCalculator { well }; + auto wpiCalc = Opm::WellProdIndexCalculator { well }; well.updateWellProductivityIndex( ); const auto scalingFactor = well.convertDeckPI(2.0) / (1.0*liquid_PI_unit()); @@ -674,7 +674,7 @@ BOOST_AUTO_TEST_CASE(defaultedDRad_skin421_DifferentCF) BOOST_AUTO_TEST_CASE(logarithmic_SameCF) { auto well = createWell(explicitDrainRad(), noSkinFactor_SameCF()); - auto wpiCalc = Opm::WellProdIndexCalculator { well }; + auto wpiCalc = Opm::WellProdIndexCalculator { well }; well.updateWellProductivityIndex( ); const auto scalingFactor = well.convertDeckPI(2.0) / (1.0*liquid_PI_unit()); @@ -697,7 +697,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_SameCF) BOOST_AUTO_TEST_CASE(logarithmic_DifferentCF) { auto well = createWell(explicitDrainRad(), noSkinFactor_DifferentCF()); - auto wpiCalc = Opm::WellProdIndexCalculator { well }; + auto wpiCalc = Opm::WellProdIndexCalculator { well }; well.updateWellProductivityIndex( ); const auto scalingFactor = well.convertDeckPI(2.0) / (1.0*liquid_PI_unit()); @@ -720,7 +720,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_DifferentCF) BOOST_AUTO_TEST_CASE(logarithmic_Skin2_SameCF) { auto well = createWell(explicitDrainRad(), skin2_SameCF()); - auto wpiCalc = Opm::WellProdIndexCalculator { well }; + auto wpiCalc = Opm::WellProdIndexCalculator { well }; well.updateWellProductivityIndex( ); const auto scalingFactor = well.convertDeckPI(2.0) / (1.0*liquid_PI_unit()); @@ -743,7 +743,7 @@ BOOST_AUTO_TEST_CASE(logarithmic_Skin2_SameCF) BOOST_AUTO_TEST_CASE(logarithmic_skin421_DifferentCF) { auto well = createWell(explicitDrainRad(), skin421_DifferentCF()); - auto wpiCalc = Opm::WellProdIndexCalculator { well }; + auto wpiCalc = Opm::WellProdIndexCalculator { well }; well.updateWellProductivityIndex( ); const auto scalingFactor = well.convertDeckPI(2.0) / (1.0*liquid_PI_unit());