Temporarily Disable Higher-Level Water Injection Control

Instead, just declare that all non-FIELD groups are subject to
higher-level control of the water injection.

This hack is needed for compatibility on a real field case.  We must
revisit this at a later point.
This commit is contained in:
Bård Skaflestad 2022-05-11 12:01:50 +02:00
parent adb84c15cc
commit 188d7802a3
2 changed files with 24 additions and 27 deletions

View File

@ -745,6 +745,9 @@ void staticContrib(const Opm::Schedule& sched,
iGrp[nwgmax+11] = 0;
iGrp[nwgmax+12] = -1;
// Hack. Needed by real field cases.
iGrp[nwgmax + IGroup::WInjHighLevCtrl] = 1;
//assign values to group number (according to group sequence)
iGrp[nwgmax+88] = group.insert_index();
iGrp[nwgmax+89] = group.insert_index();

View File

@ -39,12 +39,11 @@
#include <opm/input/eclipse/Schedule/SummaryState.hpp>
#include <opm/common/utility/TimeService.hpp>
#include <cstddef>
#include <exception>
#include <stdexcept>
#include <utility>
#include <vector>
#include <iostream>
#include <cstddef>
namespace {
@ -598,6 +597,7 @@ Opm::SummaryState sim_state_2()
return state;
}
}
struct SimulationCase
{
explicit SimulationCase(const Opm::Deck& deck)
@ -618,7 +618,6 @@ struct SimulationCase
BOOST_AUTO_TEST_SUITE(Aggregate_Group)
// test dimensions of multisegment data
BOOST_AUTO_TEST_CASE (Constructor)
{
@ -776,8 +775,6 @@ BOOST_AUTO_TEST_CASE (Declared_Group_Data)
start = (ih.ngmaxz-1)*ih.nzgrpz;
BOOST_CHECK_EQUAL(zGrp[start + 0].c_str() , "FIELD "); // Group FIELD - FOPR
}
}
BOOST_AUTO_TEST_CASE (Declared_Group_Data_2)
@ -785,20 +782,20 @@ BOOST_AUTO_TEST_CASE (Declared_Group_Data_2)
namespace VI = ::Opm::RestartIO::Helpers::VectorItems;
const auto simCase = SimulationCase {second_sim("MOD4_TEST_IGRP-DATA.DATA")};
// Report Step 1:
const auto rptStep = std::size_t {1};
double secs_elapsed = 3.1536E07;
Opm::EclipseState es = simCase.es;
Opm::Runspec rspec = es.runspec();
Opm::Schedule sched = simCase.sched;
Opm::EclipseGrid grid = simCase.grid;
const auto& units = es.getUnits();
const auto& st = sim_state_2();
const auto& es = simCase.es;
const auto& sched = simCase.sched;
const auto& grid = simCase.grid;
const auto& units = es.getUnits();
const auto& st = sim_state_2();
const auto ih = Opm::RestartIO::Helpers::createInteHead(es, grid, sched, secs_elapsed,
rptStep, rptStep+1, rptStep);
rptStep, rptStep + 1, rptStep);
auto agrpd = Opm::RestartIO::Helpers::AggregateGroupData(ih);
agrpd.captureDeclaredGroupData(sched, units, rptStep, st, ih);
@ -809,65 +806,62 @@ BOOST_AUTO_TEST_CASE (Declared_Group_Data_2)
const auto& iGrp = agrpd.getIGroup();
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 2); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 0); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 0); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 39] , 3); // groups sequence number in the external networt defined
start = 1*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 0); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , -1); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , -1); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 39] , 2); // groups sequence number in the external networt defined
start = 2*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 2); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 2); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 2); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 39] , 1); // groups sequence number in the external networt defined
start = 3*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , -1); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 1); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 1); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
start = 4*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 1); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 1); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 1); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
start = 5*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 1); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 2); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 2); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
start = 6*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 1); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , -1); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , -1); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
start = 7*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 1); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 2); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 2); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
start = 8*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 1); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 1); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 1); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , -1); // group available for higher level gas injection control
start = 9*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 0); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 0); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 0); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , 0); // group available for higher level gas injection control
start = 10*ih[VI::intehead::NIGRPZ];
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 5] , 0); // group available for higher level production control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 0); // group available for higher level water injection control
// BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 17] , 0); // group available for higher level water injection control
BOOST_CHECK_EQUAL(iGrp[start + nwgmax + 22] , 0); // group available for higher level gas injection control
}
}
BOOST_AUTO_TEST_SUITE_END()