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:
parent
adb84c15cc
commit
188d7802a3
@ -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();
|
||||
|
@ -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()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user