Removed constructor from ScheduleGrid, added perm prop to tests

Changed (BASE_SIM.DATA, BASE_SIM_THPRES.DATA, RESTART_SIM.DATA),  testblackoilstate3.DATA and testrft.DATA since they affect the tests in test_Restart.cpp, test_restartwellinfo.cpp and test_RFT.cpp respectively.
This commit is contained in:
Daniel
2021-11-03 15:47:30 +01:00
parent 931cebb12f
commit 45dd77938b
17 changed files with 397 additions and 22 deletions

View File

@@ -1212,6 +1212,15 @@ TSTEP
BOOST_AUTO_TEST_CASE(Action_WELPI) {
const auto deck_string = std::string{ R"(
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE

View File

@@ -59,7 +59,7 @@ Opm::WellConnections loadCOMPDAT(const std::string& compdat_keyword) {
Opm::WellConnections connections(Opm::Connection::Order::TRACK, 10,10);
Opm::CompletedCells cells(grid);
for (const auto& rec : keyword)
connections.loadCOMPDAT(rec, Opm::ScheduleGrid(grid, cells), field_props, "WELL", {});
connections.loadCOMPDAT(rec, Opm::ScheduleGrid(grid, field_props, cells), field_props, "WELL", {});
return connections;
}
@@ -177,7 +177,18 @@ BOOST_AUTO_TEST_CASE(ActiveCompletions) {
BOOST_AUTO_TEST_CASE(loadCOMPDATTEST) {
Opm::UnitSystem units(Opm::UnitSystem::UnitType::UNIT_TYPE_METRIC); // Unit system used in deck FIRST_SIM.DATA.
{
const std::string deck = R"(COMPDAT
const std::string deck = R"(GRID
PERMX
1000*0.10 /
COPY
'PERMX' 'PERMZ' /
'PERMX' 'PERMY' /
/
SCHEDULE
COMPDAT
-- CF Diam Kh Skin Df
'WELL' 1 1 1 1 'OPEN' 1* 1.168 0.311 107.872 1* 1* 'Z' 21.925 /
/)";

View File

@@ -98,6 +98,15 @@ BOOST_AUTO_TEST_CASE(createDeckWithGEFAC) {
std::string input =
"START -- 0 \n"
"19 JUN 2007 / \n"
"GRID\n"
"PORO\n"
"1000*0.1 /\n"
"PERMX \n"
"1000*1 /\n"
"PERMY \n"
"1000*0.1 /\n"
"PERMZ \n"
"1000*0.01 /\n"
"SCHEDULE\n"
"WELSPECS\n"
@@ -135,6 +144,15 @@ BOOST_AUTO_TEST_CASE(createDeckWithWGRUPCONandWCONPROD) {
std::string input =
"START -- 0 \n"
"19 JUN 2007 / \n"
"GRID\n"
"PORO\n"
"1000*0.1 /\n"
"PERMX \n"
"1000*1 /\n"
"PERMY \n"
"1000*0.1 /\n"
"PERMZ \n"
"1000*0.01 /\n"
"SCHEDULE\n"
"WELSPECS\n"

View File

@@ -45,6 +45,14 @@ RUNSPEC
MESSAGES
5* 10 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
MESSAGES
5* 77 /
SCHEDULE

View File

@@ -67,6 +67,19 @@ BOOST_AUTO_TEST_CASE(AICDWellTest) {
BOOST_CHECK_EQUAL( 7U , connection_set.size() );
const std::string compsegs_string = R"(
GRID
PORO
8000*0.1 /
PERMX
8000*1 /
PERMY
8000*0.1 /
PERMZ
8000*0.01 /
SCHEDULE
WELSEGS
'PROD01' 2512.5 2512.5 1.0e-5 'ABS' 'HF-' 'HO' /
2 2 1 1 2537.5 2537.5 0.3 0.00010 /
@@ -109,7 +122,8 @@ WSEGAICD
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_INVALID, Opm::InputError::THROW_EXCEPTION);
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_NOT_SUPPORTED, Opm::InputError::THROW_EXCEPTION);
Opm::CompletedCells cells(grid);
const auto& [new_connection_set, new_segment_set] = Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, cells), parseContext, errorGuard);
Opm::FieldPropsManager fp(deck, Opm::Phases{true, true, true}, grid, Opm::TableManager());
const auto& [new_connection_set, new_segment_set] = Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, fp, cells), parseContext, errorGuard);
// checking the ICD segment
const Opm::DeckKeyword wsegaicd = deck.getKeyword("WSEGAICD");
@@ -213,6 +227,19 @@ BOOST_AUTO_TEST_CASE(MultisegmentWellTest) {
BOOST_CHECK_EQUAL( 7U , connection_set.size() );
const std::string compsegs_string = R"(
GRID
PORO
8000*0.1 /
PERMX
8000*1 /
PERMY
8000*0.1 /
PERMZ
8000*0.01 /
SCHEDULE
WELSEGS
'PROD01' 2512.5 2512.5 1.0e-5 'ABS' 'HF-' 'HO' /
2 2 1 1 2537.5 2537.5 0.3 0.00010 /
@@ -252,9 +279,10 @@ WSEGSICD
Opm::ErrorGuard errorGuard;
Opm::ParseContext parseContext;
Opm::CompletedCells cells(grid);
Opm::FieldPropsManager fp(deck, Opm::Phases{true, true, true}, grid, Opm::TableManager());
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_INVALID, Opm::InputError::THROW_EXCEPTION);
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_NOT_SUPPORTED, Opm::InputError::THROW_EXCEPTION);
const auto& [new_connection_set, new_segment_set] = Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, cells), parseContext, errorGuard);
const auto& [new_connection_set, new_segment_set] = Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, fp, cells), parseContext, errorGuard);
// checking the ICD segment
const Opm::DeckKeyword wsegsicd = deck.getKeyword("WSEGSICD");
@@ -366,6 +394,16 @@ BOOST_AUTO_TEST_CASE(WrongDistanceCOMPSEGS) {
BOOST_CHECK_EQUAL( 7U , connection_set.size() );
const std::string compsegs_string =
"GRID \n"
"PORO \n"
"8000*0.1 /\n"
"PERMX \n"
"8000*1 /\n"
"PERMY \n"
"8000*0.1 /\n"
"PERMZ \n"
"8000*0.01 /\n"
"SCHEDULE \n"
"WELSEGS \n"
"'PROD01' 2512.5 2512.5 1.0e-5 'ABS' 'H--' 'HO' /\n"
"2 2 1 1 2537.5 2537.5 0.3 0.00010 /\n"
@@ -400,11 +438,12 @@ BOOST_AUTO_TEST_CASE(WrongDistanceCOMPSEGS) {
Opm::ErrorGuard errorGuard;
Opm::ParseContext parseContext;
Opm::CompletedCells cells(grid);
Opm::FieldPropsManager fp(deck, Opm::Phases{true, true, true}, grid, Opm::TableManager());
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_INVALID, Opm::InputError::THROW_EXCEPTION);
BOOST_CHECK_THROW(Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, cells), parseContext, errorGuard), Opm::OpmInputError);
BOOST_CHECK_THROW(Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, fp, cells), parseContext, errorGuard), Opm::OpmInputError);
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_INVALID, Opm::InputError::IGNORE);
BOOST_CHECK_NO_THROW(Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, cells), parseContext, errorGuard));
BOOST_CHECK_NO_THROW(Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, fp, cells), parseContext, errorGuard));
}
BOOST_AUTO_TEST_CASE(NegativeDepthCOMPSEGS) {
@@ -424,6 +463,16 @@ BOOST_AUTO_TEST_CASE(NegativeDepthCOMPSEGS) {
BOOST_CHECK_EQUAL( 7U , connection_set.size() );
const std::string compsegs_string =
"GRID \n"
"PORO \n"
"8000*0.1 /\n"
"PERMX \n"
"8000*1 /\n"
"PERMY \n"
"8000*0.1 /\n"
"PERMZ \n"
"8000*0.01 /\n"
"SCHEDULE \n"
"WELSEGS \n"
"'PROD01' 2512.5 2512.5 1.0e-5 'ABS' 'H--' 'HO' /\n"
"2 2 1 1 2537.5 2537.5 0.3 0.00010 /\n"
@@ -458,11 +507,12 @@ BOOST_AUTO_TEST_CASE(NegativeDepthCOMPSEGS) {
Opm::ErrorGuard errorGuard;
Opm::ParseContext parseContext;
Opm::CompletedCells cells(grid);
Opm::FieldPropsManager fp(deck, Opm::Phases{true, true, true}, grid, Opm::TableManager());
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_NOT_SUPPORTED, Opm::InputError::THROW_EXCEPTION);
BOOST_CHECK_THROW(Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, cells), parseContext, errorGuard), Opm::OpmInputError);
BOOST_CHECK_THROW(Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, fp, cells), parseContext, errorGuard), Opm::OpmInputError);
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_NOT_SUPPORTED, Opm::InputError::IGNORE);
BOOST_CHECK_NO_THROW( Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, cells), parseContext, errorGuard) );
BOOST_CHECK_NO_THROW( Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, fp, cells), parseContext, errorGuard) );
}
BOOST_AUTO_TEST_CASE(testwsegvalv) {
@@ -482,6 +532,16 @@ BOOST_AUTO_TEST_CASE(testwsegvalv) {
BOOST_CHECK_EQUAL( 7U , connection_set.size() );
const std::string compsegs_string =
"GRID \n"
"PORO \n"
"8000*0.1 /\n"
"PERMX \n"
"8000*1 /\n"
"PERMY \n"
"8000*0.1 /\n"
"PERMZ \n"
"8000*0.01 /\n"
"SCHEDULE \n"
"WELSEGS \n"
"'PROD01' 2512.5 2512.5 1.0e-5 'ABS' 'HF-' 'HO' /\n"
"2 2 1 1 2537.5 2537.5 0.3 0.00010 /\n"
@@ -522,9 +582,10 @@ BOOST_AUTO_TEST_CASE(testwsegvalv) {
Opm::ErrorGuard errorGuard;
Opm::ParseContext parseContext;
Opm::CompletedCells cells(grid);
Opm::FieldPropsManager fp(deck, Opm::Phases{true, true, true}, grid, Opm::TableManager());
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_INVALID, Opm::InputError::THROW_EXCEPTION);
parseContext.update(Opm::ParseContext::SCHEDULE_COMPSEGS_NOT_SUPPORTED, Opm::InputError::THROW_EXCEPTION);
BOOST_CHECK_NO_THROW( Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, cells), parseContext, errorGuard));
BOOST_CHECK_NO_THROW( Opm::Compsegs::processCOMPSEGS(compsegs, connection_set, segment_set, Opm::ScheduleGrid(grid, fp, cells), parseContext, errorGuard));
// checking the WSEGVALV segment
const Opm::DeckKeyword wsegvalv = deck.getKeyword("WSEGVALV");

