Shifting WELSPECS and COMPDAT i,j,k indices down one, to go from 0

This commit is contained in:
Kristian Flikka
2014-01-29 11:48:02 +01:00
parent 3f62b3c777
commit 37084e991d
4 changed files with 29 additions and 26 deletions

View File

@@ -53,10 +53,11 @@ namespace Opm {
std::pair<std::string , std::vector<CompletionConstPtr> > Completion::completionsFromCOMPDATRecord( DeckRecordConstPtr compdatRecord ) {
std::vector<CompletionConstPtr> completions;
std::string well = compdatRecord->getItem("WELL")->getString(0);
int I = compdatRecord->getItem("I")->getInt(0);
int J = compdatRecord->getItem("J")->getInt(0);
int K1 = compdatRecord->getItem("K1")->getInt(0);
int K2 = compdatRecord->getItem("K2")->getInt(0);
// We change from eclipse's 1 - n, to a 0 - n-1 solution
int I = compdatRecord->getItem("I")->getInt(0) - 1;
int J = compdatRecord->getItem("J")->getInt(0) - 1;
int K1 = compdatRecord->getItem("K1")->getInt(0) - 1;
int K2 = compdatRecord->getItem("K2")->getInt(0) - 1;
CompletionStateEnum state = CompletionStateEnumFromString( compdatRecord->getItem("STATE")->getString(0) );
{

View File

@@ -148,10 +148,10 @@ namespace Opm {
}
void Schedule::checkWELSPECSConsistency(WellConstPtr well, DeckRecordConstPtr record) const {
if (well->getHeadI() != record->getItem("HEAD_I")->getInt(0)) {
if (well->getHeadI() != record->getItem("HEAD_I")->getInt(0) - 1) {
throw std::invalid_argument("Unable process WELSPECS for well " + well->name() + ", HEAD_I deviates from existing value");
}
if (well->getHeadJ() != record->getItem("HEAD_J")->getInt(0)) {
if (well->getHeadJ() != record->getItem("HEAD_J")->getInt(0) - 1) {
throw std::invalid_argument("Unable process WELSPECS for well " + well->name() + ", HEAD_J deviates from existing value");
}
if (well->getRefDepth() != record->getItem("REF_DEPTH")->getSIDouble(0)) {
@@ -293,8 +293,10 @@ namespace Opm {
}
void Schedule::addWell(const std::string& wellName, DeckRecordConstPtr record, size_t timeStep) {
int headI = record->getItem("HEAD_I")->getInt(0);
int headJ = record->getItem("HEAD_J")->getInt(0);
// We change from eclipse's 1 - n, to a 0 - n-1 solution
int headI = record->getItem("HEAD_I")->getInt(0) - 1;
int headJ = record->getItem("HEAD_J")->getInt(0) - 1;
double refDepth = record->getItem("REF_DEPTH")->getSIDouble(0);
WellPtr well(new Well(wellName, headI, headJ, refDepth, m_timeMap , timeStep));
m_wells[ wellName ] = well;

View File

@@ -51,15 +51,15 @@ BOOST_AUTO_TEST_CASE( CreateCompletionsFromRecord ) {
CompletionConstPtr completion0 = completionsList.second[0];
CompletionConstPtr completion2 = completionsList.second[2];
BOOST_CHECK_EQUAL( 30 , completion0->getI() );
BOOST_CHECK_EQUAL( 37 , completion0->getJ() );
BOOST_CHECK_EQUAL( 1 , completion0->getK() );
BOOST_CHECK_EQUAL( 29 , completion0->getI() );
BOOST_CHECK_EQUAL( 36 , completion0->getJ() );
BOOST_CHECK_EQUAL( 0 , completion0->getK() );
BOOST_CHECK_EQUAL( OPEN , completion0->getState() );
BOOST_CHECK_EQUAL( 3.8134259259259256e-12 , completion0->getCF() );
BOOST_CHECK_EQUAL( 30 , completion2->getI() );
BOOST_CHECK_EQUAL( 37 , completion2->getJ() );
BOOST_CHECK_EQUAL( 3 , completion2->getK() );
BOOST_CHECK_EQUAL( 29 , completion2->getI() );
BOOST_CHECK_EQUAL( 36 , completion2->getJ() );
BOOST_CHECK_EQUAL( 2 , completion2->getK() );
BOOST_CHECK_EQUAL( OPEN , completion2->getState() );
BOOST_CHECK_EQUAL( 3.8134259259259256e-12 , completion2->getCF() );
}
@@ -94,15 +94,15 @@ BOOST_AUTO_TEST_CASE( CreateCompletionsFromKeyword ) {
CompletionConstPtr completion0 = W_3Completions[0];
CompletionConstPtr completion4 = W_3Completions[4];
BOOST_CHECK_EQUAL( 31 , completion0->getI() );
BOOST_CHECK_EQUAL( 18 , completion0->getJ() );
BOOST_CHECK_EQUAL( 1 , completion0->getK() );
BOOST_CHECK_EQUAL( 30 , completion0->getI() );
BOOST_CHECK_EQUAL( 17 , completion0->getJ() );
BOOST_CHECK_EQUAL( 0 , completion0->getK() );
BOOST_CHECK_EQUAL( OPEN , completion0->getState() );
BOOST_CHECK_EQUAL( 3.1726851851851847e-12 , completion0->getCF() );
BOOST_CHECK_EQUAL( 31 , completion4->getI() );
BOOST_CHECK_EQUAL( 17 , completion4->getJ() );
BOOST_CHECK_EQUAL( 4 , completion4->getK() );
BOOST_CHECK_EQUAL( 30 , completion4->getI() );
BOOST_CHECK_EQUAL( 16 , completion4->getJ() );
BOOST_CHECK_EQUAL( 3 , completion4->getK() );
BOOST_CHECK_EQUAL( OPEN , completion4->getState() );
BOOST_CHECK_EQUAL( 5.4722222222222212e-13 , completion4->getCF() );

View File

@@ -337,22 +337,22 @@ BOOST_AUTO_TEST_CASE(WellTestWELSPECSDataLoaded) {
WellConstPtr well1 = sched->getWell("W_1");
BOOST_CHECK(!well1->hasBeenDefined(2));
BOOST_CHECK(well1->hasBeenDefined(3));
BOOST_CHECK_EQUAL(30, well1->getHeadI());
BOOST_CHECK_EQUAL(37, well1->getHeadJ());
BOOST_CHECK_EQUAL(29, well1->getHeadI());
BOOST_CHECK_EQUAL(36, well1->getHeadJ());
BOOST_CHECK_EQUAL(3.33, well1->getRefDepth());
WellConstPtr well2 = sched->getWell("W_2");
BOOST_CHECK(!well2->hasBeenDefined(2));
BOOST_CHECK(well2->hasBeenDefined(3));
BOOST_CHECK_EQUAL(20, well2->getHeadI());
BOOST_CHECK_EQUAL(51, well2->getHeadJ());
BOOST_CHECK_EQUAL(19, well2->getHeadI());
BOOST_CHECK_EQUAL(50, well2->getHeadJ());
BOOST_CHECK_EQUAL(3.92, well2->getRefDepth());
WellConstPtr well3 = sched->getWell("W_3");
BOOST_CHECK(!well3->hasBeenDefined(2));
BOOST_CHECK(well3->hasBeenDefined(3));
BOOST_CHECK_EQUAL(31, well3->getHeadI());
BOOST_CHECK_EQUAL(18, well3->getHeadJ());
BOOST_CHECK_EQUAL(30, well3->getHeadI());
BOOST_CHECK_EQUAL(17, well3->getHeadJ());
BOOST_CHECK_EQUAL(2.33, well3->getRefDepth());
}