Only active cells (#1298)

Use FieldProps implementation for 3D properties
This commit is contained in:
Joakim Hove
2020-01-13 15:46:06 +01:00
committed by GitHub
parent 13b3d1e17b
commit ecb5fce19b
45 changed files with 340 additions and 771 deletions

View File

@@ -51,9 +51,9 @@ inline EclipseState makeState(const std::string& fileName) {
BOOST_AUTO_TEST_CASE( PERMX ) {
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
const auto& permx = state.get3DProperties().getDoubleGridProperty( "PERMX" ).getData();
const auto& permy = state.get3DProperties().getDoubleGridProperty( "PERMY" ).getData();
const auto& permz = state.get3DProperties().getDoubleGridProperty( "PERMZ" ).getData();
const auto& permx = state.fieldProps().get_global<double>( "PERMX" );
const auto& permy = state.fieldProps().get_global<double>( "PERMY" );
const auto& permz = state.fieldProps().get_global<double>( "PERMZ" );
size_t i, j, k;
const EclipseGrid& grid = state.getInputGrid();
@@ -74,7 +74,7 @@ BOOST_AUTO_TEST_CASE( PERMX ) {
BOOST_AUTO_TEST_CASE( PARSE_BOX_OK ) {
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
const auto& satnum = state.get3DProperties().getIntGridProperty( "SATNUM" ).getData();
const auto& satnum = state.fieldProps().get_global<int>( "SATNUM" );
{
size_t i, j, k;
const EclipseGrid& grid = state.getInputGrid();
@@ -96,8 +96,8 @@ BOOST_AUTO_TEST_CASE( PARSE_BOX_OK ) {
BOOST_AUTO_TEST_CASE( PARSE_MULTIPLY_COPY ) {
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
const auto& satnum = state.get3DProperties().getIntGridProperty( "SATNUM" ).getData();
const auto& fipnum = state.get3DProperties().getIntGridProperty( "FIPNUM" ).getData();
const auto& satnum = state.fieldProps().get_global<int>( "SATNUM" );
const auto& fipnum = state.fieldProps().get_global<int>( "FIPNUM" );
size_t i, j, k;
const EclipseGrid& grid = state.getInputGrid();
@@ -121,9 +121,9 @@ BOOST_AUTO_TEST_CASE( PARSE_MULTIPLY_COPY ) {
BOOST_AUTO_TEST_CASE( EQUALS ) {
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
const auto& pvtnum = state.get3DProperties().getIntGridProperty( "PVTNUM" ).getData();
const auto& eqlnum = state.get3DProperties().getIntGridProperty( "EQLNUM" ).getData();
const auto& poro = state.get3DProperties().getDoubleGridProperty( "PORO" ).getData();
const auto& pvtnum = state.fieldProps().get_global<int>( "PVTNUM" );
const auto& eqlnum = state.fieldProps().get_global<int>( "EQLNUM" );
const auto& poro = state.fieldProps().get_global<double>( "PORO" );
size_t i, j, k;
const EclipseGrid& grid = state.getInputGrid();
@@ -144,11 +144,7 @@ BOOST_AUTO_TEST_CASE( EQUALS ) {
BOOST_AUTO_TEST_CASE( OPERATE ) {
EclipseState state = makeState( prefix() + "BOX/BOXTEST1" );
const EclipseGrid& grid = state.getInputGrid();
#ifdef ENABLE_3DPROPS_TESTING
const auto& ntg = state.fieldProps().get_global<double>("NTG");
#else
const auto& ntg = state.get3DProperties().getDoubleGridProperty("NTG").getData();
#endif
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,0,0)], 8.50 ); // MULTA
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,5,0)], 5.00 ); // POLY
BOOST_CHECK_EQUAL( ntg[grid.getGlobalIndex(0,0,1)], 4.0 ); // COPY

View File

@@ -591,9 +591,7 @@ BOOST_AUTO_TEST_CASE( MULTISEGMENT_ABS ) {
const EclipseState state(deck);
const auto& grid = state.getInputGrid();
const TableManager table ( deck );
const Eclipse3DProperties eclipseProperties ( deck , table, grid);
Runspec runspec (deck);
const Schedule sched(deck, state);
@@ -1368,10 +1366,9 @@ BOOST_AUTO_TEST_CASE( WCONPROD ) {
auto deck = parser.parseFile(wconprodFile);
EclipseGrid grid(30,30,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp( deck , grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid, fp, eclipseProperties, runspec );
Schedule sched(deck, grid, fp, runspec );
BOOST_CHECK_EQUAL(5U, sched.numWells());
BOOST_CHECK(sched.hasWell("INJE1"));
@@ -1415,10 +1412,9 @@ BOOST_AUTO_TEST_CASE( WCONINJE ) {
auto deck = parser.parseFile(wconprodFile);
EclipseGrid grid(30,30,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties( deck , table, grid );
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched( deck, grid, fp, eclipseProperties, runspec);
Schedule sched( deck, grid, fp, runspec);
SummaryState st(std::chrono::system_clock::now());
BOOST_CHECK_EQUAL(5U, sched.numWells());

View File

@@ -53,10 +53,9 @@ BOOST_AUTO_TEST_CASE(CreateSchedule) {
auto deck2 = parser.parseString( ss.str());
for (const auto& deck : {deck1 , deck2}) {
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
const auto& timeMap = sched.getTimeMap();
BOOST_CHECK_EQUAL(TimeMap::mkdate(2007 , 5 , 10), sched.getStartTime());
BOOST_CHECK_EQUAL(9U, timeMap.size());
@@ -71,10 +70,9 @@ BOOST_AUTO_TEST_CASE(CreateSchedule_Comments_After_Keywords) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,10);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
const auto& timeMap = sched.getTimeMap();
BOOST_CHECK_EQUAL(TimeMap::mkdate(2007, 5 , 10) , sched.getStartTime());
BOOST_CHECK_EQUAL(9U, timeMap.size());
@@ -87,10 +85,9 @@ BOOST_AUTO_TEST_CASE(WCONPROD_MissingCmode) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,3);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
BOOST_CHECK_NO_THROW( Schedule(deck, grid , fp, eclipseProperties, runspec) );
BOOST_CHECK_NO_THROW( Schedule(deck, grid , fp, runspec) );
}
@@ -100,10 +97,9 @@ BOOST_AUTO_TEST_CASE(WCONPROD_Missing_DATA) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,3);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
BOOST_CHECK_THROW( Schedule(deck, grid , fp, eclipseProperties, runspec) , std::invalid_argument );
BOOST_CHECK_THROW( Schedule(deck, grid , fp, runspec) , std::invalid_argument );
}
@@ -113,10 +109,9 @@ BOOST_AUTO_TEST_CASE(WellTestRefDepth) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(40,60,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck , grid , fp, eclipseProperties, runspec);
Schedule sched(deck , grid , fp, runspec);
const auto& well1 = sched.getWellatEnd("W_1");
const auto& well2 = sched.getWellatEnd("W_2");
@@ -136,10 +131,9 @@ BOOST_AUTO_TEST_CASE(WellTesting) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(40,60,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
BOOST_CHECK_EQUAL(4U, sched.numWells());
BOOST_CHECK(sched.hasWell("W_1"));
@@ -282,10 +276,9 @@ BOOST_AUTO_TEST_CASE(WellTestCOMPDAT_DEFAULTED_ITEMS) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,10);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
}
@@ -295,10 +288,9 @@ BOOST_AUTO_TEST_CASE(WellTestCOMPDAT) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(40,60,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
BOOST_CHECK_EQUAL(4U, sched.numWells());
BOOST_CHECK(sched.hasWell("W_1"));
@@ -331,10 +323,9 @@ BOOST_AUTO_TEST_CASE(GroupTreeTest_GRUPTREE_correct) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,3);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule schedule(deck, grid , fp, eclipseProperties, runspec);
Schedule schedule(deck, grid , fp, runspec);
BOOST_CHECK( schedule.hasGroup( "FIELD" ));
BOOST_CHECK( schedule.hasGroup( "PROD" ));
@@ -354,10 +345,9 @@ BOOST_AUTO_TEST_CASE(GroupTreeTest_GRUPTREE_WITH_REPARENT_correct_tree) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,3);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
const auto& field_group = sched.getGroup("FIELD", 1);
const auto& new_group = sched.getGroup("GROUP_NEW", 1);
@@ -376,10 +366,9 @@ BOOST_AUTO_TEST_CASE( WellTestGroups ) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,3);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
SummaryState st(std::chrono::system_clock::now());
BOOST_CHECK_EQUAL( 3U , sched.numGroups() );
@@ -428,10 +417,9 @@ BOOST_AUTO_TEST_CASE( WellTestGroupAndWellRelation ) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,3);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
{
auto& group1 = sched.getGroup("GROUP1", 0);
@@ -491,10 +479,9 @@ BOOST_AUTO_TEST_CASE(WellTestWGRUPCONWellPropertiesSet) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,10);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
const auto& well1 = sched.getWell("W_1", 0);
BOOST_CHECK(well1.isAvailableForGroupControl( ));
@@ -540,10 +527,9 @@ COMPDAT \n\
auto deck = parser.parseString(deckString);
EclipseGrid grid(30,30,10);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
const auto& connections = sched.getWell("W1", 0).getConnections();
BOOST_CHECK_EQUAL( 10 , connections.get(0).getI() );
BOOST_CHECK_EQUAL( 20 , connections.get(0).getJ() );
@@ -560,10 +546,9 @@ BOOST_AUTO_TEST_CASE(OpmCode) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(10,10,5);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
BOOST_CHECK_NO_THROW( Schedule(deck , grid , fp, eclipseProperties, runspec) );
BOOST_CHECK_NO_THROW( Schedule(deck , grid , fp, runspec) );
}
@@ -574,10 +559,9 @@ BOOST_AUTO_TEST_CASE(WELLS_SHUT) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(20,40,1);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
{
@@ -605,10 +589,9 @@ BOOST_AUTO_TEST_CASE(WellTestWPOLYMER) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(30,30,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
BOOST_CHECK_EQUAL(4U, sched.numWells());
@@ -673,10 +656,9 @@ BOOST_AUTO_TEST_CASE(WellTestWFOAM) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(30,30,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
BOOST_CHECK_EQUAL(4U, sched.numWells());
@@ -741,10 +723,9 @@ BOOST_AUTO_TEST_CASE(WellTestWECON) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(30,30,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck, grid , fp, eclipseProperties, runspec);
Schedule sched(deck, grid , fp, runspec);
BOOST_CHECK_EQUAL(3U, sched.numWells());
BOOST_CHECK(sched.hasWell("INJE01"));
@@ -852,10 +833,9 @@ BOOST_AUTO_TEST_CASE(TestEvents) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(40,40,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec (deck);
Schedule sched(deck , grid , fp, eclipseProperties, runspec);
Schedule sched(deck , grid , fp, runspec);
const Events& events = sched.getEvents();
BOOST_CHECK( events.hasEvent(ScheduleEvents::NEW_WELL , 0 ) );
@@ -887,10 +867,9 @@ BOOST_AUTO_TEST_CASE(TestWellEvents) {
auto deck = parser.parseFile(scheduleFile);
EclipseGrid grid(40,40,30);
TableManager table ( deck );
Eclipse3DProperties eclipseProperties ( deck , table, grid);
FieldPropsManager fp(deck, grid, table);
Runspec runspec(deck);
Schedule sched(deck , grid , fp, eclipseProperties, runspec);
Schedule sched(deck , grid , fp, runspec);
BOOST_CHECK( sched.hasWellGroupEvent( "W_1", ScheduleEvents::NEW_WELL , 0 ));
BOOST_CHECK( sched.hasWellGroupEvent( "W_2", ScheduleEvents::NEW_WELL , 2 ));

View File

@@ -30,7 +30,7 @@ inline void loadDeck( const char * deck_file) {
auto deck = parser.parseFile(deck_file);
Opm::EclipseState state( deck);
Opm::Schedule schedule( deck, state.getInputGrid(), state.fieldProps(), state.get3DProperties(), state.runspec());
Opm::Schedule schedule( deck, state);
Opm::SummaryConfig summary( deck, schedule, state.getTableManager( ));
{
std::stringstream ss;