Add new Schedule::addWell() overload + update Well constructor args
This commit is contained in:
@@ -314,6 +314,7 @@ namespace Opm
|
||||
|
||||
std::map<std::string,Events> wellgroup_events;
|
||||
void load_rst(const RestartIO::RstState& rst, const UnitSystem& unit_system);
|
||||
void addWell(Well well, size_t report_step);
|
||||
void addWell(const std::string& wellName,
|
||||
const std::string& group,
|
||||
int headI,
|
||||
|
||||
@@ -385,17 +385,20 @@ public:
|
||||
|
||||
Well();
|
||||
Well(const std::string& wname,
|
||||
const std::string& gname,
|
||||
std::size_t init_step,
|
||||
std::size_t insert_index,
|
||||
int headI,
|
||||
int headJ,
|
||||
double ref_depth,
|
||||
Phase phase,
|
||||
ProducerCMode whistctl_cmode,
|
||||
Connection::Order ordering,
|
||||
const UnitSystem& unit_system,
|
||||
double udq_undefined);
|
||||
const std::string& gname,
|
||||
std::size_t init_step,
|
||||
std::size_t insert_index,
|
||||
int headI,
|
||||
int headJ,
|
||||
double ref_depth,
|
||||
Phase phase,
|
||||
ProducerCMode whistctl_cmode,
|
||||
Connection::Order ordering,
|
||||
const UnitSystem& unit_system,
|
||||
double udq_undefined,
|
||||
double dr,
|
||||
bool allow_xflow,
|
||||
bool auto_shutin);
|
||||
|
||||
Well(const std::string& wname,
|
||||
const std::string& gname,
|
||||
@@ -534,7 +537,7 @@ public:
|
||||
const WellGuideRate& wellGuideRate() const;
|
||||
|
||||
bool operator==(const Well& data) const;
|
||||
|
||||
void setInsertIndex(std::size_t index);
|
||||
private:
|
||||
std::string wname;
|
||||
std::string group_name;
|
||||
|
||||
@@ -2216,6 +2216,20 @@ void Schedule::handleGRUPTREE( const DeckKeyword& keyword, size_t currentStep, c
|
||||
}
|
||||
|
||||
|
||||
void Schedule::addWell(Well well, size_t report_step) {
|
||||
const std::string wname = well.name();
|
||||
|
||||
m_events.addEvent( ScheduleEvents::NEW_WELL , report_step );
|
||||
wellgroup_events.insert( std::make_pair(wname, Events(this->m_timeMap)));
|
||||
this->addWellGroupEvent(wname, ScheduleEvents::NEW_WELL, report_step);
|
||||
|
||||
well.setInsertIndex(this->wells_static.size());
|
||||
this->wells_static.insert( std::make_pair(wname, DynamicState<std::shared_ptr<Well>>(m_timeMap, nullptr)));
|
||||
auto& dynamic_well_state = this->wells_static.at(wname);
|
||||
dynamic_well_state.update(report_step, std::make_shared<Well>(std::move(well)));
|
||||
}
|
||||
|
||||
|
||||
void Schedule::addWell(const std::string& wellName,
|
||||
const std::string& group,
|
||||
int headI,
|
||||
@@ -2229,30 +2243,22 @@ void Schedule::handleGRUPTREE( const DeckKeyword& keyword, size_t currentStep, c
|
||||
Connection::Order wellConnectionOrder,
|
||||
const UnitSystem& unit_system) {
|
||||
|
||||
wells_static.insert( std::make_pair(wellName, DynamicState<std::shared_ptr<Well>>(m_timeMap, nullptr)));
|
||||
Well well(wellName,
|
||||
group,
|
||||
timeStep,
|
||||
0,
|
||||
headI, headJ,
|
||||
refDepth,
|
||||
preferredPhase,
|
||||
this->global_whistctl_mode[timeStep],
|
||||
wellConnectionOrder,
|
||||
unit_system,
|
||||
this->getUDQConfig(timeStep).params().undefinedValue(),
|
||||
drainageRadius,
|
||||
allowCrossFlow,
|
||||
automaticShutIn);
|
||||
|
||||
auto& dynamic_state = wells_static.at(wellName);
|
||||
std::size_t insert_index = this->wells_static.size() - 1;
|
||||
auto well_ptr = std::make_shared<Well>(wellName,
|
||||
group,
|
||||
timeStep,
|
||||
insert_index,
|
||||
headI, headJ,
|
||||
refDepth,
|
||||
preferredPhase,
|
||||
this->global_whistctl_mode[timeStep],
|
||||
wellConnectionOrder,
|
||||
unit_system,
|
||||
this->getUDQConfig(timeStep).params().undefinedValue());
|
||||
|
||||
well_ptr->updateCrossFlow(allowCrossFlow);
|
||||
well_ptr->updateAutoShutin(automaticShutIn);
|
||||
well_ptr->updateDrainageRadius(drainageRadius);
|
||||
dynamic_state.update(timeStep, well_ptr);
|
||||
|
||||
m_events.addEvent( ScheduleEvents::NEW_WELL , timeStep );
|
||||
wellgroup_events.insert( std::make_pair(wellName, Events(this->m_timeMap)));
|
||||
this->addWellGroupEvent(wellName, ScheduleEvents::NEW_WELL, timeStep);
|
||||
this->addWell( std::move(well), timeStep );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -93,17 +93,20 @@ Well::Well() :
|
||||
|
||||
|
||||
Well::Well(const std::string& wname_arg,
|
||||
const std::string& gname,
|
||||
std::size_t init_step_arg,
|
||||
std::size_t insert_index_arg,
|
||||
int headI_arg,
|
||||
int headJ_arg,
|
||||
double ref_depth_arg,
|
||||
Phase phase_arg,
|
||||
ProducerCMode whistctl_cmode,
|
||||
Connection::Order ordering_arg,
|
||||
const UnitSystem& unit_system_arg,
|
||||
double udq_undefined_arg) :
|
||||
const std::string& gname,
|
||||
std::size_t init_step_arg,
|
||||
std::size_t insert_index_arg,
|
||||
int headI_arg,
|
||||
int headJ_arg,
|
||||
double ref_depth_arg,
|
||||
Phase phase_arg,
|
||||
ProducerCMode whistctl_cmode,
|
||||
Connection::Order ordering_arg,
|
||||
const UnitSystem& unit_system_arg,
|
||||
double udq_undefined_arg,
|
||||
double dr,
|
||||
bool allow_xflow,
|
||||
bool auto_shutin):
|
||||
wname(wname_arg),
|
||||
group_name(gname),
|
||||
init_step(init_step_arg),
|
||||
@@ -116,9 +119,9 @@ Well::Well(const std::string& wname_arg,
|
||||
unit_system(unit_system_arg),
|
||||
udq_undefined(udq_undefined_arg),
|
||||
status(Status::SHUT),
|
||||
drainage_radius(ParserKeywords::WELSPECS::D_RADIUS::defaultValue),
|
||||
allow_cross_flow(DeckItem::to_bool(ParserKeywords::WELSPECS::CROSSFLOW::defaultValue)),
|
||||
automatic_shutin( ParserKeywords::WELSPECS::CROSSFLOW::defaultValue == "SHUT"),
|
||||
drainage_radius(dr),
|
||||
allow_cross_flow(allow_xflow),
|
||||
automatic_shutin(auto_shutin),
|
||||
producer(true),
|
||||
guide_rate({true, -1, Well::GuideRateTarget::UNDEFINED,ParserKeywords::WGRUPCON::SCALING_FACTOR::defaultValue}),
|
||||
efficiency_factor(1.0),
|
||||
@@ -590,6 +593,11 @@ const std::string& Well::name() const {
|
||||
}
|
||||
|
||||
|
||||
void Well::setInsertIndex(std::size_t index) {
|
||||
this->insert_index = index;
|
||||
}
|
||||
|
||||
|
||||
const WellConnections& Well::getConnections() const {
|
||||
return *this->connections;
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ BOOST_AUTO_TEST_CASE(WTEST_STATE2) {
|
||||
|
||||
const UnitSystem us{};
|
||||
std::vector<Well> wells;
|
||||
wells.emplace_back("WELL_NAME", "A", 0, 0, 1, 1, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0.);
|
||||
wells.emplace_back("WELL_NAME", "A", 0, 0, 1, 1, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0., 1.0, true, true);
|
||||
{
|
||||
wells[0].updateStatus(Well::Status::SHUT, false);
|
||||
auto shut_wells = st.updateWells(wc, wells, 5000);
|
||||
@@ -110,8 +110,8 @@ BOOST_AUTO_TEST_CASE(WTEST_STATE) {
|
||||
|
||||
const UnitSystem us{};
|
||||
std::vector<Well> wells;
|
||||
wells.emplace_back("WELL_NAME", "A", 0, 0, 1, 1, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0.);
|
||||
wells.emplace_back("WELLX", "A", 0, 0, 2, 2, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0.);
|
||||
wells.emplace_back("WELL_NAME", "A", 0, 0, 1, 1, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0., 1.0, true, true);
|
||||
wells.emplace_back("WELLX", "A", 0, 0, 2, 2, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0., 1.0, true, true);
|
||||
|
||||
WellTestConfig wc;
|
||||
{
|
||||
@@ -181,9 +181,9 @@ BOOST_AUTO_TEST_CASE(WTEST_STATE_COMPLETIONS) {
|
||||
|
||||
const UnitSystem us{};
|
||||
std::vector<Well> wells;
|
||||
wells.emplace_back("WELL_NAME", "A", 0, 0, 1, 1, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0.);
|
||||
wells.emplace_back("WELL_NAME", "A", 0, 0, 1, 1, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0., 1.0, true, true);
|
||||
wells[0].updateStatus(Well::Status::OPEN, false);
|
||||
wells.emplace_back("WELLX", "A", 0, 0, 2, 2, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0.);
|
||||
wells.emplace_back("WELLX", "A", 0, 0, 2, 2, 200., Phase::OIL, Well::ProducerCMode::NONE, Connection::Order::TRACK, us, 0., 1.0, true, true);
|
||||
wells[1].updateStatus(Well::Status::OPEN, false);
|
||||
|
||||
auto closed_completions = st.updateWells(wc, wells, 5000);
|
||||
|
||||
@@ -191,7 +191,7 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestINPUT) {
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(NewWellZeroCompletions) {
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
BOOST_CHECK_EQUAL( 0U , well.getConnections( ).size() );
|
||||
}
|
||||
|
||||
@@ -200,7 +200,7 @@ BOOST_AUTO_TEST_CASE(isProducerCorrectlySet) {
|
||||
// HACK: This test checks correctly setting of isProducer/isInjector. This property depends on which of
|
||||
// WellProductionProperties/WellInjectionProperties is set last, independent of actual values.
|
||||
{
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
|
||||
/* 1: Well is created as producer */
|
||||
@@ -218,7 +218,7 @@ BOOST_AUTO_TEST_CASE(isProducerCorrectlySet) {
|
||||
|
||||
|
||||
{
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
/* Set a reservoir injection rate => Well becomes an Injector */
|
||||
auto injectionProps2 = std::make_shared<Opm::Well::WellInjectionProperties>(well.getInjectionProperties());
|
||||
@@ -229,7 +229,7 @@ BOOST_AUTO_TEST_CASE(isProducerCorrectlySet) {
|
||||
}
|
||||
|
||||
{
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
/* Set rates => Well becomes a producer; injection rate should be set to 0. */
|
||||
auto injectionProps3 = std::make_shared<Opm::Well::WellInjectionProperties>(well.getInjectionProperties());
|
||||
@@ -252,7 +252,7 @@ BOOST_AUTO_TEST_CASE(isProducerCorrectlySet) {
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(GroupnameCorretlySet) {
|
||||
Opm::Well well("WELL1" , "G1", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1" , "G1", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
BOOST_CHECK_EQUAL("G1" , well.groupName());
|
||||
well.updateGroup( "GROUP2");
|
||||
@@ -261,7 +261,7 @@ BOOST_AUTO_TEST_CASE(GroupnameCorretlySet) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(addWELSPECS_setData_dataSet) {
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
BOOST_CHECK_EQUAL(23, well.getHeadI());
|
||||
BOOST_CHECK_EQUAL(42, well.getHeadJ());
|
||||
@@ -271,7 +271,7 @@ BOOST_AUTO_TEST_CASE(addWELSPECS_setData_dataSet) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(XHPLimitDefault) {
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
|
||||
auto productionProps = std::make_shared<Opm::Well::WellProductionProperties>(well.getProductionProperties());
|
||||
@@ -291,7 +291,7 @@ BOOST_AUTO_TEST_CASE(XHPLimitDefault) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(InjectorType) {
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
|
||||
auto injectionProps = std::make_shared<Opm::Well::WellInjectionProperties>(well.getInjectionProperties());
|
||||
@@ -309,7 +309,7 @@ BOOST_AUTO_TEST_CASE(InjectorType) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellHaveProductionControlLimit) {
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
|
||||
BOOST_CHECK( !well.getProductionProperties().hasProductionControl( Opm::Well::ProducerCMode::ORAT ));
|
||||
@@ -356,7 +356,7 @@ BOOST_AUTO_TEST_CASE(WellHaveProductionControlLimit) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellHaveInjectionControlLimit) {
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::Well::InjectorCMode::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::Well::InjectorCMode::RESV ));
|
||||
@@ -398,7 +398,7 @@ BOOST_AUTO_TEST_CASE(WellHaveInjectionControlLimit) {
|
||||
/*********************************************************************/
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellGuideRatePhase_GuideRatePhaseSet) {
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
BOOST_CHECK(Opm::Well::GuideRateTarget::UNDEFINED == well.getGuideRatePhase());
|
||||
|
||||
@@ -409,7 +409,7 @@ BOOST_AUTO_TEST_CASE(WellGuideRatePhase_GuideRatePhaseSet) {
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellEfficiencyFactorSet) {
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
BOOST_CHECK_EQUAL(1.0, well.getEfficiencyFactor());
|
||||
BOOST_CHECK( well.updateEfficiencyFactor(0.9));
|
||||
@@ -776,7 +776,7 @@ BOOST_AUTO_TEST_CASE(CMODE_DEFAULT) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WELL_CONTROLS) {
|
||||
Opm::Well well("WELL", "GROUP", 0, 0, 0, 0, 1000, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Opm::Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well well("WELL", "GROUP", 0, 0, 0, 0, 1000, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Opm::Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
Opm::Well::WellProductionProperties prod("OP1");
|
||||
Opm::SummaryState st(std::chrono::system_clock::now());
|
||||
well.productionControls(st);
|
||||
@@ -797,8 +797,8 @@ BOOST_AUTO_TEST_CASE(WELL_CONTROLS) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ExtraAccessors) {
|
||||
Opm::Well inj("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well prod("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
Opm::Well inj("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
Opm::Well prod("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::Well::ProducerCMode::CMODE_UNDEFINED, Connection::Order::DEPTH, UnitSystem::newMETRIC(), 0, 1.0, false, false);
|
||||
|
||||
auto inj_props= std::make_shared<Opm::Well::WellInjectionProperties>(inj.getInjectionProperties());
|
||||
inj_props->VFPTableNumber = 100;
|
||||
|
||||
Reference in New Issue
Block a user