Remove DynamicState's reliance on TimeMap.

DynamicState assumes the time map is fully populated and stores only
its size (which is the only property it cares about).
This commit is contained in:
Jørgen Kvalsvik
2016-10-07 11:43:02 +02:00
parent 9ad3d78923
commit 4f0e6703f0
12 changed files with 108 additions and 103 deletions

View File

@@ -475,8 +475,8 @@ void RestartConfig::handleScheduleSection(const SCHEDULESection& schedule) {
std::shared_ptr< const TimeMap > timemap) :
m_timemap( timemap ),
m_first_restart_step( -1 ),
restart_schedule( timemap, { 0, 0, 1 } ),
restart_keywords( timemap, {} )
restart_schedule( *timemap, { 0, 0, 1 } ),
restart_keywords( *timemap, {} )
{
handleSolutionSection( solution );
handleScheduleSection( schedule );

View File

@@ -58,13 +58,18 @@ namespace Opm {
public:
DynamicState(const std::shared_ptr< const TimeMap > timeMap, T initialValue) {
m_timeMap = timeMap;
init( initialValue );
}
DynamicState(const TimeMap& timeMap, T initialValue) :
m_currentValue( initialValue ),
m_initialValue( std::move( initialValue ) ),
max_size( timeMap.size() ),
m_initialRange( 0 )
{}
void globalReset( T newValue ) {
init( newValue );
this->m_data.clear();
this->m_currentValue = newValue;
this->m_initialValue = std::move( newValue );
this->m_initialRange = 0;
}
@@ -76,7 +81,7 @@ namespace Opm {
}
const T& at(size_t index) const {
if (index >= m_timeMap->size())
if (index >= this->max_size)
throw std::range_error("Index value is out range.");
if (index >= m_data.size())
@@ -121,7 +126,7 @@ namespace Opm {
*/
bool update(size_t index , T value) {
bool change = (value != m_currentValue);
if (index >= (m_timeMap->size()))
if (index >= (this->max_size))
throw std::range_error("Index value is out range.");
if (m_data.size() > 0) {
@@ -165,19 +170,10 @@ namespace Opm {
private:
void init(T initialValue) {
m_data.clear();
m_currentValue = initialValue;
m_initialValue = initialValue;
m_initialRange = 0;
}
std::vector<T> m_data;
std::shared_ptr< const TimeMap > m_timeMap;
T m_currentValue;
T m_initialValue;
size_t max_size;
size_t m_initialRange;
};
}

View File

@@ -30,7 +30,7 @@
namespace Opm {
namespace GroupProduction {
struct ProductionData {
ProductionData(TimeMapConstPtr timeMap);
ProductionData( const TimeMap& timeMap);
std::shared_ptr<DynamicState<GroupProduction::ControlEnum> > controlMode;
std::shared_ptr<DynamicState<GroupProductionExceedLimit::ActionEnum> > exceedAction;
@@ -44,7 +44,7 @@ namespace Opm {
};
ProductionData::ProductionData(TimeMapConstPtr timeMap) :
ProductionData::ProductionData(const TimeMap& timeMap) :
controlMode( new DynamicState<GroupProduction::ControlEnum>(timeMap , GroupProduction::NONE)),
exceedAction( new DynamicState<GroupProductionExceedLimit::ActionEnum>(timeMap , GroupProductionExceedLimit::NONE)),
oilTarget( new DynamicState<double>(timeMap , INVALID_GROUP_RATE)),
@@ -64,7 +64,7 @@ namespace Opm {
namespace GroupInjection {
struct InjectionData {
InjectionData(TimeMapConstPtr timeMap);
InjectionData( const TimeMap& timeMap);
std::shared_ptr<DynamicState<Phase::PhaseEnum> > phase;
std::shared_ptr<DynamicState<GroupInjection::ControlEnum> > controlMode;
@@ -75,7 +75,7 @@ namespace Opm {
std::shared_ptr<DynamicState<double> > targetVoidReplacementFraction;
};
InjectionData::InjectionData(TimeMapConstPtr timeMap) :
InjectionData::InjectionData(const TimeMap& timeMap) :
phase( new DynamicState<Phase::PhaseEnum>( timeMap , Phase::WATER )),
controlMode( new DynamicState<GroupInjection::ControlEnum>( timeMap , NONE )),
rate( new DynamicState<double>( timeMap , 0 )),
@@ -93,7 +93,7 @@ namespace Opm {
/*****************************************************************/
Group::Group(const std::string& name_, TimeMapConstPtr timeMap , size_t creationTimeStep) :
Group::Group(const std::string& name_, const TimeMap& timeMap , size_t creationTimeStep) :
m_injection( new GroupInjection::InjectionData(timeMap) ),
m_production( new GroupProduction::ProductionData( timeMap )),
m_wells( new DynamicState< std::shared_ptr< const WellSet > >( timeMap , std::make_shared< const WellSet >() ) ),

View File

@@ -45,7 +45,7 @@ namespace Opm {
class Group {
public:
Group(const std::string& name, std::shared_ptr< const TimeMap > timeMap , size_t creationTimeStep);
Group(const std::string& name, const TimeMap& timeMap , size_t creationTimeStep);
bool hasBeenDefined(size_t timeStep) const;
const std::string& name() const;
bool isProductionGroup(size_t timeStep) const;

View File

@@ -24,7 +24,7 @@
namespace Opm {
MessageLimits::MessageLimits(const std::shared_ptr< const TimeMap > timemap):
MessageLimits::MessageLimits( const TimeMap& timemap ) :
m_message_print_limit(timemap, ParserKeywords::MESSAGES::MESSAGE_PRINT_LIMIT::defaultValue),
m_comment_print_limit(timemap, ParserKeywords::MESSAGES::COMMENT_PRINT_LIMIT::defaultValue),
m_warning_print_limit(timemap, ParserKeywords::MESSAGES::WARNING_PRINT_LIMIT::defaultValue),

View File

@@ -35,7 +35,7 @@ namespace Opm {
set in the record are modified.
*/
MessageLimits(const std::shared_ptr< const TimeMap > timemap);
MessageLimits( const TimeMap& );
///Get all the value from MESSAGES keyword.
int getMessagePrintLimit(size_t timestep) const;

View File

@@ -77,12 +77,12 @@ namespace Opm {
const EclipseGrid& grid,
const Deck& deck ) :
m_timeMap( std::make_shared< TimeMap>( deck )),
m_rootGroupTree( m_timeMap, GroupTree{} ),
m_oilvaporizationproperties( m_timeMap, OilVaporizationProperties{} ),
m_rootGroupTree( *m_timeMap, GroupTree{} ),
m_oilvaporizationproperties( *m_timeMap, OilVaporizationProperties{} ),
m_events( *m_timeMap ),
m_modifierDeck( *m_timeMap, nullptr ),
m_tuning( m_timeMap ),
m_messageLimits( m_timeMap )
m_tuning( *m_timeMap ),
m_messageLimits( *m_timeMap )
{
m_controlModeWHISTCTL = WellProducer::CMODE_UNDEFINED;
@@ -1479,7 +1479,7 @@ namespace Opm {
if (!m_timeMap) {
throw std::invalid_argument("TimeMap is null, can't add group named: " + groupName);
}
m_groups.emplace( groupName, Group { groupName, m_timeMap, timeStep } );
m_groups.emplace( groupName, Group { groupName, *m_timeMap, timeStep } );
m_events.addEvent( ScheduleEvents::NEW_GROUP , timeStep );
}

View File

@@ -25,7 +25,7 @@
namespace Opm {
Tuning::Tuning(TimeMapConstPtr timemap):
Tuning::Tuning( const TimeMap& timemap ) :
/* Hardcoding default values to support getting defaults before any TUNING keyword has occured */
m_TSINIT( new DynamicState<double>(timemap, 1.0 * Metric::Time)),
m_TSMAXZ( new DynamicState<double>(timemap, 365.0 * Metric::Time)),

View File

@@ -44,7 +44,7 @@ namespace Opm {
*/
public:
Tuning(std::shared_ptr< const TimeMap > timemap);
Tuning(const TimeMap& timemap);
void setTuningInitialValue(const std::string tuningItem, double value,bool resetVector);
void setTuningInitialValue(const std::string tuningItem, int value, bool resetVector);

View File

@@ -37,21 +37,21 @@ namespace Opm {
TimeMapConstPtr timeMap, size_t creationTimeStep,
WellCompletion::CompletionOrderEnum completionOrdering,
bool allowCrossFlow, bool automaticShutIn)
: m_status(new DynamicState<WellCommon::StatusEnum>(timeMap, WellCommon::SHUT)),
m_isAvailableForGroupControl(new DynamicState<int>(timeMap, true)),
m_guideRate(new DynamicState<double>(timeMap, -1.0)),
m_guideRatePhase(new DynamicState<GuideRate::GuideRatePhaseEnum>(timeMap, GuideRate::UNDEFINED)),
m_guideRateScalingFactor(new DynamicState<double>(timeMap, 1.0)),
m_isProducer(new DynamicState<int>(timeMap, true)) ,
m_completions( new DynamicState<CompletionSetConstPtr>( timeMap , CompletionSetConstPtr( new CompletionSet()) )),
m_productionProperties( new DynamicState<WellProductionProperties>(timeMap, WellProductionProperties() )),
m_injectionProperties( new DynamicState<WellInjectionProperties>(timeMap, WellInjectionProperties() )),
m_polymerProperties( new DynamicState<WellPolymerProperties>(timeMap, WellPolymerProperties() )),
m_econproductionlimits( new DynamicState<WellEconProductionLimits>(timeMap, WellEconProductionLimits()) ),
m_solventFraction( new DynamicState<double>(timeMap, 0.0 )),
m_groupName( new DynamicState<std::string>( timeMap , "" )),
m_rft( new DynamicState<int>(timeMap,false)),
m_plt( new DynamicState<int>(timeMap,false)),
: m_status(new DynamicState<WellCommon::StatusEnum>(*timeMap, WellCommon::SHUT)),
m_isAvailableForGroupControl(new DynamicState<int>(*timeMap, true)),
m_guideRate(new DynamicState<double>(*timeMap, -1.0)),
m_guideRatePhase(new DynamicState<GuideRate::GuideRatePhaseEnum>(*timeMap, GuideRate::UNDEFINED)),
m_guideRateScalingFactor(new DynamicState<double>(*timeMap, 1.0)),
m_isProducer(new DynamicState<int>(*timeMap, true)) ,
m_completions( new DynamicState<CompletionSetConstPtr>( *timeMap , CompletionSetConstPtr( new CompletionSet()) )),
m_productionProperties( new DynamicState<WellProductionProperties>(*timeMap, WellProductionProperties() )),
m_injectionProperties( new DynamicState<WellInjectionProperties>(*timeMap, WellInjectionProperties() )),
m_polymerProperties( new DynamicState<WellPolymerProperties>(*timeMap, WellPolymerProperties() )),
m_econproductionlimits( new DynamicState<WellEconProductionLimits>(*timeMap, WellEconProductionLimits()) ),
m_solventFraction( new DynamicState<double>(*timeMap, 0.0 )),
m_groupName( new DynamicState<std::string>( *timeMap , "" )),
m_rft( new DynamicState<int>(*timeMap,false)),
m_plt( new DynamicState<int>(*timeMap,false)),
m_timeMap( timeMap ),
m_headI(headI),
m_headJ(headJ),
@@ -60,7 +60,7 @@ namespace Opm {
m_comporder(completionOrdering),
m_allowCrossFlow(allowCrossFlow),
m_automaticShutIn(automaticShutIn),
m_segmentset(new DynamicState<SegmentSetConstPtr>(timeMap, SegmentSetPtr(new SegmentSet())))
m_segmentset(new DynamicState<SegmentSetConstPtr>(*timeMap, SegmentSetPtr(new SegmentSet())))
{
m_name = name_;
m_creationTimeStep = creationTimeStep;

View File

@@ -35,14 +35,14 @@
BOOST_AUTO_TEST_CASE(CreateDynamicTest) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
Opm::DynamicState<double> state(timeMap , 9.99);
}
BOOST_AUTO_TEST_CASE(DynamicStateGetOutOfRangeThrows) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
Opm::DynamicState<double> state(timeMap , 9.99);
BOOST_CHECK_THROW( state.get(1) , std::range_error);
}
@@ -50,7 +50,7 @@ BOOST_AUTO_TEST_CASE(DynamicStateGetOutOfRangeThrows) {
BOOST_AUTO_TEST_CASE(DynamicStateGetDefault) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
Opm::DynamicState<int> state(timeMap , 137);
BOOST_CHECK_EQUAL( 137 , state.get(0));
BOOST_CHECK_EQUAL( 137 , state.back() );
@@ -59,10 +59,11 @@ BOOST_AUTO_TEST_CASE(DynamicStateGetDefault) {
BOOST_AUTO_TEST_CASE(DynamicStateSetOutOfRangeThrows) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 2; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
BOOST_CHECK_THROW( state.update(3 , 100) , std::range_error);
}
@@ -70,10 +71,11 @@ BOOST_AUTO_TEST_CASE(DynamicStateSetOutOfRangeThrows) {
BOOST_AUTO_TEST_CASE(DynamicStateSetOK) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
state.update(2 , 23 );
BOOST_CHECK_EQUAL( 137 , state.get(0));
@@ -100,10 +102,11 @@ BOOST_AUTO_TEST_CASE(DynamicStateSetOK) {
BOOST_AUTO_TEST_CASE(DynamicStateAddIndexAlreadySetThrows) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
state.update( 5 , 60);
BOOST_CHECK_THROW( state.update(3 , 78) , std::invalid_argument);
@@ -112,10 +115,11 @@ BOOST_AUTO_TEST_CASE(DynamicStateAddIndexAlreadySetThrows) {
BOOST_AUTO_TEST_CASE(DynamicStateAddAt) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 0);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 0);
state.update( 10 , 77 );
{
@@ -130,10 +134,10 @@ BOOST_AUTO_TEST_CASE(DynamicStateAddAt) {
BOOST_AUTO_TEST_CASE(DynamicStateCheckSize) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
BOOST_CHECK_EQUAL( 0U , state.size() );
@@ -152,10 +156,10 @@ BOOST_AUTO_TEST_CASE(DynamicStateCheckSize) {
BOOST_AUTO_TEST_CASE(DynamicStateOperatorSubscript) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
state.update( 10 , 200 );
BOOST_CHECK_EQUAL( state[9] , 137 );
@@ -166,11 +170,12 @@ BOOST_AUTO_TEST_CASE(DynamicStateOperatorSubscript) {
BOOST_AUTO_TEST_CASE(DynamicStateInitial) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
Opm::DynamicState<int> state2(timeMap , 137);
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
state.update( 10 , 200 );
@@ -201,10 +206,11 @@ BOOST_AUTO_TEST_CASE(DynamicStateInitial) {
BOOST_AUTO_TEST_CASE( ResetGlobal ) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
state.update(5 , 100);
BOOST_CHECK_EQUAL( state[0] , 137 );
@@ -228,10 +234,11 @@ BOOST_AUTO_TEST_CASE( ResetGlobal ) {
BOOST_AUTO_TEST_CASE( CheckReturn ) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
BOOST_CHECK_EQUAL( false , state.update( 0 , 137 ));
BOOST_CHECK_EQUAL( false , state.update( 3 , 137 ));
@@ -241,10 +248,11 @@ BOOST_AUTO_TEST_CASE( CheckReturn ) {
BOOST_AUTO_TEST_CASE( UpdateEmptyInitial ) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 10; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
BOOST_CHECK_EQUAL( state[5] , 137 );
state.updateInitial( 99 );
@@ -254,10 +262,11 @@ BOOST_AUTO_TEST_CASE( UpdateEmptyInitial ) {
BOOST_AUTO_TEST_CASE( find ) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::DynamicState<int> state(timeMap , 137);
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < 5; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
Opm::DynamicState<int> state(timeMap , 137);
BOOST_CHECK_EQUAL( state.find( 137 ) , 0 );
BOOST_CHECK_EQUAL( state.find( 200 ) , -1 );

View File

@@ -38,25 +38,25 @@
using namespace Opm;
static Opm::TimeMapPtr createXDaysTimeMap(size_t numDays) {
static TimeMap createXDaysTimeMap(size_t numDays) {
boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1);
Opm::TimeMapPtr timeMap(new Opm::TimeMap(boost::posix_time::ptime(startDate)));
Opm::TimeMap timeMap{ boost::posix_time::ptime(startDate) };
for (size_t i = 0; i < numDays; i++)
timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 ));
timeMap.addTStep( boost::posix_time::hours( (i+1) * 24 ));
return timeMap;
}
BOOST_AUTO_TEST_CASE(CreateGroup_CorrectNameAndDefaultValues) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
auto timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
BOOST_CHECK_EQUAL( "G1" , group.name() );
}
BOOST_AUTO_TEST_CASE(CreateGroupCreateTimeOK) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
auto timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 5);
BOOST_CHECK_EQUAL( false, group.hasBeenDefined( 4 ));
BOOST_CHECK_EQUAL( true, group.hasBeenDefined( 5 ));
@@ -66,7 +66,7 @@ BOOST_AUTO_TEST_CASE(CreateGroupCreateTimeOK) {
BOOST_AUTO_TEST_CASE(CreateGroup_SetInjectorProducer_CorrectStatusSet) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
auto timeMap = createXDaysTimeMap(10);
Opm::Group group1("IGROUP" , timeMap , 0);
Opm::Group group2("PGROUP" , timeMap , 0);
@@ -91,7 +91,7 @@ BOOST_AUTO_TEST_CASE(CreateGroup_SetInjectorProducer_CorrectStatusSet) {
BOOST_AUTO_TEST_CASE(InjectRateOK) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
auto timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
BOOST_CHECK_EQUAL( 0 , group.getInjectionRate( 0 ));
group.setInjectionRate( 2 , 100 );
@@ -101,7 +101,7 @@ BOOST_AUTO_TEST_CASE(InjectRateOK) {
BOOST_AUTO_TEST_CASE(ControlModeOK) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
auto timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
BOOST_CHECK_EQUAL( Opm::GroupInjection::NONE , group.getInjectionControlMode( 0 ));
group.setInjectionControlMode( 2 , Opm::GroupInjection::RESV );
@@ -112,7 +112,7 @@ BOOST_AUTO_TEST_CASE(ControlModeOK) {
BOOST_AUTO_TEST_CASE(GroupChangePhaseSameTimeThrows) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
auto timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
BOOST_CHECK_EQUAL( Opm::Phase::WATER , group.getInjectionPhase( 0 )); // Default phase - assumed WATER
group.setInjectionPhase(5 , Opm::Phase::WATER );
@@ -127,7 +127,7 @@ BOOST_AUTO_TEST_CASE(GroupChangePhaseSameTimeThrows) {
BOOST_AUTO_TEST_CASE(GroupMiscInjection) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
auto timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
group.setSurfaceMaxRate( 3 , 100 );
@@ -146,7 +146,7 @@ BOOST_AUTO_TEST_CASE(GroupMiscInjection) {
BOOST_AUTO_TEST_CASE(GroupDoesNotHaveWell) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
auto timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
BOOST_CHECK_EQUAL(false , group.hasWell("NO", 2));
@@ -157,8 +157,8 @@ BOOST_AUTO_TEST_CASE(GroupDoesNotHaveWell) {
BOOST_AUTO_TEST_CASE(GroupAddWell) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
auto timeMap = std::make_shared< Opm::TimeMap >( createXDaysTimeMap( 10 ) );
Opm::Group group("G1" , *timeMap , 0);
auto well1 = std::make_shared< Well >("WELL1", 0, 0, Opm::Value<double>("REF_DEPTH"), Opm::Phase::OIL, timeMap, 0);
auto well2 = std::make_shared< Well >("WELL2", 0, 0, Opm::Value<double>("REF_DEPTH"), Opm::Phase::OIL, timeMap, 0);
@@ -194,8 +194,8 @@ BOOST_AUTO_TEST_CASE(GroupAddWell) {
BOOST_AUTO_TEST_CASE(GroupAddAndDelWell) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
auto timeMap = std::make_shared< Opm::TimeMap >( createXDaysTimeMap( 10 ) );
Opm::Group group("G1" , *timeMap , 0);
auto well1 = std::make_shared< Well >("WELL1", 0, 0, Opm::Value<double>("REF_DEPTH"), Opm::Phase::OIL, timeMap, 0);
auto well2 = std::make_shared< Well >("WELL2", 0, 0, Opm::Value<double>("REF_DEPTH"), Opm::Phase::OIL, timeMap, 0);
@@ -230,8 +230,8 @@ BOOST_AUTO_TEST_CASE(GroupAddAndDelWell) {
}
BOOST_AUTO_TEST_CASE(getWells) {
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
Opm::Group group("G1" , timeMap , 0);
auto timeMap = std::make_shared< Opm::TimeMap >( createXDaysTimeMap( 10 ) );
Opm::Group group("G1" , *timeMap , 0);
auto well1 = std::make_shared< Well >("WELL1", 0, 0, Opm::Value<double>("REF_DEPTH"), Opm::Phase::OIL, timeMap, 0);
auto well2 = std::make_shared< Well >("WELL2", 0, 0, Opm::Value<double>("REF_DEPTH"), Opm::Phase::OIL, timeMap, 0);