Added miscellaneous injection properties to the Group object
This commit is contained in:
parent
8ba6fc2ac7
commit
a0acac1b4c
@ -27,16 +27,22 @@ namespace Opm {
|
||||
Group::Group(const std::string& name , TimeMapConstPtr timeMap)
|
||||
: m_injectionPhase( new DynamicState<PhaseEnum>( timeMap , WATER )),
|
||||
m_injectionControlMode( new DynamicState<GroupInjectionControlEnum>( timeMap , NONE )),
|
||||
m_injectionRate( new DynamicState<double>( timeMap , 0 ))
|
||||
m_injectionRate( new DynamicState<double>( timeMap , 0 )),
|
||||
m_surfaceFlowMaxRate( new DynamicState<double>( timeMap , 0)),
|
||||
m_reservoirFlowMaxRate( new DynamicState<double>( timeMap , 0)),
|
||||
m_targetReinjectFraction( new DynamicState<double>( timeMap , 0)),
|
||||
m_targetVoidReplacementFraction( new DynamicState<double>( timeMap , 0))
|
||||
{
|
||||
m_name = name;
|
||||
}
|
||||
|
||||
|
||||
const std::string& Group::name() const {
|
||||
return m_name;
|
||||
}
|
||||
|
||||
|
||||
void Group::setInjectionPhase(size_t time_step , PhaseEnum phase) {
|
||||
void Group::setInjectionPhase(size_t time_step , PhaseEnum phase){
|
||||
if (m_injectionPhase->size() == time_step + 1) {
|
||||
PhaseEnum currentPhase = m_injectionPhase->get(time_step);
|
||||
/*
|
||||
@ -83,6 +89,38 @@ namespace Opm {
|
||||
return m_injectionControlMode->get( time_step );
|
||||
}
|
||||
|
||||
void Group::setSurfaceMaxRate( size_t time_step , double rate) {
|
||||
return m_surfaceFlowMaxRate->add( time_step , rate);
|
||||
}
|
||||
|
||||
double Group::getSurfaceMaxRate( size_t time_step ) const {
|
||||
return m_surfaceFlowMaxRate->get( time_step );
|
||||
}
|
||||
|
||||
void Group::setReservoirMaxRate( size_t time_step , double rate) {
|
||||
return m_reservoirFlowMaxRate->add( time_step , rate);
|
||||
}
|
||||
|
||||
double Group::getReservoirMaxRate( size_t time_step ) const {
|
||||
return m_reservoirFlowMaxRate->get( time_step );
|
||||
}
|
||||
|
||||
void Group::setTargetReinjectFraction( size_t time_step , double rate) {
|
||||
return m_targetReinjectFraction->add( time_step , rate);
|
||||
}
|
||||
|
||||
double Group::getTargetReinjectFraction( size_t time_step ) const {
|
||||
return m_targetReinjectFraction->get( time_step );
|
||||
}
|
||||
|
||||
void Group::setTargetVoidReplacementFraction( size_t time_step , double rate) {
|
||||
return m_targetVoidReplacementFraction->add( time_step , rate);
|
||||
}
|
||||
|
||||
double Group::getTargetVoidReplacementFraction( size_t time_step ) const {
|
||||
return m_targetVoidReplacementFraction->get( time_step );
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -35,19 +35,36 @@ namespace Opm {
|
||||
Group(const std::string& name, TimeMapConstPtr timeMap);
|
||||
|
||||
const std::string& name() const;
|
||||
void setInjectionPhase(size_t time_step , PhaseEnum phase);
|
||||
void setInjectionPhase(size_t time_step , PhaseEnum phase);
|
||||
PhaseEnum getInjectionPhase( size_t time_step) const;
|
||||
|
||||
void setInjectionControlMode(size_t time_step , GroupInjectionControlEnum ControlMode);
|
||||
void setInjectionControlMode(size_t time_step , GroupInjectionControlEnum ControlMode);
|
||||
GroupInjectionControlEnum getInjectionControlMode( size_t time_step) const;
|
||||
|
||||
void setInjectionRate(size_t time_step , double rate);
|
||||
void setInjectionRate(size_t time_step , double rate);
|
||||
double getInjectionRate( size_t time_step) const;
|
||||
|
||||
void setSurfaceMaxRate( size_t time_step , double rate);
|
||||
double getSurfaceMaxRate( size_t time_step ) const;
|
||||
|
||||
void setReservoirMaxRate( size_t time_step , double rate);
|
||||
double getReservoirMaxRate( size_t time_step ) const;
|
||||
|
||||
void setTargetReinjectFraction( size_t time_step , double rate);
|
||||
double getTargetReinjectFraction( size_t time_step ) const;
|
||||
|
||||
void setTargetVoidReplacementFraction( size_t time_step , double rate);
|
||||
double getTargetVoidReplacementFraction( size_t time_step ) const;
|
||||
|
||||
private:
|
||||
std::string m_name;
|
||||
boost::shared_ptr<DynamicState<PhaseEnum> > m_injectionPhase;
|
||||
boost::shared_ptr<DynamicState<GroupInjectionControlEnum> > m_injectionControlMode;
|
||||
boost::shared_ptr<DynamicState<double> > m_injectionRate;
|
||||
boost::shared_ptr<DynamicState<double> > m_surfaceFlowMaxRate;
|
||||
boost::shared_ptr<DynamicState<double> > m_reservoirFlowMaxRate;
|
||||
boost::shared_ptr<DynamicState<double> > m_targetReinjectFraction;
|
||||
boost::shared_ptr<DynamicState<double> > m_targetVoidReplacementFraction;
|
||||
};
|
||||
typedef boost::shared_ptr<Group> GroupPtr;
|
||||
typedef boost::shared_ptr<const Group> GroupConstPtr;
|
||||
|
@ -82,3 +82,21 @@ BOOST_AUTO_TEST_CASE(GroupChangePhaseSameTimeThrows) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(GroupMiscInjection) {
|
||||
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
|
||||
Opm::Group group("G1" , timeMap);
|
||||
|
||||
group.setSurfaceMaxRate( 3 , 100 );
|
||||
BOOST_CHECK_EQUAL( 100 , group.getSurfaceMaxRate( 5 ));
|
||||
|
||||
group.setReservoirMaxRate( 3 , 200 );
|
||||
BOOST_CHECK_EQUAL( 200 , group.getReservoirMaxRate( 5 ));
|
||||
|
||||
group.setTargetReinjectFraction( 3 , 300 );
|
||||
BOOST_CHECK_EQUAL( 300 , group.getTargetReinjectFraction( 5 ));
|
||||
|
||||
group.setTargetVoidReplacementFraction( 3 , 400 );
|
||||
BOOST_CHECK_EQUAL( 400 , group.getTargetVoidReplacementFraction( 5 ));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user