Merge pull request #4375 from akva2/wellpolymerproperties_hpp_include

add missing WellPolymerProperties.hpp includes
This commit is contained in:
Bård Skaflestad 2023-01-13 14:00:15 +01:00 committed by GitHub
commit 1f29b7cef0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 40 additions and 13 deletions

View File

@ -50,6 +50,7 @@
#include <opm/input/eclipse/Schedule/Well/WListManager.hpp> #include <opm/input/eclipse/Schedule/Well/WListManager.hpp>
#include <opm/input/eclipse/Schedule/Well/WellBrineProperties.hpp> #include <opm/input/eclipse/Schedule/Well/WellBrineProperties.hpp>
#include <opm/input/eclipse/Schedule/Well/WellFoamProperties.hpp> #include <opm/input/eclipse/Schedule/Well/WellFoamProperties.hpp>
#include <opm/input/eclipse/Schedule/Well/WellPolymerProperties.hpp>
#include <opm/input/eclipse/Schedule/Well/WellTestState.hpp> #include <opm/input/eclipse/Schedule/Well/WellTestState.hpp>
#include <opm/input/eclipse/Schedule/Well/WellTracerProperties.hpp> #include <opm/input/eclipse/Schedule/Well/WellTracerProperties.hpp>

View File

@ -2056,7 +2056,7 @@ namespace Opm
DeferredLogger& deferred_logger) const DeferredLogger& deferred_logger) const
{ {
if constexpr (Base::has_polymermw) { if constexpr (Base::has_polymermw) {
const int water_table_id = this->well_ecl_.getPolymerProperties().m_skprwattable; const int water_table_id = this->polymerWaterTable_();
if (water_table_id <= 0) { if (water_table_id <= 0) {
OPM_DEFLOG_THROW(std::runtime_error, OPM_DEFLOG_THROW(std::runtime_error,
fmt::format("Unused SKPRWAT table id used for well {}", name()), fmt::format("Unused SKPRWAT table id used for well {}", name()),
@ -2094,7 +2094,7 @@ namespace Opm
if (poly_inj_conc == 0.) { if (poly_inj_conc == 0.) {
return sign * pskinwater(throughput, water_velocity_abs, deferred_logger); return sign * pskinwater(throughput, water_velocity_abs, deferred_logger);
} }
const int polymer_table_id = this->well_ecl_.getPolymerProperties().m_skprpolytable; const int polymer_table_id = this->polymerTable_();
if (polymer_table_id <= 0) { if (polymer_table_id <= 0) {
OPM_DEFLOG_THROW(std::runtime_error, OPM_DEFLOG_THROW(std::runtime_error,
fmt::format("Unavailable SKPRPOLY table id used for well {}", name()), fmt::format("Unavailable SKPRPOLY table id used for well {}", name()),
@ -2133,7 +2133,7 @@ namespace Opm
DeferredLogger& deferred_logger) const DeferredLogger& deferred_logger) const
{ {
if constexpr (Base::has_polymermw) { if constexpr (Base::has_polymermw) {
const int table_id = this->well_ecl_.getPolymerProperties().m_plymwinjtable; const int table_id = this->polymerInjTable_();
const auto& table_func = PolymerModule::getPlymwinjTable(table_id); const auto& table_func = PolymerModule::getPlymwinjTable(table_id);
const EvalWell throughput_eval(this->primary_variables_.numWellEq() + Indices::numEq, throughput); const EvalWell throughput_eval(this->primary_variables_.numWellEq() + Indices::numEq, throughput);
EvalWell molecular_weight(this->primary_variables_.numWellEq() + Indices::numEq, 0.); EvalWell molecular_weight(this->primary_variables_.numWellEq() + Indices::numEq, 0.);

View File

@ -25,6 +25,7 @@
#include <opm/input/eclipse/Schedule/Well/WellBrineProperties.hpp> #include <opm/input/eclipse/Schedule/Well/WellBrineProperties.hpp>
#include <opm/input/eclipse/Schedule/Well/WellConnections.hpp> #include <opm/input/eclipse/Schedule/Well/WellConnections.hpp>
#include <opm/input/eclipse/Schedule/Well/WellFoamProperties.hpp> #include <opm/input/eclipse/Schedule/Well/WellFoamProperties.hpp>
#include <opm/input/eclipse/Schedule/Well/WellPolymerProperties.hpp>
#include <opm/input/eclipse/Schedule/Well/WellTestState.hpp> #include <opm/input/eclipse/Schedule/Well/WellTestState.hpp>
#include <opm/simulators/utils/DeferredLoggingErrorHelpers.hpp> #include <opm/simulators/utils/DeferredLoggingErrorHelpers.hpp>
#include <opm/simulators/wells/PerforationData.hpp> #include <opm/simulators/wells/PerforationData.hpp>
@ -467,4 +468,33 @@ double WellInterfaceGeneric::wsalt_() const
} }
} }
double WellInterfaceGeneric::wpolymer_() const
{
auto injectorType = this->well_ecl_.injectorType();
if (injectorType == InjectorType::WATER) {
WellPolymerProperties polymer = this->well_ecl_.getPolymerProperties();
const double polymer_injection_concentration = polymer.m_polymerConcentration;
return polymer_injection_concentration;
} else {
// Not a water injection well => no polymer.
return 0.0;
}
}
int WellInterfaceGeneric::polymerTable_() const
{
return this->well_ecl_.getPolymerProperties().m_skprpolytable;
}
int WellInterfaceGeneric::polymerWaterTable_() const
{
return this->well_ecl_.getPolymerProperties().m_skprwattable;
}
int WellInterfaceGeneric::polymerInjTable_() const
{
return this->well_ecl_.getPolymerProperties().m_plymwinjtable;
}
} // namespace Opm } // namespace Opm

View File

@ -199,8 +199,13 @@ protected:
bool getAllowCrossFlow() const; bool getAllowCrossFlow() const;
double wfoam_() const; double wfoam_() const;
double wpolymer_() const;
double wsalt_() const; double wsalt_() const;
int polymerTable_() const;
int polymerInjTable_() const;
int polymerWaterTable_() const;
// definition of the struct OperabilityStatus // definition of the struct OperabilityStatus
struct OperabilityStatus { struct OperabilityStatus {
bool isOperableAndSolvable() const { bool isOperableAndSolvable() const {

View File

@ -96,16 +96,7 @@ namespace Opm
wpolymer() const wpolymer() const
{ {
if constexpr (has_polymer) { if constexpr (has_polymer) {
auto injectorType = this->well_ecl_.injectorType(); return this->wpolymer_();
if (injectorType == InjectorType::WATER) {
WellPolymerProperties polymer = this->well_ecl_.getPolymerProperties();
const double polymer_injection_concentration = polymer.m_polymerConcentration;
return polymer_injection_concentration;
} else {
// Not a water injection well => no polymer.
return 0.0;
}
} }
return 0.0; return 0.0;