View File

@@ -59,6 +59,15 @@ using namespace Opm;
std::string deck0 = R"(
START -- 0
10 MAI 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
@@ -98,6 +107,15 @@ DATES -- 7
std::string WTEST_deck = R"(
START -- 0
10 MAI 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
WELSPECS
'DEFAULT' 'OP' 30 37 3.33 'OIL' 7*/

View File

@@ -135,6 +135,15 @@ static std::string createDeckWTEST() {
std::string input = R"(
START -- 0
10 MAI 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
WELSPECS
'DEFAULT' 'OP' 30 37 3.33 'OIL' 7*/
@@ -228,6 +237,15 @@ static std::string createDeckForTestingCrossFlow() {
std::string input = R"(
START -- 0
10 MAI 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
WELSPECS
'DEFAULT' 'OP' 30 37 3.33 'OIL' 7*/
@@ -329,6 +347,15 @@ static std::string createDeckWithWellsAndCompletionData() {
std::string input = R"(
START -- 0
1 NOV 1979 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
1 DES 1979/
@@ -645,6 +672,15 @@ static std::string createDeckWithWellsAndConnectionDataWithWELOPEN() {
std::string input = R"(
START -- 0
1 NOV 1979 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
1 DES 1979/
@@ -744,6 +780,15 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWELOPEN_TryToOpenWellWithShutCompleti
std::string input = R"(
START -- 0
1 NOV 1979 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
1 DES 1979/
@@ -787,6 +832,15 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWELOPEN_CombineShutCompletionsAndAddN
std::string input = R"(
START -- 0
1 NOV 1979 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
1 DES 1979/
@@ -853,6 +907,15 @@ BOOST_AUTO_TEST_CASE(createDeckWithWeltArg) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
10 OKT 2008 /
@@ -959,6 +1022,15 @@ BOOST_AUTO_TEST_CASE(createDeckWithWeltArg_UDA) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
10 OKT 2008 /
@@ -1087,6 +1159,15 @@ BOOST_AUTO_TEST_CASE(createDeckWithWPIMULT) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
10 OKT 2008 /
@@ -1424,6 +1505,15 @@ BOOST_AUTO_TEST_CASE(changeBhpLimitInHistoryModeWithWeltarg) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
10 OKT 2008 /
@@ -1505,6 +1595,15 @@ BOOST_AUTO_TEST_CASE(changeModeWithWHISTCTL) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
10 OKT 2008 /
@@ -1638,6 +1737,15 @@ BOOST_AUTO_TEST_CASE(fromWCONHISTtoWCONPROD) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
10 OKT 2008 /
@@ -1694,6 +1802,15 @@ BOOST_AUTO_TEST_CASE(WHISTCTL_NEW_WELL) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
WHISTCTL
GRAT/
@@ -2802,6 +2919,15 @@ BOOST_AUTO_TEST_CASE(handleWEFAC) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
10 OKT 2008 /
@@ -3452,6 +3578,15 @@ BOOST_AUTO_TEST_CASE(TESTGuideRateConfig) {
std::string input = R"(
START -- 0
10 MAI 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
WELSPECS
'W1' 'G1' 1 2 3.33 'OIL' 7*/
@@ -4400,6 +4535,12 @@ DEPTHZ
PORO
300*0.3 /
PERMX
300*1 /
PERMY
300*0.1 /
PERMZ
300*0.01 /
SCHEDULE
WELSPECS -- 0
@@ -4599,6 +4740,12 @@ DEPTHZ
PORO
300*0.3 /
PERMX
300*1 /
PERMY
300*0.1 /
PERMZ
300*0.01 /
SCHEDULE

View File

@@ -69,6 +69,15 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestTRACK) {
std::string input =
"START -- 0 \n"
"19 JUN 2007 / \n"
"GRID\n"
"PORO\n"
"1000*0.1 /\n"
"PERMX \n"
"1000*1 /\n"
"PERMY \n"
"1000*0.1 /\n"
"PERMZ \n"
"1000*0.01 /\n"
"SCHEDULE\n"
"DATES -- 1\n"
" 10 OKT 2008 / \n"
@@ -118,6 +127,15 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestDEPTH) {
std::string input = R"(
START -- 0
19 JUN 2007 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
DATES -- 1
10 OKT 2008 /
@@ -169,6 +187,15 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestDefaultTRACK) {
std::string input =
"START -- 0 \n"
"19 JUN 2007 / \n"
"GRID\n"
"PORO\n"
"1000*0.1 /\n"
"PERMX \n"
"1000*1 /\n"
"PERMY \n"
"1000*0.1 /\n"
"PERMZ \n"
"1000*0.01 /\n"
"SCHEDULE\n"
"DATES -- 1\n"
" 10 OKT 2008 / \n"
@@ -209,6 +236,15 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestINPUT) {
std::string input =
"START -- 0 \n"
"19 JUN 2007 / \n"
"GRID\n"
"PORO\n"
"1000*0.1 /\n"
"PERMX \n"
"1000*1 /\n"
"PERMY \n"
"1000*0.1 /\n"
"PERMZ \n"
"1000*0.01 /\n"
"SCHEDULE\n"
"DATES -- 1\n"
" 10 OKT 2008 / \n"
@@ -881,6 +917,15 @@ BOOST_AUTO_TEST_CASE(WELOPEN) {
std::string input =
"START -- 0 \n"
"19 JUN 2007 / \n"
"GRID\n"
"PORO\n"
"1000*0.1 /\n"
"PERMX \n"
"1000*1 /\n"
"PERMY \n"
"1000*0.1 /\n"
"PERMZ \n"
"1000*0.01 /\n"
"SCHEDULE\n"
"DATES -- 1\n"
" 10 OKT 2008 / \n"
@@ -1025,6 +1070,15 @@ REGIONS
PVTNUM
1000*77 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
WELSPECS
@@ -1153,6 +1207,16 @@ REGIONS
PVTNUM
1000*77 /
GRID
PORO
1000*0.1 /
PERMX
1000*1 /
PERMY
1000*0.1 /
PERMZ
1000*0.01 /
SCHEDULE
WELSPECS