Added isProducerGroup to Group class, need this in opm-core
This commit is contained in:
@@ -86,7 +86,8 @@ namespace Opm {
|
||||
Group::Group(const std::string& name , TimeMapConstPtr timeMap , size_t creationTimeStep) :
|
||||
m_injection( new GroupInjection::InjectionData(timeMap) ),
|
||||
m_production( new GroupProduction::ProductionData( timeMap )),
|
||||
m_wells( new DynamicState<WellSetConstPtr>(timeMap , WellSetConstPtr(new WellSet() )))
|
||||
m_wells( new DynamicState<WellSetConstPtr>(timeMap , WellSetConstPtr(new WellSet() ))),
|
||||
m_isProductionGroup( new DynamicState<bool>(timeMap, true))
|
||||
{
|
||||
m_name = name;
|
||||
m_creationTimeStep = creationTimeStep;
|
||||
@@ -105,6 +106,20 @@ namespace Opm {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Group::isProductionGroup(size_t timeStep) const {
|
||||
return m_isProductionGroup->get(timeStep);
|
||||
}
|
||||
|
||||
bool Group::isInjectionGroup(size_t timeStep) const {
|
||||
return !m_isProductionGroup->get(timeStep);
|
||||
}
|
||||
|
||||
void Group::setProductionGroup(size_t timeStep, bool isProductionGroup) {
|
||||
m_isProductionGroup->add(timeStep, isProductionGroup);
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
void Group::setInjectionPhase(size_t time_step , Phase::PhaseEnum phase){
|
||||
|
||||
@@ -46,6 +46,11 @@ namespace Opm {
|
||||
Group(const std::string& name, TimeMapConstPtr timeMap , size_t creationTimeStep);
|
||||
bool hasBeenDefined(size_t timeStep) const;
|
||||
const std::string& name() const;
|
||||
bool isProductionGroup(size_t timeStep) const;
|
||||
bool isInjectionGroup(size_t timeStep) const;
|
||||
void setProductionGroup(size_t timeStep, bool isProductionGroup);
|
||||
|
||||
/******************************************************************/
|
||||
void setInjectionPhase(size_t time_step , Phase::PhaseEnum phase);
|
||||
Phase::PhaseEnum getInjectionPhase(size_t time_step) const;
|
||||
|
||||
@@ -67,7 +72,7 @@ namespace Opm {
|
||||
void setTargetVoidReplacementFraction( size_t time_step , double rate);
|
||||
double getTargetVoidReplacementFraction( size_t time_step ) const;
|
||||
|
||||
/*****************************************************************/
|
||||
/******************************************************************/
|
||||
|
||||
void setProductionControlMode( size_t time_step , GroupProduction::ControlEnum controlMode);
|
||||
GroupProduction::ControlEnum getProductionControlMode( size_t time_step ) const;
|
||||
@@ -99,6 +104,7 @@ namespace Opm {
|
||||
std::shared_ptr<GroupInjection::InjectionData> m_injection;
|
||||
std::shared_ptr<GroupProduction::ProductionData> m_production;
|
||||
std::shared_ptr<DynamicState<WellSetConstPtr> > m_wells;
|
||||
std::shared_ptr<DynamicState<bool> > m_isProductionGroup;
|
||||
};
|
||||
typedef std::shared_ptr<Group> GroupPtr;
|
||||
typedef std::shared_ptr<const Group> GroupConstPtr;
|
||||
|
||||
@@ -57,6 +57,28 @@ BOOST_AUTO_TEST_CASE(CreateGroupCreateTimeOK) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateGroup_SetInjectorProducer_CorrectStatusSet) {
|
||||
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
|
||||
Opm::Group group1("IGROUP" , timeMap , 0);
|
||||
Opm::Group group2("PGROUP" , timeMap , 0);
|
||||
|
||||
group1.setProductionGroup(0, true);
|
||||
BOOST_CHECK(group1.isProductionGroup(1));
|
||||
BOOST_CHECK(!group1.isInjectionGroup(1));
|
||||
group1.setProductionGroup(3, false);
|
||||
BOOST_CHECK(!group1.isProductionGroup(3));
|
||||
BOOST_CHECK(group1.isInjectionGroup(3));
|
||||
|
||||
group2.setProductionGroup(0, false);
|
||||
BOOST_CHECK(!group2.isProductionGroup(1));
|
||||
BOOST_CHECK(group2.isInjectionGroup(1));
|
||||
group2.setProductionGroup(3, true);
|
||||
BOOST_CHECK(group2.isProductionGroup(4));
|
||||
BOOST_CHECK(!group2.isInjectionGroup(4));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(InjectRateOK) {
|
||||
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
|
||||
Opm::Group group("G1" , timeMap , 0);
|
||||
|
||||
Reference in New Issue
Block a user