Remove old well implementation
This commit is contained in:
@@ -36,7 +36,6 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/ScheduleEnums.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/Connection.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/WellConnections.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/Well.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Well/WellProductionProperties.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp>
|
||||
#include <opm/parser/eclipse/Parser/ParseContext.hpp>
|
||||
@@ -44,143 +43,16 @@
|
||||
|
||||
using namespace Opm;
|
||||
|
||||
static Opm::TimeMap createXDaysTimeMap(size_t numDays) {
|
||||
const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1);
|
||||
Opm::TimeMap timeMap{ startDate };
|
||||
for (size_t i = 0; i < numDays; i++)
|
||||
timeMap.addTStep((i+1) * 24 * 60 * 60);
|
||||
return timeMap;
|
||||
}
|
||||
|
||||
namespace Opm {
|
||||
inline std::ostream& operator<<( std::ostream& stream, const Connection& c ) {
|
||||
return stream << "(" << c.getI() << "," << c.getJ() << "," << c.getK() << ")";
|
||||
}
|
||||
inline std::ostream& operator<<( std::ostream& stream, const Well& well ) {
|
||||
inline std::ostream& operator<<( std::ostream& stream, const Well2& well ) {
|
||||
return stream << "(" << well.name() << ")";
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateWell_CorrectNameAndDefaultValues) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
BOOST_CHECK_EQUAL( "WELL1" , well.name() );
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getProductionPropertiesCopy(5).OilRate);
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateWell_GetProductionPropertiesShouldReturnSameObject) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(&(well.getProductionProperties(5)), &(well.getProductionProperties(5)));
|
||||
BOOST_CHECK_EQUAL(&(well.getProductionProperties(8)), &(well.getProductionProperties(8)));
|
||||
BOOST_CHECK_EQUAL(well.getProductionProperties(5), well.getProductionProperties(8));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateWell_GetInjectionPropertiesShouldReturnSameObject) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(&(well.getInjectionProperties(5)), &(well.getInjectionProperties(5)));
|
||||
BOOST_CHECK_EQUAL(&(well.getInjectionProperties(8)), &(well.getInjectionProperties(8)));
|
||||
BOOST_CHECK_EQUAL(well.getInjectionProperties(5), well.getInjectionProperties(8));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateWellCreateTimeStepOK) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 5);
|
||||
BOOST_CHECK_EQUAL( false , well.hasBeenDefined(0) );
|
||||
BOOST_CHECK_EQUAL( false , well.hasBeenDefined(4) );
|
||||
BOOST_CHECK_EQUAL( true , well.hasBeenDefined(5) );
|
||||
BOOST_CHECK_EQUAL( true , well.hasBeenDefined(7) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setWellProductionProperties_PropertiesSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getProductionPropertiesCopy( 5 ).OilRate);
|
||||
Opm::WellProductionProperties props;
|
||||
props.OilRate = 99;
|
||||
props.GasRate = 98;
|
||||
props.WaterRate = 97;
|
||||
props.LiquidRate = 96;
|
||||
props.ResVRate = 95;
|
||||
well.setProductionProperties( 5 , props);
|
||||
BOOST_CHECK_EQUAL(99 , well.getProductionPropertiesCopy( 5 ).OilRate);
|
||||
BOOST_CHECK_EQUAL(98 , well.getProductionPropertiesCopy( 5 ).GasRate);
|
||||
BOOST_CHECK_EQUAL(97 , well.getProductionPropertiesCopy( 5 ).WaterRate);
|
||||
BOOST_CHECK_EQUAL(96 , well.getProductionPropertiesCopy( 5 ).LiquidRate);
|
||||
BOOST_CHECK_EQUAL(95 , well.getProductionPropertiesCopy( 5 ).ResVRate);
|
||||
BOOST_CHECK_EQUAL(99 , well.getProductionPropertiesCopy( 8 ).OilRate);
|
||||
BOOST_CHECK_EQUAL(98 , well.getProductionPropertiesCopy( 8 ).GasRate);
|
||||
BOOST_CHECK_EQUAL(97 , well.getProductionPropertiesCopy( 8 ).WaterRate);
|
||||
BOOST_CHECK_EQUAL(96 , well.getProductionPropertiesCopy( 8 ).LiquidRate);
|
||||
BOOST_CHECK_EQUAL(95 , well.getProductionPropertiesCopy( 8 ).ResVRate);
|
||||
|
||||
BOOST_CHECK_EQUAL(99, well.production_rate( Opm::Phase::OIL, 5 ) );
|
||||
BOOST_CHECK_EQUAL(99, well.production_rate( Opm::Phase::OIL, 8 ) );
|
||||
BOOST_CHECK_EQUAL(98, well.production_rate( Opm::Phase::GAS, 5 ) );
|
||||
BOOST_CHECK_EQUAL(98, well.production_rate( Opm::Phase::GAS, 8 ) );
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0, well.injection_rate( Opm::Phase::GAS, 8 ) );
|
||||
|
||||
BOOST_CHECK_THROW( well.production_rate( Opm::Phase::SOLVENT, 5 ), std::invalid_argument );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setOilRate_RateSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getProductionPropertiesCopy(5).OilRate);
|
||||
Opm::WellProductionProperties props;
|
||||
props.OilRate = 99;
|
||||
well.setProductionProperties( 5 , props);
|
||||
BOOST_CHECK_EQUAL(99 , well.getProductionPropertiesCopy(5).OilRate);
|
||||
BOOST_CHECK_EQUAL(99 , well.getProductionPropertiesCopy(8).OilRate);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(seLiquidRate_RateSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getProductionPropertiesCopy(5).LiquidRate);
|
||||
Opm::WellProductionProperties props;
|
||||
props.LiquidRate = 99;
|
||||
well.setProductionProperties( 5 , props);
|
||||
BOOST_CHECK_EQUAL(99 , well.getProductionPropertiesCopy(5).LiquidRate);
|
||||
BOOST_CHECK_EQUAL(99 , well.getProductionPropertiesCopy(8).LiquidRate);
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setPredictionModeProduction_ModeSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL( true, well.getProductionPropertiesCopy(5).predictionMode);
|
||||
Opm::WellProductionProperties props;
|
||||
props.predictionMode = false;
|
||||
well.setProductionProperties( 5 , props);
|
||||
BOOST_CHECK( !well.getProductionPropertiesCopy(5).predictionMode );
|
||||
BOOST_CHECK( !well.getProductionPropertiesCopy(8).predictionMode );
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setpredictionModeInjection_ModeSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL( true, well.getInjectionPropertiesCopy(5).predictionMode);
|
||||
Opm::WellInjectionProperties props;
|
||||
props.predictionMode = false;
|
||||
well.setInjectionProperties( 5 , props);
|
||||
BOOST_CHECK_EQUAL(false , well.getInjectionPropertiesCopy(5).predictionMode);
|
||||
BOOST_CHECK_EQUAL(false , well.getInjectionPropertiesCopy(8).predictionMode);
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellCOMPDATtestTRACK) {
|
||||
Opm::Parser parser;
|
||||
@@ -213,10 +85,9 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestTRACK) {
|
||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
||||
Opm::Runspec runspec (deck);
|
||||
Opm::Schedule schedule(deck, grid , eclipseProperties, runspec);
|
||||
auto* op_1 = schedule.getWell("OP_1");
|
||||
const auto& op_1 = schedule.getWell2("OP_1", 2);
|
||||
|
||||
size_t timestep = 2;
|
||||
const auto& completions = op_1->getConnections( timestep );
|
||||
const auto& completions = op_1.getConnections();
|
||||
BOOST_CHECK_EQUAL(9U, completions.size());
|
||||
|
||||
//Verify TRACK completion ordering
|
||||
@@ -254,10 +125,9 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestDefaultTRACK) {
|
||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
||||
Opm::Runspec runspec (deck);
|
||||
Opm::Schedule schedule(deck, grid , eclipseProperties, runspec);
|
||||
auto* op_1 = schedule.getWell("OP_1");
|
||||
const auto& op_1 = schedule.getWell2("OP_1", 2);
|
||||
|
||||
size_t timestep = 2;
|
||||
const auto& completions = op_1->getConnections( timestep );
|
||||
const auto& completions = op_1.getConnections();
|
||||
BOOST_CHECK_EQUAL(9U, completions.size());
|
||||
|
||||
//Verify TRACK completion ordering
|
||||
@@ -298,10 +168,9 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestINPUT) {
|
||||
Eclipse3DProperties eclipseProperties ( deck , table, grid);
|
||||
Opm::Runspec runspec (deck);
|
||||
Opm::Schedule schedule(deck, grid , eclipseProperties, runspec, Opm::ParseContext(), errors);
|
||||
auto* op_1 = schedule.getWell("OP_1");
|
||||
const auto& op_1 = schedule.getWell2("OP_1", 2);
|
||||
|
||||
size_t timestep = 2;
|
||||
const auto& completions = op_1->getConnections( timestep );
|
||||
const auto& completions = op_1.getConnections();
|
||||
BOOST_CHECK_EQUAL(9U, completions.size());
|
||||
|
||||
//Verify INPUT completion ordering
|
||||
@@ -317,148 +186,75 @@ BOOST_AUTO_TEST_CASE(WellCOMPDATtestINPUT) {
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(NewWellZeroCompletions) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
BOOST_CHECK_EQUAL( 0U , well.getConnections( 0 ).size() );
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setGasRate_RateSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::GAS, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getProductionPropertiesCopy(5).GasRate);
|
||||
Opm::WellProductionProperties properties;
|
||||
properties.GasRate = 108;
|
||||
well.setProductionProperties(5, properties);
|
||||
BOOST_CHECK_EQUAL(108 , well.getProductionPropertiesCopy(5).GasRate);
|
||||
BOOST_CHECK_EQUAL(108 , well.getProductionPropertiesCopy(8).GasRate);
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setWaterRate_RateSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getProductionPropertiesCopy(5).WaterRate);
|
||||
Opm::WellProductionProperties properties;
|
||||
properties.WaterRate = 108;
|
||||
well.setProductionProperties(5, properties);
|
||||
BOOST_CHECK_EQUAL(108 , well.getProductionPropertiesCopy(5).WaterRate);
|
||||
BOOST_CHECK_EQUAL(108 , well.getProductionPropertiesCopy(8).WaterRate);
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setSurfaceInjectionRate_RateSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getInjectionPropertiesCopy(5).surfaceInjectionRate);
|
||||
Opm::WellInjectionProperties props(well.getInjectionPropertiesCopy(5));
|
||||
props.surfaceInjectionRate = 108;
|
||||
well.setInjectionProperties(5, props);
|
||||
BOOST_CHECK_EQUAL(108 , well.getInjectionPropertiesCopy(5).surfaceInjectionRate);
|
||||
BOOST_CHECK_EQUAL(108 , well.getInjectionPropertiesCopy(8).surfaceInjectionRate);
|
||||
|
||||
BOOST_CHECK_EQUAL( 108, well.injection_rate(Opm::Phase::WATER, 5) );
|
||||
BOOST_CHECK_EQUAL( 108, well.injection_rate(Opm::Phase::WATER, 8) );
|
||||
|
||||
BOOST_CHECK_EQUAL( 0.0, well.injection_rate(Opm::Phase::GAS, 5) );
|
||||
BOOST_CHECK_EQUAL( 0.0, well.injection_rate(Opm::Phase::GAS, 8) );
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(setReservoirInjectionRate_RateSetCorrect) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap , 0);
|
||||
|
||||
BOOST_CHECK_EQUAL(0.0 , well.getInjectionPropertiesCopy(5).reservoirInjectionRate);
|
||||
Opm::WellInjectionProperties properties(well.getInjectionPropertiesCopy(5));
|
||||
properties.reservoirInjectionRate = 108;
|
||||
well.setInjectionProperties(5, properties);
|
||||
BOOST_CHECK_EQUAL(108 , well.getInjectionPropertiesCopy(5).reservoirInjectionRate);
|
||||
BOOST_CHECK_EQUAL(108 , well.getInjectionPropertiesCopy(8).reservoirInjectionRate);
|
||||
Opm::Well2 well("WELL1", "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
BOOST_CHECK_EQUAL( 0U , well.getConnections( ).size() );
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(isProducerCorrectlySet) {
|
||||
// HACK: This test checks correctly setting of isProducer/isInjector. This property depends on which of
|
||||
// WellProductionProperties/WellInjectionProperties is set last, independent of actual values.
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap ,0);
|
||||
Opm::Well2 well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
/* 1: Well is created as producer */
|
||||
BOOST_CHECK_EQUAL( false , well.isInjector(0));
|
||||
BOOST_CHECK_EQUAL( true , well.isProducer(0));
|
||||
BOOST_CHECK_EQUAL( false , well.isInjector());
|
||||
BOOST_CHECK_EQUAL( true , well.isProducer());
|
||||
|
||||
/* Set a surface injection rate => Well becomes an Injector */
|
||||
Opm::WellInjectionProperties injectionProps1(well.getInjectionPropertiesCopy(3));
|
||||
injectionProps1.surfaceInjectionRate = 100;
|
||||
well.setInjectionProperties(3, injectionProps1);
|
||||
BOOST_CHECK_EQUAL( true , well.isInjector(3));
|
||||
BOOST_CHECK_EQUAL( false , well.isProducer(3));
|
||||
BOOST_CHECK_EQUAL( 100 , well.getInjectionPropertiesCopy(3).surfaceInjectionRate);
|
||||
auto injectionProps1 = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injectionProps1->surfaceInjectionRate = 100;
|
||||
well.updateInjection(injectionProps1);
|
||||
BOOST_CHECK_EQUAL( true , well.isInjector());
|
||||
BOOST_CHECK_EQUAL( false , well.isProducer());
|
||||
BOOST_CHECK_EQUAL( 100 , well.getInjectionProperties().surfaceInjectionRate);
|
||||
|
||||
/* Set a reservoir injection rate => Well becomes an Injector */
|
||||
Opm::WellInjectionProperties injectionProps2(well.getInjectionPropertiesCopy(4));
|
||||
injectionProps2.reservoirInjectionRate = 200;
|
||||
well.setInjectionProperties(4, injectionProps2);
|
||||
BOOST_CHECK_EQUAL( true , well.isInjector(4));
|
||||
BOOST_CHECK_EQUAL( false , well.isProducer(4));
|
||||
BOOST_CHECK_EQUAL( 200 , well.getInjectionPropertiesCopy(4).reservoirInjectionRate);
|
||||
{
|
||||
Opm::Well2 well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
/* Set a reservoir injection rate => Well becomes an Injector */
|
||||
auto injectionProps2 = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injectionProps2->reservoirInjectionRate = 200;
|
||||
well.updateInjection(injectionProps2);
|
||||
BOOST_CHECK_EQUAL( true , well.isInjector());
|
||||
BOOST_CHECK_EQUAL( false , well.isProducer());
|
||||
BOOST_CHECK_EQUAL( 200 , well.getInjectionProperties().reservoirInjectionRate);
|
||||
}
|
||||
|
||||
/* Set rates => Well becomes a producer; injection rate should be set to 0. */
|
||||
Opm::WellInjectionProperties injectionProps3;
|
||||
well.setInjectionProperties(4, injectionProps3);
|
||||
Opm::WellProductionProperties properties(well.getProductionPropertiesCopy(4));
|
||||
properties.OilRate = 100;
|
||||
properties.GasRate = 200;
|
||||
properties.WaterRate = 300;
|
||||
well.setProductionProperties(4, properties);
|
||||
BOOST_CHECK_EQUAL( false , well.isInjector(4));
|
||||
BOOST_CHECK_EQUAL( true , well.isProducer(4));
|
||||
BOOST_CHECK_EQUAL( 0 , well.getInjectionPropertiesCopy(4).surfaceInjectionRate);
|
||||
BOOST_CHECK_EQUAL( 0 , well.getInjectionPropertiesCopy(4).reservoirInjectionRate);
|
||||
BOOST_CHECK_EQUAL( 100 , well.getProductionPropertiesCopy(4).OilRate);
|
||||
BOOST_CHECK_EQUAL( 200 , well.getProductionPropertiesCopy(4).GasRate);
|
||||
BOOST_CHECK_EQUAL( 300 , well.getProductionPropertiesCopy(4).WaterRate);
|
||||
{
|
||||
Opm::Well2 well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
/* Set injection rate => Well becomes injector - all produced rates -> 0 */
|
||||
Opm::WellProductionProperties prodProps2;
|
||||
well.setProductionProperties(6, prodProps2);
|
||||
Opm::WellInjectionProperties injectionProps4(well.getInjectionPropertiesCopy(6));
|
||||
injectionProps4.reservoirInjectionRate = 50;
|
||||
well.setInjectionProperties(6, injectionProps4);
|
||||
BOOST_CHECK_EQUAL( true , well.isInjector(6));
|
||||
BOOST_CHECK_EQUAL( false , well.isProducer(6));
|
||||
BOOST_CHECK_EQUAL( 50 , well.getInjectionPropertiesCopy(6).reservoirInjectionRate);
|
||||
BOOST_CHECK_EQUAL( 0 , well.getProductionPropertiesCopy(6).OilRate);
|
||||
BOOST_CHECK_EQUAL( 0 , well.getProductionPropertiesCopy(6).GasRate);
|
||||
BOOST_CHECK_EQUAL( 0 , well.getProductionPropertiesCopy(6).WaterRate);
|
||||
/* Set rates => Well becomes a producer; injection rate should be set to 0. */
|
||||
auto injectionProps3 = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
well.updateInjection(injectionProps3);
|
||||
|
||||
auto properties = std::make_shared<Opm::WellProductionProperties>( well.getProductionProperties() );
|
||||
properties->OilRate = 100;
|
||||
properties->GasRate = 200;
|
||||
properties->WaterRate = 300;
|
||||
well.updateProduction(properties);
|
||||
|
||||
BOOST_CHECK_EQUAL( false , well.isInjector());
|
||||
BOOST_CHECK_EQUAL( true , well.isProducer());
|
||||
BOOST_CHECK_EQUAL( 0 , well.getInjectionProperties().surfaceInjectionRate);
|
||||
BOOST_CHECK_EQUAL( 0 , well.getInjectionProperties().reservoirInjectionRate);
|
||||
BOOST_CHECK_EQUAL( 100 , well.getProductionProperties().OilRate);
|
||||
BOOST_CHECK_EQUAL( 200 , well.getProductionProperties().GasRate);
|
||||
BOOST_CHECK_EQUAL( 300 , well.getProductionProperties().WaterRate);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(GroupnameCorretlySet) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1" , 1, 0, 0, 0.0, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap ,0);
|
||||
Opm::Well2 well("WELL1" , "G1", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
BOOST_CHECK_EQUAL("" , well.getGroupName(2));
|
||||
|
||||
well.setGroupName(3 , "GROUP2");
|
||||
BOOST_CHECK_EQUAL("GROUP2" , well.getGroupName(3));
|
||||
BOOST_CHECK_EQUAL("GROUP2" , well.getGroupName(6));
|
||||
well.setGroupName(7 , "NEWGROUP");
|
||||
BOOST_CHECK_EQUAL("NEWGROUP" , well.getGroupName(7));
|
||||
BOOST_CHECK_EQUAL("G1" , well.groupName());
|
||||
well.updateGroup( "GROUP2");
|
||||
BOOST_CHECK_EQUAL("GROUP2" , well.groupName());
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(addWELSPECS_setData_dataSet) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1", 1, 23, 42, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 3);
|
||||
Opm::Well2 well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
BOOST_CHECK(!well.hasBeenDefined(2));
|
||||
BOOST_CHECK(well.hasBeenDefined(3));
|
||||
BOOST_CHECK_EQUAL(23, well.getHeadI());
|
||||
BOOST_CHECK_EQUAL(42, well.getHeadJ());
|
||||
BOOST_CHECK_EQUAL(2334.32, well.getRefDepth());
|
||||
@@ -467,36 +263,34 @@ BOOST_AUTO_TEST_CASE(addWELSPECS_setData_dataSet) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(XHPLimitDefault) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
Opm::Well2 well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
|
||||
Opm::WellProductionProperties productionProps(well.getProductionPropertiesCopy(1));
|
||||
productionProps.BHPLimit = 100;
|
||||
productionProps.addProductionControl(Opm::WellProducer::BHP);
|
||||
well.setProductionProperties(1, productionProps);
|
||||
BOOST_CHECK_EQUAL( 100 , well.getProductionPropertiesCopy(5).BHPLimit);
|
||||
BOOST_CHECK( well.getProductionPropertiesCopy(5).hasProductionControl( Opm::WellProducer::BHP ));
|
||||
auto productionProps = std::make_shared<Opm::WellProductionProperties>(well.getProductionProperties());
|
||||
productionProps->BHPLimit = 100;
|
||||
productionProps->addProductionControl(Opm::WellProducer::BHP);
|
||||
well.updateProduction(productionProps);
|
||||
BOOST_CHECK_EQUAL( 100 , well.getProductionProperties().BHPLimit);
|
||||
BOOST_CHECK_EQUAL( true, well.getProductionProperties().hasProductionControl( Opm::WellProducer::BHP ));
|
||||
|
||||
Opm::WellInjectionProperties injProps(well.getInjectionPropertiesCopy(1));
|
||||
injProps.THPLimit = 200;
|
||||
well.setInjectionProperties(1, injProps);
|
||||
BOOST_CHECK_EQUAL( 200 , well.getInjectionPropertiesCopy(5).THPLimit);
|
||||
BOOST_CHECK( !well.getInjectionPropertiesCopy(5).hasInjectionControl( Opm::WellInjector::THP ));
|
||||
auto injProps = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps->THPLimit = 200;
|
||||
well.updateInjection(injProps);
|
||||
BOOST_CHECK_EQUAL( 200 , well.getInjectionProperties().THPLimit);
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::THP ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(InjectorType) {
|
||||
auto timeMap = createXDaysTimeMap(10);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
Opm::Well2 well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
Opm::WellInjectionProperties injectionProps(well.getInjectionPropertiesCopy(1));
|
||||
injectionProps.injectorType = Opm::WellInjector::WATER;
|
||||
well.setInjectionProperties(1, injectionProps);
|
||||
auto injectionProps = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injectionProps->injectorType = Opm::WellInjector::WATER;
|
||||
well.updateInjection(injectionProps);
|
||||
// TODO: Should we test for something other than water here, as long as
|
||||
// the default value for InjectorType is WellInjector::WATER?
|
||||
BOOST_CHECK_EQUAL( Opm::WellInjector::WATER , well.getInjectionPropertiesCopy(5).injectorType);
|
||||
BOOST_CHECK_EQUAL( Opm::WellInjector::WATER , well.getInjectionProperties().injectorType);
|
||||
}
|
||||
|
||||
|
||||
@@ -505,158 +299,113 @@ BOOST_AUTO_TEST_CASE(InjectorType) {
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellHaveProductionControlLimit) {
|
||||
|
||||
auto timeMap = createXDaysTimeMap(20);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
Opm::Well2 well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
|
||||
BOOST_CHECK( !well.getProductionPropertiesCopy(1).hasProductionControl( Opm::WellProducer::ORAT ));
|
||||
BOOST_CHECK( !well.getProductionPropertiesCopy(1).hasProductionControl( Opm::WellProducer::RESV ));
|
||||
BOOST_CHECK( !well.getProductionProperties().hasProductionControl( Opm::WellProducer::ORAT ));
|
||||
BOOST_CHECK( !well.getProductionProperties().hasProductionControl( Opm::WellProducer::RESV ));
|
||||
|
||||
Opm::WellProductionProperties properties(well.getProductionPropertiesCopy(1));
|
||||
properties.OilRate = 100;
|
||||
properties.addProductionControl(Opm::WellProducer::ORAT);
|
||||
well.setProductionProperties(2, properties);
|
||||
BOOST_CHECK( well.getProductionPropertiesCopy(2).hasProductionControl( Opm::WellProducer::ORAT ));
|
||||
BOOST_CHECK( !well.getProductionPropertiesCopy(2).hasProductionControl( Opm::WellProducer::RESV ));
|
||||
auto properties1 = std::make_shared<Opm::WellProductionProperties>(well.getProductionProperties());
|
||||
properties1->OilRate = 100;
|
||||
properties1->addProductionControl(Opm::WellProducer::ORAT);
|
||||
well.updateProduction(properties1);
|
||||
BOOST_CHECK( well.getProductionProperties().hasProductionControl( Opm::WellProducer::ORAT ));
|
||||
BOOST_CHECK( !well.getProductionProperties().hasProductionControl( Opm::WellProducer::RESV ));
|
||||
|
||||
Opm::WellProductionProperties properties2(well.getProductionPropertiesCopy(2));
|
||||
properties2.ResVRate = 100;
|
||||
properties2.addProductionControl(Opm::WellProducer::RESV);
|
||||
well.setProductionProperties(2, properties2);
|
||||
BOOST_CHECK( well.getProductionPropertiesCopy(2).hasProductionControl( Opm::WellProducer::RESV ));
|
||||
auto properties2 = std::make_shared<Opm::WellProductionProperties>(well.getProductionProperties());
|
||||
properties2->ResVRate = 100;
|
||||
properties2->addProductionControl(Opm::WellProducer::RESV);
|
||||
well.updateProduction(properties2);
|
||||
BOOST_CHECK( well.getProductionProperties().hasProductionControl( Opm::WellProducer::RESV ));
|
||||
|
||||
Opm::WellProductionProperties properties3(well.getProductionPropertiesCopy(2));
|
||||
properties3.OilRate = 100;
|
||||
properties3.WaterRate = 100;
|
||||
properties3.GasRate = 100;
|
||||
properties3.LiquidRate = 100;
|
||||
properties3.ResVRate = 100;
|
||||
properties3.BHPLimit = 100;
|
||||
properties3.THPLimit = 100;
|
||||
properties3.addProductionControl(Opm::WellProducer::ORAT);
|
||||
properties3.addProductionControl(Opm::WellProducer::LRAT);
|
||||
properties3.addProductionControl(Opm::WellProducer::BHP);
|
||||
well.setProductionProperties(10, properties3);
|
||||
auto properties3 = std::make_shared<Opm::WellProductionProperties>(well.getProductionProperties());
|
||||
properties3->OilRate = 100;
|
||||
properties3->WaterRate = 100;
|
||||
properties3->GasRate = 100;
|
||||
properties3->LiquidRate = 100;
|
||||
properties3->ResVRate = 100;
|
||||
properties3->BHPLimit = 100;
|
||||
properties3->THPLimit = 100;
|
||||
properties3->addProductionControl(Opm::WellProducer::ORAT);
|
||||
properties3->addProductionControl(Opm::WellProducer::LRAT);
|
||||
properties3->addProductionControl(Opm::WellProducer::BHP);
|
||||
well.updateProduction(properties3);
|
||||
|
||||
BOOST_CHECK( well.getProductionPropertiesCopy(10).hasProductionControl( Opm::WellProducer::ORAT ));
|
||||
BOOST_CHECK( well.getProductionPropertiesCopy(10).hasProductionControl( Opm::WellProducer::LRAT ));
|
||||
BOOST_CHECK( well.getProductionPropertiesCopy(10).hasProductionControl( Opm::WellProducer::BHP ));
|
||||
BOOST_CHECK( well.getProductionProperties().hasProductionControl( Opm::WellProducer::ORAT ));
|
||||
BOOST_CHECK( well.getProductionProperties().hasProductionControl( Opm::WellProducer::LRAT ));
|
||||
BOOST_CHECK( well.getProductionProperties().hasProductionControl( Opm::WellProducer::BHP ));
|
||||
|
||||
Opm::WellProductionProperties properties4(well.getProductionPropertiesCopy(10));
|
||||
properties4.dropProductionControl( Opm::WellProducer::LRAT );
|
||||
well.setProductionProperties(10, properties4);
|
||||
auto properties4 = std::make_shared<Opm::WellProductionProperties>(well.getProductionProperties());
|
||||
properties4->dropProductionControl( Opm::WellProducer::LRAT );
|
||||
well.updateProduction(properties4);
|
||||
|
||||
BOOST_CHECK( well.getProductionPropertiesCopy(11).hasProductionControl( Opm::WellProducer::ORAT ));
|
||||
BOOST_CHECK( !well.getProductionPropertiesCopy(11).hasProductionControl( Opm::WellProducer::LRAT ));
|
||||
BOOST_CHECK( well.getProductionPropertiesCopy(11).hasProductionControl( Opm::WellProducer::BHP ));
|
||||
BOOST_CHECK( well.getProductionProperties().hasProductionControl( Opm::WellProducer::ORAT ));
|
||||
BOOST_CHECK(!well.getProductionProperties().hasProductionControl( Opm::WellProducer::LRAT ));
|
||||
BOOST_CHECK( well.getProductionProperties().hasProductionControl( Opm::WellProducer::BHP ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellHaveInjectionControlLimit) {
|
||||
Opm::Well2 well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
auto timeMap = createXDaysTimeMap(20);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
|
||||
BOOST_CHECK( !well.getInjectionPropertiesCopy(1).hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionPropertiesCopy(1).hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
auto injProps1 = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps1->surfaceInjectionRate = 100;
|
||||
injProps1->addInjectionControl(Opm::WellInjector::RATE);
|
||||
well.updateInjection(injProps1);
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
|
||||
Opm::WellInjectionProperties injProps1(well.getInjectionPropertiesCopy(2));
|
||||
injProps1.surfaceInjectionRate = 100;
|
||||
injProps1.addInjectionControl(Opm::WellInjector::RATE);
|
||||
well.setInjectionProperties(2, injProps1);
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(2).hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionPropertiesCopy(2).hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
auto injProps2 = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps2->reservoirInjectionRate = 100;
|
||||
injProps2->addInjectionControl(Opm::WellInjector::RESV);
|
||||
well.updateInjection(injProps2);
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
|
||||
Opm::WellInjectionProperties injProps2(well.getInjectionPropertiesCopy(2));
|
||||
injProps2.reservoirInjectionRate = 100;
|
||||
injProps2.addInjectionControl(Opm::WellInjector::RESV);
|
||||
well.setInjectionProperties(2, injProps2);
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(2).hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
auto injProps3 = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps3->BHPLimit = 100;
|
||||
injProps3->addInjectionControl(Opm::WellInjector::BHP);
|
||||
injProps3->THPLimit = 100;
|
||||
injProps3->addInjectionControl(Opm::WellInjector::THP);
|
||||
well.updateInjection(injProps3);
|
||||
|
||||
Opm::WellInjectionProperties injProps3(well.getInjectionPropertiesCopy(10));
|
||||
injProps3.BHPLimit = 100;
|
||||
injProps3.addInjectionControl(Opm::WellInjector::BHP);
|
||||
injProps3.THPLimit = 100;
|
||||
injProps3.addInjectionControl(Opm::WellInjector::THP);
|
||||
well.setInjectionProperties(10, injProps3);
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::THP ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::BHP ));
|
||||
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(10).hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(10).hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(10).hasInjectionControl( Opm::WellInjector::THP ));
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(10).hasInjectionControl( Opm::WellInjector::BHP ));
|
||||
|
||||
Opm::WellInjectionProperties injProps4(well.getInjectionPropertiesCopy(11));
|
||||
injProps4.dropInjectionControl( Opm::WellInjector::RESV );
|
||||
well.setInjectionProperties(11, injProps4);
|
||||
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(11).hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionPropertiesCopy(11).hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(11).hasInjectionControl( Opm::WellInjector::THP ));
|
||||
BOOST_CHECK( well.getInjectionPropertiesCopy(11).hasInjectionControl( Opm::WellInjector::BHP ));
|
||||
auto injProps4 = std::make_shared<Opm::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps4->dropInjectionControl( Opm::WellInjector::RESV );
|
||||
well.updateInjection(injProps4);
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::THP ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::BHP ));
|
||||
}
|
||||
/*********************************************************************/
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellSetAvailableForGroupControl_ControlSet) {
|
||||
auto timeMap = createXDaysTimeMap(20);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
|
||||
BOOST_CHECK(well.isAvailableForGroupControl(10));
|
||||
well.setAvailableForGroupControl(12, false);
|
||||
BOOST_CHECK(!well.isAvailableForGroupControl(13));
|
||||
well.setAvailableForGroupControl(15, true);
|
||||
BOOST_CHECK(well.isAvailableForGroupControl(15));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellSetGuideRate_GuideRateSet) {
|
||||
auto timeMap = createXDaysTimeMap(20);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
|
||||
BOOST_CHECK_LT(well.getGuideRate(0), 0);
|
||||
well.setGuideRate(1, 32.2);
|
||||
BOOST_CHECK_LT(well.getGuideRate(0), 0);
|
||||
BOOST_CHECK_EQUAL(32.2, well.getGuideRate(1));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellGuideRatePhase_GuideRatePhaseSet) {
|
||||
auto timeMap = createXDaysTimeMap(20);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
BOOST_CHECK_EQUAL(Opm::GuideRate::UNDEFINED, well.getGuideRatePhase(0));
|
||||
well.setGuideRatePhase(3, Opm::GuideRate::RAT);
|
||||
BOOST_CHECK_EQUAL(Opm::GuideRate::UNDEFINED, well.getGuideRatePhase(2));
|
||||
BOOST_CHECK_EQUAL(Opm::GuideRate::RAT, well.getGuideRatePhase(3));
|
||||
Opm::Well2 well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
BOOST_CHECK_EQUAL(Opm::GuideRate::UNDEFINED, well.getGuideRatePhase());
|
||||
|
||||
BOOST_CHECK(well.updateWellGuideRate(true, 100, Opm::GuideRate::RAT, 66.0));
|
||||
BOOST_CHECK_EQUAL(Opm::GuideRate::RAT, well.getGuideRatePhase());
|
||||
BOOST_CHECK_EQUAL(100, well.getGuideRate());
|
||||
BOOST_CHECK_EQUAL(66.0, well.getGuideRateScalingFactor());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellEfficiencyFactorSet) {
|
||||
auto timeMap = createXDaysTimeMap(20);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
BOOST_CHECK_EQUAL(1.0, well.getEfficiencyFactor(0));
|
||||
well.setEfficiencyFactor(3, 0.9);
|
||||
BOOST_CHECK_EQUAL(1.0, well.getEfficiencyFactor(0));
|
||||
BOOST_CHECK_EQUAL(0.9, well.getEfficiencyFactor(3));
|
||||
Opm::Well2 well("WELL1" , "GROUP", 0, 1, 0, 0, 0.0, Opm::Phase::OIL, Opm::WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH);
|
||||
|
||||
BOOST_CHECK_EQUAL(1.0, well.getEfficiencyFactor());
|
||||
BOOST_CHECK( well.updateEfficiencyFactor(0.9));
|
||||
BOOST_CHECK_EQUAL(0.9, well.getEfficiencyFactor());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(WellSetScalingFactor_ScalingFactorSetSet) {
|
||||
auto timeMap = createXDaysTimeMap(20);
|
||||
Opm::Well well("WELL1", 1, 1, 2, 2334.32, 0.0, Opm::Phase::WATER, Opm::WellProducer::CMODE_UNDEFINED, timeMap, 0);
|
||||
BOOST_CHECK_EQUAL(1.0, well.getGuideRateScalingFactor(0));
|
||||
well.setGuideRateScalingFactor(4, 0.6);
|
||||
BOOST_CHECK_EQUAL(1.0, well.getGuideRateScalingFactor(3));
|
||||
BOOST_CHECK_EQUAL(0.6, well.getGuideRateScalingFactor(4));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(testWellNameInWellNamePattern) {
|
||||
const std::string& wellnamePattern1 = "OP_*";
|
||||
const std::string& wellname1 = "OP_1";
|
||||
|
||||
BOOST_CHECK_EQUAL(Opm::Well::wellNameInWellNamePattern(wellname1, wellnamePattern1), true);
|
||||
|
||||
const std::string& wellnamePattern2 = "NONE";
|
||||
BOOST_CHECK_EQUAL(Opm::Well::wellNameInWellNamePattern(wellname1, wellnamePattern2), false);
|
||||
}
|
||||
|
||||
namespace {
|
||||
namespace WCONHIST {
|
||||
|
||||
Reference in New Issue
Block a user