Added well->liquidRate() from WCONPROD.

This commit is contained in:
Joakim Hove
2014-01-30 10:14:51 +01:00
parent 46bd341808
commit a83d994494
6 changed files with 31 additions and 1 deletions

View File

@@ -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 );
}
}
}

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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);

View File

@@ -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));
}
{

View File

@@ -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