Added new EclipseGrid constructor
The new EclipseGrid constructor EclipseGrid(nx,ny,nz , GridSection) allows the construction of a GRID without the RUNSPEC section.
This commit is contained in:
@@ -55,17 +55,29 @@ namespace Opm {
|
|||||||
record->getItem("NY")->getInt(0) ,
|
record->getItem("NY")->getInt(0) ,
|
||||||
record->getItem("NZ")->getInt(0) };
|
record->getItem("NZ")->getInt(0) };
|
||||||
|
|
||||||
if (hasCornerPointKeywords(gridSection)) {
|
initGrid( dims , gridSection );
|
||||||
initCornerPointGrid(dims , gridSection);
|
|
||||||
} else if (hasCartesianKeywords(gridSection)) {
|
|
||||||
initCartesianGrid(dims , gridSection);
|
|
||||||
} else
|
|
||||||
throw std::invalid_argument("The GRID section must have COORD / ZCORN or D?? + TOPS keywords");
|
|
||||||
|
|
||||||
} else
|
} else
|
||||||
throw std::invalid_argument("The RUNSPEC section must have the DIMENS keyword with grid dimensions");
|
throw std::invalid_argument("The RUNSPEC section must have the DIMENS keyword with grid dimensions");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
EclipseGrid::EclipseGrid(int nx, int ny , int nz , std::shared_ptr<const GRIDSection> gridSection) {
|
||||||
|
std::vector<int> dims = {nx , ny , nz};
|
||||||
|
initGrid( dims , gridSection );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EclipseGrid::initGrid( const std::vector<int>& dims , std::shared_ptr<const GRIDSection> gridSection ) {
|
||||||
|
if (hasCornerPointKeywords(gridSection)) {
|
||||||
|
initCornerPointGrid(dims , gridSection);
|
||||||
|
} else if (hasCartesianKeywords(gridSection)) {
|
||||||
|
initCartesianGrid(dims , gridSection);
|
||||||
|
} else
|
||||||
|
throw std::invalid_argument("The GRID section must have COORD / ZCORN or D?? + TOPS keywords");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool EclipseGrid::equal(const EclipseGrid& other) const {
|
bool EclipseGrid::equal(const EclipseGrid& other) const {
|
||||||
return ecl_grid_compare( m_grid.get() , other.m_grid.get() , true , false , false );
|
return ecl_grid_compare( m_grid.get() , other.m_grid.get() , true , false , false );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ namespace Opm {
|
|||||||
EclipseGrid(const std::string& filename);
|
EclipseGrid(const std::string& filename);
|
||||||
EclipseGrid(const ecl_grid_type * src_ptr);
|
EclipseGrid(const ecl_grid_type * src_ptr);
|
||||||
EclipseGrid(std::shared_ptr<const RUNSPECSection> runspecSection, std::shared_ptr<const GRIDSection> gridSection);
|
EclipseGrid(std::shared_ptr<const RUNSPECSection> runspecSection, std::shared_ptr<const GRIDSection> gridSection);
|
||||||
|
EclipseGrid(int nx, int ny , int nz , std::shared_ptr<const GRIDSection> gridSection);
|
||||||
|
|
||||||
|
|
||||||
static bool hasCornerPointKeywords(std::shared_ptr<const GRIDSection> gridSection);
|
static bool hasCornerPointKeywords(std::shared_ptr<const GRIDSection> gridSection);
|
||||||
@@ -67,6 +68,7 @@ namespace Opm {
|
|||||||
void assertCornerPointKeywords( const std::vector<int>& dims , std::shared_ptr<const GRIDSection> gridSection ) const ;
|
void assertCornerPointKeywords( const std::vector<int>& dims , std::shared_ptr<const GRIDSection> gridSection ) const ;
|
||||||
void initDTOPSGrid(const std::vector<int>& dims , std::shared_ptr<const GRIDSection> gridSection);
|
void initDTOPSGrid(const std::vector<int>& dims , std::shared_ptr<const GRIDSection> gridSection);
|
||||||
void initDVDEPTHZGrid(const std::vector<int>& dims , std::shared_ptr<const GRIDSection> gridSection);
|
void initDVDEPTHZGrid(const std::vector<int>& dims , std::shared_ptr<const GRIDSection> gridSection);
|
||||||
|
void initGrid( const std::vector<int>& dims , std::shared_ptr<const GRIDSection> gridSection );
|
||||||
static bool hasDVDEPTHZKeywords(std::shared_ptr<const GRIDSection> gridSection);
|
static bool hasDVDEPTHZKeywords(std::shared_ptr<const GRIDSection> gridSection);
|
||||||
static bool hasDTOPSKeywords(std::shared_ptr<const GRIDSection> gridSection);
|
static bool hasDTOPSKeywords(std::shared_ptr<const GRIDSection> gridSection);
|
||||||
static void assertVectorSize(const std::vector<double>& vector , size_t expectedSize , const std::string& msg);
|
static void assertVectorSize(const std::vector<double>& vector , size_t expectedSize , const std::string& msg);
|
||||||
|
|||||||
@@ -83,9 +83,11 @@ static Opm::DeckPtr createCPDeck() {
|
|||||||
" 10 10 10 /\n"
|
" 10 10 10 /\n"
|
||||||
"GRID\n"
|
"GRID\n"
|
||||||
"COORD\n"
|
"COORD\n"
|
||||||
"1000*0.25 /\n"
|
" 726*1 / \n"
|
||||||
"ZCORN\n"
|
"ZCORN \n"
|
||||||
"1000*0.25 /\n"
|
" 8000*1 / \n"
|
||||||
|
"ACTNUM \n"
|
||||||
|
" 1000*1 / \n"
|
||||||
"EDIT\n"
|
"EDIT\n"
|
||||||
"\n";
|
"\n";
|
||||||
|
|
||||||
@@ -571,3 +573,30 @@ BOOST_AUTO_TEST_CASE(Fwrite) {
|
|||||||
remove("TEST.EGRID");
|
remove("TEST.EGRID");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(ConstructorNORUNSPEC) {
|
||||||
|
const char *deckData =
|
||||||
|
"GRID\n"
|
||||||
|
"COORD\n"
|
||||||
|
" 726*1 / \n"
|
||||||
|
"ZCORN \n"
|
||||||
|
" 8000*1 / \n"
|
||||||
|
"ACTNUM \n"
|
||||||
|
" 1000*1 / \n"
|
||||||
|
"EDIT\n"
|
||||||
|
"\n";
|
||||||
|
|
||||||
|
Opm::ParserPtr parser(new Opm::Parser());
|
||||||
|
Opm::DeckConstPtr deck1 = parser->parseString(deckData) ;
|
||||||
|
Opm::DeckConstPtr deck2 = createCPDeck();
|
||||||
|
std::shared_ptr<Opm::GRIDSection> gridSection1(new Opm::GRIDSection(deck1) );
|
||||||
|
std::shared_ptr<Opm::GRIDSection> gridSection2(new Opm::GRIDSection(deck2) );
|
||||||
|
std::shared_ptr<Opm::RUNSPECSection> runspecSection2(new Opm::RUNSPECSection(deck2) );
|
||||||
|
|
||||||
|
Opm::EclipseGrid grid1(10,10,10 , gridSection1 );
|
||||||
|
Opm::EclipseGrid grid2(runspecSection2 , gridSection2 );
|
||||||
|
|
||||||
|
BOOST_CHECK(grid1.equal( grid2 ));
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user