Merge pull request #100 from flikka/add-to-completion

Added skinFactor and diameter to Completion
This commit is contained in:
Joakim Hove
2014-01-28 07:04:40 -08:00
7 changed files with 48 additions and 29 deletions

View File

@@ -22,13 +22,15 @@
namespace Opm {
Completion::Completion(int i, int j , int k , CompletionStateEnum state , double CF) {
Completion::Completion(int i, int j , int k , CompletionStateEnum state , double CF, double diameter, double skinFactor) {
m_i = i;
m_j = j;
m_k = k;
m_state = state;
m_CF = CF;
m_diameter = diameter;
m_skinFactor = skinFactor;
}
@@ -56,6 +58,7 @@ namespace Opm {
int K1 = compdatRecord->getItem("K1")->getInt(0);
int K2 = compdatRecord->getItem("K2")->getInt(0);
CompletionStateEnum state = CompletionStateEnumFromString( compdatRecord->getItem("STATE")->getString(0) );
{
DeckItemConstPtr CFItem = compdatRecord->getItem("CF");
if (CFItem->defaultApplied())
@@ -63,8 +66,11 @@ namespace Opm {
}
double CF = compdatRecord->getItem("CF")->getRawDouble(0);
double diameter = compdatRecord->getItem("DIAMETER")->getSIDouble(0);
double skinFactor = compdatRecord->getItem("SKIN")->getRawDouble(0);
for (int k = K1; k <= K2; k++) {
CompletionConstPtr completion(new Completion(I , J , k , state , CF ));
CompletionConstPtr completion(new Completion(I , J , k , state , CF, diameter, skinFactor ));
completions.push_back( completion );
}
@@ -117,12 +123,19 @@ namespace Opm {
CompletionStateEnum Completion::getState() const {
return m_state;
};
}
double Completion::getCF() const {
return m_CF;
}
double Completion::getDiameter() const {
return m_diameter;
}
double Completion::getSkinFactor() const {
return m_skinFactor;
}
}

View File

@@ -33,20 +33,22 @@ namespace Opm {
class Completion {
public:
Completion(int i, int j , int k , CompletionStateEnum state , double CF);
Completion(int i, int j , int k , CompletionStateEnum state , double CF, double diameter, double skinFactor);
bool sameCoordinate(const Completion& other) const;
int getI() const;
int getJ() const;
int getK() const;
CompletionStateEnum getState() const;
double getCF() const;
double getDiameter() const;
double getSkinFactor() const;
static std::map<std::string , std::vector<std::shared_ptr<const Completion> > > completionsFromCOMPDATKeyword( DeckKeywordConstPtr compdatKeyword );
static std::pair<std::string , std::vector<std::shared_ptr<const Completion> > > completionsFromCOMPDATRecord( DeckRecordConstPtr compdatRecord );
private:
int m_i, m_j, m_k;
double m_CF;
double m_CF, m_diameter, m_skinFactor;
CompletionStateEnum m_state;
};

View File

@@ -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));
Opm::CompletionConstPtr completion2(new Opm::Completion(11,10,10,Opm::OPEN , 99.88));
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));
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));
Opm::CompletionConstPtr completion2(new Opm::Completion(11,10,10,Opm::OPEN , 99.88));
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));
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));
Opm::CompletionConstPtr completion2(new Opm::Completion(10,10,10,Opm::SHUT , 99.88));
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));
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));
Opm::CompletionConstPtr completion2(new Opm::Completion(10,10,11,Opm::SHUT , 99.88));
Opm::CompletionConstPtr completion3(new Opm::Completion(10,10,12,Opm::SHUT , 99.88));
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));
completionSet.add( completion1 );
completionSet.add( completion2 );

View File

@@ -39,28 +39,29 @@
BOOST_AUTO_TEST_CASE(CreateCompletionOK) {
Opm::Completion completion(10,10,10,Opm::OPEN,100);
Opm::Completion completion(10,10,10,Opm::OPEN,100, 3.33, 3.3);
}
BOOST_AUTO_TEST_CASE(testGetFunctions) {
Opm::Completion completion(10,11,12,Opm::OPEN,100);
Opm::Completion completion(10,11,12,Opm::OPEN,100, 44, 33);
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_AUTO_TEST_CASE(CompletionTestssameCoordinate) {
Opm::Completion completion1(10,10,10,Opm::OPEN, 100.0);
Opm::Completion completion2(10,10,10,Opm::OPEN, 100.0);
Opm::Completion completion3(11,10,10,Opm::OPEN, 100.0);
Opm::Completion completion4(10,11,10,Opm::OPEN, 100.0);
Opm::Completion completion5(10,10,11,Opm::OPEN, 100.0);
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);
BOOST_CHECK( completion1.sameCoordinate( completion2 ));
BOOST_CHECK_EQUAL( false , completion1.sameCoordinate( completion3 ));

View File

@@ -96,11 +96,11 @@ BOOST_AUTO_TEST_CASE(UpdateCompletions) {
std::vector<Opm::CompletionConstPtr> newCompletions;
std::vector<Opm::CompletionConstPtr> newCompletions2;
Opm::CompletionConstPtr comp1(new Opm::Completion( 10 , 10 , 10 , Opm::AUTO , 99.0));
Opm::CompletionConstPtr comp2(new Opm::Completion( 10 , 11 , 10 , Opm::SHUT , 99.0));
Opm::CompletionConstPtr comp3(new Opm::Completion( 10 , 10 , 12 , Opm::OPEN , 99.0));
Opm::CompletionConstPtr comp4(new Opm::Completion( 10 , 10 , 12 , Opm::SHUT , 99.0));
Opm::CompletionConstPtr comp5(new Opm::Completion( 10 , 10 , 13 , Opm::OPEN , 99.0));
Opm::CompletionConstPtr comp1(new Opm::Completion( 10 , 10 , 10 , Opm::AUTO , 99.0, 22.3, 33.2));
Opm::CompletionConstPtr comp2(new Opm::Completion( 10 , 11 , 10 , Opm::SHUT , 99.0, 22.3, 33.2));
Opm::CompletionConstPtr comp3(new Opm::Completion( 10 , 10 , 12 , Opm::OPEN , 99.0, 22.3, 33.2));
Opm::CompletionConstPtr comp4(new Opm::Completion( 10 , 10 , 12 , Opm::SHUT , 99.0, 22.3, 33.2));
Opm::CompletionConstPtr comp5(new Opm::Completion( 10 , 10 , 13 , Opm::OPEN , 99.0, 22.3, 33.2));
//std::vector<Opm::CompletionConstPtr> newCompletions2{ comp4 , comp5}; Newer c++

View File

@@ -129,10 +129,13 @@ BOOST_AUTO_TEST_CASE(WellTestCOMPDAT) {
CompletionSetConstPtr completions = well1->getCompletions(0);
BOOST_CHECK_EQUAL(0U, completions->size());
completions = well1->getCompletions(3);
BOOST_CHECK_EQUAL(4U, completions->size());
BOOST_CHECK_EQUAL(OPEN, completions->get(3)->getState());
BOOST_CHECK_EQUAL(19.731, completions->get(3)->getCF());
BOOST_CHECK_EQUAL(0.311/Metric::Length, completions->get(3)->getDiameter());
BOOST_CHECK_EQUAL(3.3, completions->get(3)->getSkinFactor());
completions = well1->getCompletions(7);
BOOST_CHECK_EQUAL(4U, completions->size());