Added EclipseGrid as argument to Schedule constructor
This commit is contained in:
@@ -15,7 +15,8 @@ int main(int /* argc */, char** argv) {
|
||||
Opm::ParserPtr parser(new Opm::Parser());
|
||||
std::string file = argv[1];
|
||||
Opm::DeckConstPtr deck = parser->parseFile(file);
|
||||
Opm::Schedule sched( deck );
|
||||
std::shared_ptr<const Opm::EclipseGrid> grid = std::make_shared<const Opm::EclipseGrid>( deck );
|
||||
Opm::Schedule sched( grid , deck );
|
||||
|
||||
std::cout << "Wells: " << sched.numWells() << std::endl;
|
||||
|
||||
|
||||
@@ -285,7 +285,7 @@ namespace Opm {
|
||||
}
|
||||
|
||||
void EclipseState::initSchedule(DeckConstPtr deck, LoggerPtr logger) {
|
||||
schedule = ScheduleConstPtr( new Schedule(deck, logger) );
|
||||
schedule = ScheduleConstPtr( new Schedule(getEclipseGrid() , deck, logger) );
|
||||
}
|
||||
|
||||
void EclipseState::initTransMult(LoggerPtr /*logger*/) {
|
||||
|
||||
@@ -35,7 +35,9 @@
|
||||
|
||||
namespace Opm {
|
||||
|
||||
Schedule::Schedule(DeckConstPtr deck, LoggerPtr logger) {
|
||||
Schedule::Schedule(std::shared_ptr<const EclipseGrid> grid , DeckConstPtr deck, LoggerPtr logger)
|
||||
: m_grid(grid)
|
||||
{
|
||||
initFromDeck(deck, logger);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/DynamicState.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Group.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Util/OrderedMap.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp>
|
||||
#include <opm/parser/eclipse/Deck/Deck.hpp>
|
||||
|
||||
#include <memory>
|
||||
@@ -41,7 +42,8 @@ namespace Opm
|
||||
|
||||
class Schedule {
|
||||
public:
|
||||
Schedule(DeckConstPtr deck, LoggerPtr logger=std::make_shared<Logger>());
|
||||
Schedule(std::shared_ptr<const EclipseGrid> grid , DeckConstPtr deck, LoggerPtr logger=std::make_shared<Logger>());
|
||||
|
||||
boost::posix_time::ptime getStartTime() const
|
||||
{ return m_timeMap->getStartTime(/*timeStepIdx=*/0); }
|
||||
TimeMapConstPtr getTimeMap() const;
|
||||
@@ -64,6 +66,7 @@ namespace Opm
|
||||
private:
|
||||
TimeMapPtr m_timeMap;
|
||||
OrderedMap<WellPtr> m_wells;
|
||||
std::shared_ptr<const EclipseGrid> m_grid;
|
||||
std::map<std::string , GroupPtr> m_groups;
|
||||
std::shared_ptr<DynamicState<GroupTreePtr> > m_rootGroupTree;
|
||||
|
||||
|
||||
@@ -126,14 +126,16 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckMissingReturnsDefaults) {
|
||||
DeckPtr deck(new Deck());
|
||||
DeckKeywordPtr keyword(new DeckKeyword("SCHEDULE"));
|
||||
deck->addKeyword( keyword );
|
||||
Schedule schedule(deck);
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
Schedule schedule(grid , deck);
|
||||
BOOST_CHECK_EQUAL( schedule.getStartTime() , boost::posix_time::ptime(boost::gregorian::date( 1983 , boost::gregorian::Jan , 1)));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateScheduleDeckWellsOrdered) {
|
||||
DeckPtr deck = createDeckWithWellsOrdered();
|
||||
Schedule schedule(deck);
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(100,100,100);
|
||||
Schedule schedule(grid , deck);
|
||||
std::vector<WellConstPtr> wells = schedule.getWells();
|
||||
|
||||
BOOST_CHECK_EQUAL( "CW_1" , wells[0]->name());
|
||||
@@ -145,7 +147,8 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWellsOrdered) {
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithStart) {
|
||||
DeckPtr deck = createDeck();
|
||||
Schedule schedule(deck);
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
Schedule schedule(grid , deck);
|
||||
BOOST_CHECK_EQUAL( schedule.getStartTime() , boost::posix_time::ptime(boost::gregorian::date( 1998 , boost::gregorian::Mar , 8)));
|
||||
}
|
||||
|
||||
@@ -153,15 +156,17 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithStart) {
|
||||
BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithSCHEDULENoThrow) {
|
||||
DeckPtr deck(new Deck());
|
||||
DeckKeywordPtr keyword(new DeckKeyword("SCHEDULE"));
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
deck->addKeyword( keyword );
|
||||
|
||||
BOOST_CHECK_NO_THROW(Schedule schedule(deck));
|
||||
BOOST_CHECK_NO_THROW(Schedule schedule(grid , deck));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(EmptyScheduleHasNoWells) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeck();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
BOOST_CHECK_EQUAL( 0U , schedule.numWells() );
|
||||
BOOST_CHECK_EQUAL( false , schedule.hasWell("WELL1") );
|
||||
BOOST_CHECK_THROW( schedule.getWell("WELL2") , std::invalid_argument );
|
||||
@@ -169,13 +174,15 @@ BOOST_AUTO_TEST_CASE(EmptyScheduleHasNoWells) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateSchedule_DeckWithoutGRUPTREE_HasRootGroupTreeNodeForTimeStepZero) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeck();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
BOOST_CHECK_EQUAL("FIELD", schedule.getGroupTree(0)->getNode("FIELD")->name());
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateSchedule_DeckWithGRUPTREE_HasRootGroupTreeNodeForTimeStepZero) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeck();
|
||||
DeckKeywordPtr gruptreeKeyword(new DeckKeyword("GRUPTREE"));
|
||||
|
||||
@@ -189,7 +196,7 @@ BOOST_AUTO_TEST_CASE(CreateSchedule_DeckWithGRUPTREE_HasRootGroupTreeNodeForTime
|
||||
recordChildOfField->addItem(itemParent1);
|
||||
gruptreeKeyword->addRecord(recordChildOfField);
|
||||
deck->addKeyword(gruptreeKeyword);
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
GroupTreeNodePtr fieldNode = schedule.getGroupTree(0)->getNode("FIELD");
|
||||
BOOST_CHECK_EQUAL("FIELD", fieldNode->name());
|
||||
GroupTreeNodePtr FAREN = fieldNode->getChildGroup("FAREN");
|
||||
@@ -200,8 +207,9 @@ BOOST_AUTO_TEST_CASE(CreateSchedule_DeckWithGRUPTREE_HasRootGroupTreeNodeForTime
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(EmptyScheduleHasFIELDGroup) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeck();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
BOOST_CHECK_EQUAL( 1U , schedule.numGroups() );
|
||||
BOOST_CHECK_EQUAL( true , schedule.hasGroup("FIELD") );
|
||||
BOOST_CHECK_EQUAL( false , schedule.hasGroup("GROUP") );
|
||||
@@ -209,8 +217,9 @@ BOOST_AUTO_TEST_CASE(EmptyScheduleHasFIELDGroup) {
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellsIterator_Empty_EmptyVectorReturned) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeck();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
|
||||
std::vector<WellConstPtr> wells_alltimesteps = schedule.getWells();
|
||||
BOOST_CHECK_EQUAL(0U, wells_alltimesteps.size());
|
||||
@@ -221,8 +230,9 @@ BOOST_AUTO_TEST_CASE(WellsIterator_Empty_EmptyVectorReturned) {
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellsIterator_HasWells_WellsReturned) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeckWithWells();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
|
||||
std::vector<WellConstPtr> wells_alltimesteps = schedule.getWells();
|
||||
BOOST_CHECK_EQUAL(3U, wells_alltimesteps.size());
|
||||
@@ -234,8 +244,9 @@ BOOST_AUTO_TEST_CASE(WellsIterator_HasWells_WellsReturned) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellsIteratorWithRegex_HasWells_WellsReturned) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeckWithWells();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
std::string wellNamePattern;
|
||||
std::vector<WellPtr> wells;
|
||||
|
||||
@@ -253,8 +264,9 @@ BOOST_AUTO_TEST_CASE(WellsIteratorWithRegex_HasWells_WellsReturned) {
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ReturnNumWellsTimestep) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeckWithWells();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
|
||||
BOOST_CHECK_EQUAL(schedule.numWells(0), 1);
|
||||
BOOST_CHECK_EQUAL(schedule.numWells(1), 1);
|
||||
@@ -263,8 +275,9 @@ BOOST_AUTO_TEST_CASE(ReturnNumWellsTimestep) {
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ReturnMaxNumCompletionsForWellsInTimestep) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeckWithWellsAndCompletionData();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
|
||||
BOOST_CHECK_EQUAL(schedule.getMaxNumCompletionsForWells(1), 7);
|
||||
BOOST_CHECK_EQUAL(schedule.getMaxNumCompletionsForWells(3), 9);
|
||||
@@ -328,8 +341,9 @@ static DeckPtr createDeckWithWellsAndCompletionDataWithWELOPEN() {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateScheduleDeckWellsAndCompletionDataWithWELOPEN) {
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = createDeckWithWellsAndCompletionDataWithWELOPEN();
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
WellPtr well;
|
||||
well = schedule.getWell("OP_1");
|
||||
size_t currentStep = 0;
|
||||
@@ -437,9 +451,9 @@ BOOST_AUTO_TEST_CASE(CreateScheduleDeckWithWELOPEN_TryToOpenWellWithShutCompleti
|
||||
" 'OP_1' OPEN / \n "
|
||||
"/\n";
|
||||
|
||||
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>(10,10,10);
|
||||
DeckPtr deck = parser.parseString(input);
|
||||
Schedule schedule(deck);
|
||||
Schedule schedule(grid , deck);
|
||||
WellPtr well;
|
||||
well = schedule.getWell("OP_1");
|
||||
size_t currentStep = 3;
|
||||
|
||||
@@ -39,7 +39,8 @@ BOOST_AUTO_TEST_CASE( parse_WCONPROD_OK ) {
|
||||
ParserPtr parser(new Parser());
|
||||
boost::filesystem::path wconprodFile("testdata/integration_tests/WellWithWildcards/WCONPROD1");
|
||||
DeckPtr deck = parser->parseFile(wconprodFile.string());
|
||||
ScheduleConstPtr sched(new Schedule(deck));
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>( 30,30,30);
|
||||
ScheduleConstPtr sched(new Schedule(grid , deck));
|
||||
|
||||
BOOST_CHECK_EQUAL(5U, sched->numWells());
|
||||
BOOST_CHECK(sched->hasWell("INJE1"));
|
||||
@@ -72,7 +73,8 @@ BOOST_AUTO_TEST_CASE( parse_WCONINJE_OK ) {
|
||||
ParserPtr parser(new Parser());
|
||||
boost::filesystem::path wconprodFile("testdata/integration_tests/WellWithWildcards/WCONINJE1");
|
||||
DeckPtr deck = parser->parseFile(wconprodFile.string());
|
||||
ScheduleConstPtr sched(new Schedule(deck));
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>( 30,30,30 );
|
||||
ScheduleConstPtr sched(new Schedule(grid , deck));
|
||||
|
||||
BOOST_CHECK_EQUAL(5U, sched->numWells());
|
||||
BOOST_CHECK(sched->hasWell("PROD1"));
|
||||
|
||||
@@ -509,7 +509,8 @@ BOOST_AUTO_TEST_CASE(WellTestWELOPENControlsSet) {
|
||||
ParserPtr parser(new Parser());
|
||||
boost::filesystem::path scheduleFile("testdata/integration_tests/SCHEDULE/SCHEDULE_WELOPEN");
|
||||
DeckPtr deck = parser->parseFile(scheduleFile.string());
|
||||
ScheduleConstPtr sched(new Schedule(deck));
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>( deck );
|
||||
ScheduleConstPtr sched(new Schedule(grid , deck));
|
||||
|
||||
WellConstPtr well1 = sched->getWell("W_1");
|
||||
BOOST_CHECK_EQUAL(WellCommon::StatusEnum::OPEN, sched->getWell("W_1")->getStatus(0));
|
||||
@@ -524,7 +525,9 @@ BOOST_AUTO_TEST_CASE(WellTestWGRUPCONWellPropertiesSet) {
|
||||
ParserPtr parser(new Parser());
|
||||
boost::filesystem::path scheduleFile("testdata/integration_tests/SCHEDULE/SCHEDULE_WGRUPCON");
|
||||
DeckPtr deck = parser->parseFile(scheduleFile.string());
|
||||
ScheduleConstPtr sched(new Schedule(deck));
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>( deck );
|
||||
ScheduleConstPtr sched(new Schedule(grid , deck));
|
||||
|
||||
WellConstPtr well1 = sched->getWell("W_1");
|
||||
BOOST_CHECK(well1->isAvailableForGroupControl(0));
|
||||
BOOST_CHECK_EQUAL(-1, well1->getGuideRate(0));
|
||||
@@ -561,7 +564,8 @@ COMPDAT \n\
|
||||
'W1' 2* 1 1 'OPEN' 1* 32.948 0.311 3047.839 2* 'X' 22.100 /\n\
|
||||
/\n";
|
||||
DeckPtr deck = parser->parseString(deckString);
|
||||
ScheduleConstPtr sched(new Schedule(deck));
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>( deck );
|
||||
ScheduleConstPtr sched(new Schedule(grid , deck));
|
||||
WellConstPtr well = sched->getWell("W1");
|
||||
CompletionSetConstPtr completions = well->getCompletions(0);
|
||||
BOOST_CHECK_EQUAL( 10 , completions->get(0)->getI() );
|
||||
@@ -586,7 +590,9 @@ BOOST_AUTO_TEST_CASE(WELLS_SHUT) {
|
||||
ParserPtr parser(new Parser());
|
||||
boost::filesystem::path scheduleFile("testdata/integration_tests/SCHEDULE/SCHEDULE_SHUT_WELL");
|
||||
DeckPtr deck = parser->parseFile(scheduleFile.string());
|
||||
ScheduleConstPtr sched(new Schedule(deck));
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>( deck );
|
||||
ScheduleConstPtr sched(new Schedule(grid , deck));
|
||||
|
||||
|
||||
WellConstPtr well1 = sched->getWell("W1");
|
||||
WellConstPtr well2 = sched->getWell("W2");
|
||||
@@ -607,7 +613,9 @@ BOOST_AUTO_TEST_CASE(WellTestWPOLYMER) {
|
||||
ParserPtr parser(new Parser());
|
||||
boost::filesystem::path scheduleFile("testdata/integration_tests/SCHEDULE/SCHEDULE_POLYMER");
|
||||
DeckPtr deck = parser->parseFile(scheduleFile.string());
|
||||
ScheduleConstPtr sched(new Schedule(deck));
|
||||
std::shared_ptr<const EclipseGrid> grid = std::make_shared<const EclipseGrid>( 30,30,30);
|
||||
ScheduleConstPtr sched(new Schedule(grid , deck));
|
||||
|
||||
|
||||
BOOST_CHECK_EQUAL(4U, sched->numWells());
|
||||
BOOST_CHECK(sched->hasWell("INJE01"));
|
||||
|
||||
Reference in New Issue
Block a user