Added well->liquidRate() from WCONPROD.
This commit is contained in:
@@ -174,6 +174,10 @@ namespace Opm {
|
||||
well->setWaterRate(currentStep, wrat);
|
||||
well->setGasRate(currentStep, grat);
|
||||
well->setInPredictionMode(currentStep, isPredictionMode);
|
||||
if (isPredictionMode) {
|
||||
double liquidRate = record->getItem("LRAT")->getSIDouble(0);
|
||||
well->setLiquidRate( currentStep , liquidRate );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace Opm {
|
||||
: m_oilRate( new DynamicState<double>( timeMap , 0.0)) ,
|
||||
m_gasRate(new DynamicState<double>(timeMap, 0.0)),
|
||||
m_waterRate(new DynamicState<double>(timeMap, 0.0)),
|
||||
m_liquidRate(new DynamicState<double>(timeMap, 0.0)),
|
||||
m_surfaceInjectionRate(new DynamicState<double>(timeMap, 0.0)),
|
||||
m_reservoirInjectionRate(new DynamicState<double>(timeMap, 0.0)),
|
||||
m_BHPLimit(new DynamicState<double>(timeMap , 0.0)),
|
||||
@@ -132,6 +133,15 @@ namespace Opm {
|
||||
switch2Producer( timeStep );
|
||||
}
|
||||
|
||||
double Well::getLiquidRate(size_t timeStep) const {
|
||||
return m_liquidRate->get(timeStep);
|
||||
}
|
||||
|
||||
void Well::setLiquidRate(size_t timeStep, double liquidRate) {
|
||||
m_liquidRate->add(timeStep, liquidRate);
|
||||
switch2Producer( timeStep );
|
||||
}
|
||||
|
||||
double Well::getSurfaceInjectionRate(size_t timeStep) const {
|
||||
return m_surfaceInjectionRate->get(timeStep);
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ namespace Opm {
|
||||
|
||||
double getOilRate(size_t timeStep) const;
|
||||
void setOilRate(size_t timeStep, double oilRate);
|
||||
double getLiquidRate(size_t timeStep) const;
|
||||
void setLiquidRate(size_t timeStep, double LiquidRate);
|
||||
double getGasRate(size_t timeStep) const;
|
||||
void setGasRate(size_t timeStep, double gasRate);
|
||||
double getWaterRate(size_t timeStep) const;
|
||||
@@ -83,6 +85,7 @@ namespace Opm {
|
||||
std::shared_ptr<DynamicState<double> > m_oilRate;
|
||||
std::shared_ptr<DynamicState<double> > m_gasRate;
|
||||
std::shared_ptr<DynamicState<double> > m_waterRate;
|
||||
std::shared_ptr<DynamicState<double> > m_liquidRate;
|
||||
std::shared_ptr<DynamicState<double> > m_surfaceInjectionRate;
|
||||
std::shared_ptr<DynamicState<double> > m_reservoirInjectionRate;
|
||||
std::shared_ptr<DynamicState<double> > m_BHPLimit;
|
||||
|
||||
@@ -69,6 +69,17 @@ BOOST_AUTO_TEST_CASE(setOilRate_RateSetCorrect) {
|
||||
BOOST_CHECK_EQUAL(99 , well.getOilRate( 8 ));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(seLiquidRate_RateSetCorrect) {
|
||||
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 0, 0, 0.0, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getLiquidRate( 5 ));
|
||||
well.setLiquidRate( 5 , 99 );
|
||||
BOOST_CHECK_EQUAL(99 , well.getLiquidRate( 5 ));
|
||||
BOOST_CHECK_EQUAL(99 , well.getLiquidRate( 8 ));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setPredictionMode_ModeSetCorrect) {
|
||||
Opm::TimeMapPtr timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 0, 0, 0.0, timeMap , 0);
|
||||
|
||||
@@ -80,6 +80,8 @@ BOOST_AUTO_TEST_CASE(WellTesting) {
|
||||
WellPtr well3 = sched->getWell("W_3");
|
||||
|
||||
BOOST_CHECK_EQUAL( WellCommon::AUTO , well3->getStatus(3));
|
||||
|
||||
BOOST_CHECK_EQUAL( 999/Metric::Time , well3->getLiquidRate(10));
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@@ -74,7 +74,7 @@ COMPDAT
|
||||
WCONPROD
|
||||
'W_1' 'OPEN' 'ORAT' 11000.000 44.000 188 5* /
|
||||
'W_2' 'OPEN' 'ORAT' 17998.000 2.000 1461075.000 5* /
|
||||
'W_3' 'OPEN' 'ORAT' 17999.000 1.000 1471824.000 5* /
|
||||
'W_3' 'OPEN' 'ORAT' 17999.000 1.000 1471824.000 999 4* /
|
||||
/
|
||||
|
||||
TSTEP -- 8
|
||||
|
||||
Reference in New Issue
Block a user