Changed Completion to use Value<double>.
This commit is contained in:
@@ -19,20 +19,23 @@
|
||||
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/Completion.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/ScheduleEnums.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Util/Value.hpp>
|
||||
|
||||
namespace Opm {
|
||||
|
||||
Completion::Completion(int i, int j , int k , CompletionStateEnum state , double CF, double diameter, double skinFactor, const CompletionDirection::DirectionEnum direction) {
|
||||
m_i = i;
|
||||
m_j = j;
|
||||
m_k = k;
|
||||
|
||||
m_state = state;
|
||||
m_CF = CF;
|
||||
m_diameter = diameter;
|
||||
m_skinFactor = skinFactor;
|
||||
m_direction = direction;
|
||||
}
|
||||
Completion::Completion(int i, int j , int k , CompletionStateEnum state ,
|
||||
const Value<double>& CF,
|
||||
const Value<double>& diameter,
|
||||
const Value<double>& skinFactor,
|
||||
const CompletionDirection::DirectionEnum direction) : m_i(i),
|
||||
m_j(j),
|
||||
m_k(k),
|
||||
m_state(state),
|
||||
m_CF(CF),
|
||||
m_diameter(diameter),
|
||||
m_skinFactor(skinFactor),
|
||||
m_direction(direction)
|
||||
{ }
|
||||
|
||||
|
||||
bool Completion::sameCoordinate(const Completion& other) const {
|
||||
@@ -60,15 +63,25 @@ namespace Opm {
|
||||
int K1 = compdatRecord->getItem("K1")->getInt(0) - 1;
|
||||
int K2 = compdatRecord->getItem("K2")->getInt(0) - 1;
|
||||
CompletionStateEnum state = CompletionStateEnumFromString( compdatRecord->getItem("STATE")->getTrimmedString(0) );
|
||||
Value<double> CF("CF");
|
||||
Value<double> diameter("Diameter");
|
||||
Value<double> skinFactor("SkinFactor");
|
||||
|
||||
{
|
||||
DeckItemConstPtr CFItem = compdatRecord->getItem("CF");
|
||||
if (!CFItem->setInDeck())
|
||||
throw std::invalid_argument("The connection factor item can not be defaulted");
|
||||
DeckItemConstPtr diameterItem = compdatRecord->getItem("DIAMETER");
|
||||
DeckItemConstPtr skinFactorItem = compdatRecord->getItem("SKIN");
|
||||
|
||||
if (CFItem->hasData())
|
||||
CF.setValue( CFItem->getSIDouble(0));
|
||||
|
||||
if (diameterItem->hasData())
|
||||
diameter.setValue( diameterItem->getSIDouble(0));
|
||||
|
||||
if (skinFactorItem->hasData())
|
||||
skinFactor.setValue( skinFactorItem->getRawDouble(0));
|
||||
}
|
||||
double CF = compdatRecord->getItem("CF")->getSIDouble(0);
|
||||
double diameter = compdatRecord->getItem("DIAMETER")->getSIDouble(0);
|
||||
double skinFactor = compdatRecord->getItem("SKIN")->getRawDouble(0);
|
||||
|
||||
const CompletionDirection::DirectionEnum& direction = CompletionDirection::DirectionEnumFromString(compdatRecord->getItem("DIR")->getTrimmedString(0));
|
||||
|
||||
for (int k = K1; k <= K2; k++) {
|
||||
@@ -136,15 +149,15 @@ namespace Opm {
|
||||
}
|
||||
|
||||
double Completion::getCF() const {
|
||||
return m_CF;
|
||||
return m_CF.getValue();
|
||||
}
|
||||
|
||||
double Completion::getDiameter() const {
|
||||
return m_diameter;
|
||||
return m_diameter.getValue();
|
||||
}
|
||||
|
||||
double Completion::getSkinFactor() const {
|
||||
return m_skinFactor;
|
||||
return m_skinFactor.getValue();
|
||||
}
|
||||
|
||||
CompletionDirection::DirectionEnum Completion::getDirection() const {
|
||||
|
||||
@@ -28,13 +28,19 @@
|
||||
#include <opm/parser/eclipse/Deck/DeckKeyword.hpp>
|
||||
#include <opm/parser/eclipse/Deck/DeckRecord.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Schedule/ScheduleEnums.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Util/Value.hpp>
|
||||
|
||||
|
||||
namespace Opm {
|
||||
|
||||
class Completion {
|
||||
public:
|
||||
Completion(int i, int j , int k , CompletionStateEnum state , double CF, double diameter, double skinFactor, const CompletionDirection::DirectionEnum direction = CompletionDirection::DirectionEnum::Z);
|
||||
Completion(int i, int j , int k , CompletionStateEnum state ,
|
||||
const Value<double>& CF,
|
||||
const Value<double>& diameter,
|
||||
const Value<double>& skinFactor,
|
||||
const CompletionDirection::DirectionEnum direction = CompletionDirection::DirectionEnum::Z);
|
||||
|
||||
bool sameCoordinate(const Completion& other) const;
|
||||
int getI() const;
|
||||
int getJ() const;
|
||||
@@ -52,7 +58,9 @@ namespace Opm {
|
||||
|
||||
private:
|
||||
int m_i, m_j, m_k;
|
||||
double m_CF, m_diameter, m_skinFactor;
|
||||
Value<double> m_diameter;
|
||||
Value<double> m_CF;
|
||||
Value<double> m_skinFactor;
|
||||
CompletionStateEnum m_state;
|
||||
CompletionDirection::DirectionEnum m_direction;
|
||||
};
|
||||
|
||||
@@ -48,8 +48,8 @@ BOOST_AUTO_TEST_CASE(CreateCompletionSetOK) {
|
||||
|
||||
BOOST_AUTO_TEST_CASE(AddCompletionSizeCorrect) {
|
||||
Opm::CompletionSet completionSet;
|
||||
Opm::CompletionConstPtr completion1(new Opm::Completion(10,10,10,Opm::OPEN , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion2(new Opm::Completion(11,10,10,Opm::OPEN , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion1(new Opm::Completion(10,10,10,Opm::OPEN , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionConstPtr completion2(new Opm::Completion(11,10,10,Opm::OPEN , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
completionSet.add( completion1 );
|
||||
BOOST_CHECK_EQUAL( 1U , completionSet.size() );
|
||||
|
||||
@@ -62,8 +62,8 @@ BOOST_AUTO_TEST_CASE(AddCompletionSizeCorrect) {
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CompletionSetGetOutOfRangeThrows) {
|
||||
Opm::CompletionSet completionSet;
|
||||
Opm::CompletionConstPtr completion1(new Opm::Completion(10,10,10,Opm::OPEN , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion2(new Opm::Completion(11,10,10,Opm::OPEN , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion1(new Opm::Completion(10,10,10,Opm::OPEN , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionConstPtr completion2(new Opm::Completion(11,10,10,Opm::OPEN , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
completionSet.add( completion1 );
|
||||
BOOST_CHECK_EQUAL( 1U , completionSet.size() );
|
||||
|
||||
@@ -78,8 +78,8 @@ BOOST_AUTO_TEST_CASE(CompletionSetGetOutOfRangeThrows) {
|
||||
|
||||
BOOST_AUTO_TEST_CASE(AddCompletionSameCellUpdates) {
|
||||
Opm::CompletionSet completionSet;
|
||||
Opm::CompletionConstPtr completion1(new Opm::Completion(10,10,10,Opm::OPEN , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion2(new Opm::Completion(10,10,10,Opm::SHUT , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion1(new Opm::Completion(10,10,10,Opm::OPEN , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionConstPtr completion2(new Opm::Completion(10,10,10,Opm::SHUT , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
|
||||
|
||||
completionSet.add( completion1 );
|
||||
@@ -94,9 +94,9 @@ BOOST_AUTO_TEST_CASE(AddCompletionSameCellUpdates) {
|
||||
BOOST_AUTO_TEST_CASE(AddCompletionShallowCopy) {
|
||||
Opm::CompletionSet completionSet;
|
||||
|
||||
Opm::CompletionConstPtr completion1(new Opm::Completion(10,10,10,Opm::OPEN , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion2(new Opm::Completion(10,10,11,Opm::SHUT , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion3(new Opm::Completion(10,10,12,Opm::SHUT , 99.88, 22.33, 33.22));
|
||||
Opm::CompletionConstPtr completion1(new Opm::Completion(10,10,10,Opm::OPEN , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionConstPtr completion2(new Opm::Completion(10,10,11,Opm::SHUT , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionConstPtr completion3(new Opm::Completion(10,10,12,Opm::SHUT , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
|
||||
completionSet.add( completion1 );
|
||||
completionSet.add( completion2 );
|
||||
|
||||
@@ -39,29 +39,29 @@
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CreateCompletionOK) {
|
||||
Opm::Completion completion(10,10,10,Opm::OPEN,100, 3.33, 3.3);
|
||||
Opm::Completion completion(10,10,10,Opm::OPEN,Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(testGetFunctions) {
|
||||
Opm::Completion completion(10,11,12,Opm::OPEN,100, 44, 33);
|
||||
Opm::Completion completion(10,11,12,Opm::OPEN,Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22));
|
||||
BOOST_CHECK_EQUAL( 10 , completion.getI() );
|
||||
BOOST_CHECK_EQUAL( 11 , completion.getJ() );
|
||||
BOOST_CHECK_EQUAL( 12 , completion.getK() );
|
||||
|
||||
BOOST_CHECK_EQUAL( Opm::OPEN , completion.getState());
|
||||
BOOST_CHECK_EQUAL( 100 , completion.getCF());
|
||||
BOOST_CHECK_EQUAL( 44 , completion.getDiameter());
|
||||
BOOST_CHECK_EQUAL( 33 , completion.getSkinFactor());
|
||||
BOOST_CHECK_EQUAL( 99.88 , completion.getCF());
|
||||
BOOST_CHECK_EQUAL( 22.33 , completion.getDiameter());
|
||||
BOOST_CHECK_EQUAL( 33.22 , completion.getSkinFactor());
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(CompletionTestssameCoordinate) {
|
||||
Opm::Completion completion1(10,10,10,Opm::OPEN, 100.0, 30, 40);
|
||||
Opm::Completion completion2(10,10,10,Opm::OPEN, 100.0, 30, 40);
|
||||
Opm::Completion completion3(11,10,10,Opm::OPEN, 100.0, 30, 40);
|
||||
Opm::Completion completion4(10,11,10,Opm::OPEN, 100.0, 30, 40);
|
||||
Opm::Completion completion5(10,10,11,Opm::OPEN, 100.0, 30, 40);
|
||||
Opm::Completion completion1(10,10,10,Opm::OPEN, Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22));
|
||||
Opm::Completion completion2(10,10,10,Opm::OPEN, Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22));
|
||||
Opm::Completion completion3(11,10,10,Opm::OPEN, Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22));
|
||||
Opm::Completion completion4(10,11,10,Opm::OPEN, Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22));
|
||||
Opm::Completion completion5(10,10,11,Opm::OPEN, Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22));
|
||||
|
||||
BOOST_CHECK( completion1.sameCoordinate( completion2 ));
|
||||
BOOST_CHECK_EQUAL( false , completion1.sameCoordinate( completion3 ));
|
||||
|
||||
@@ -171,11 +171,11 @@ BOOST_AUTO_TEST_CASE(UpdateCompletions) {
|
||||
|
||||
std::vector<Opm::CompletionPtr> newCompletions;
|
||||
std::vector<Opm::CompletionPtr> newCompletions2;
|
||||
Opm::CompletionPtr comp1(new Opm::Completion( 10 , 10 , 10 , Opm::AUTO , 99.0, 22.3, 33.2));
|
||||
Opm::CompletionPtr comp2(new Opm::Completion( 10 , 11 , 10 , Opm::SHUT , 99.0, 22.3, 33.2));
|
||||
Opm::CompletionPtr comp3(new Opm::Completion( 10 , 10 , 12 , Opm::OPEN , 99.0, 22.3, 33.2));
|
||||
Opm::CompletionPtr comp4(new Opm::Completion( 10 , 10 , 12 , Opm::SHUT , 99.0, 22.3, 33.2));
|
||||
Opm::CompletionPtr comp5(new Opm::Completion( 10 , 10 , 13 , Opm::OPEN , 99.0, 22.3, 33.2));
|
||||
Opm::CompletionPtr comp1(new Opm::Completion( 10 , 10 , 10 , Opm::AUTO , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionPtr comp2(new Opm::Completion( 10 , 11 , 10 , Opm::SHUT , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionPtr comp3(new Opm::Completion( 10 , 10 , 12 , Opm::OPEN , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionPtr comp4(new Opm::Completion( 10 , 10 , 12 , Opm::SHUT , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
Opm::CompletionPtr comp5(new Opm::Completion( 10 , 10 , 13 , Opm::OPEN , Opm::Value<double>("CF",99.88), Opm::Value<double>("D",22.33), Opm::Value<double>("SKIN",33.22)));
|
||||
|
||||
//std::vector<Opm::CompletionConstPtr> newCompletions2{ comp4 , comp5}; Newer c++
|
||||
|
||||
|
||||
@@ -70,3 +70,11 @@ BOOST_AUTO_TEST_CASE( check_equal2 ) {
|
||||
v2.setValue(110);
|
||||
BOOST_CHECK_EQUAL( true , v1.equal(v2));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE( check_assign) {
|
||||
Opm::Value<int> v1("v1",100);
|
||||
Opm::Value<int> v2(v1);
|
||||
|
||||
BOOST_CHECK(v1.equal(v2));
|
||||
}
|
||||
|
||||
@@ -19,7 +19,10 @@
|
||||
|
||||
#define BOOST_TEST_MODULE CompletionIntegrationTests
|
||||
|
||||
|
||||
#include <map>
|
||||
#include <stdexcept>
|
||||
|
||||
#include <boost/test/unit_test.hpp>
|
||||
#include <boost/test/test_tools.hpp>
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
@@ -65,9 +68,17 @@ BOOST_AUTO_TEST_CASE( CreateCompletionsFromRecord ) {
|
||||
BOOST_CHECK_EQUAL( 3.8134259259259256e-12 , completion2->getCF() );
|
||||
BOOST_CHECK_EQUAL( Opm::CompletionDirection::DirectionEnum::X, completion2->getDirection() );
|
||||
}
|
||||
|
||||
// We do not accept a defaulted Connection Factor
|
||||
BOOST_CHECK_THROW(Completion::completionsFromCOMPDATRecord( line1 ) , std::invalid_argument );
|
||||
|
||||
{
|
||||
std::pair<std::string , std::vector<CompletionPtr> > pair = Completion::completionsFromCOMPDATRecord( line1 );
|
||||
|
||||
// We try to get the numerical value of a default CF:
|
||||
CompletionPtr comp = pair.second[0];
|
||||
/*
|
||||
This statement gives a compilation error:
|
||||
BOOST_CHECK_THROW( comp->getCF() , std::logical_error );
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -109,9 +120,6 @@ BOOST_AUTO_TEST_CASE( CreateCompletionsFromKeyword ) {
|
||||
BOOST_CHECK_EQUAL( OPEN , completion4->getState() );
|
||||
BOOST_CHECK_EQUAL( 5.4722222222222212e-13 , completion4->getCF() );
|
||||
BOOST_CHECK_EQUAL( Opm::CompletionDirection::DirectionEnum::Y, completion4->getDirection() );
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user