Merge pull request #1810 from blattms/support-pinch-nogap
Support querying GAP/NOGAP mode for Pinch form EclipseGrid.
This commit is contained in:
@@ -110,6 +110,7 @@ namespace Opm {
|
||||
double getPinchThresholdThickness( ) const;
|
||||
PinchMode::ModeEnum getPinchOption( ) const;
|
||||
PinchMode::ModeEnum getMultzOption( ) const;
|
||||
PinchMode::ModeEnum getPinchGapMode( ) const;
|
||||
|
||||
MinpvMode::ModeEnum getMinpvMode() const;
|
||||
const std::vector<double>& getMinpvVector( ) const;
|
||||
@@ -196,6 +197,7 @@ namespace Opm {
|
||||
Value<double> m_pinch;
|
||||
PinchMode::ModeEnum m_pinchoutMode;
|
||||
PinchMode::ModeEnum m_multzMode;
|
||||
PinchMode::ModeEnum m_pinchGapMode;
|
||||
|
||||
bool m_circle = false;
|
||||
|
||||
|
||||
@@ -28,7 +28,9 @@ namespace Opm {
|
||||
enum ModeEnum {
|
||||
ALL = 1,
|
||||
TOPBOT = 2,
|
||||
TOP = 3
|
||||
TOP = 3,
|
||||
GAP = 4,
|
||||
NOGAP = 5,
|
||||
};
|
||||
|
||||
const std::string PinchMode2String(const ModeEnum enumValue);
|
||||
|
||||
@@ -68,7 +68,8 @@ EclipseGrid::EclipseGrid(std::array<int, 3>& dims ,
|
||||
m_minpvMode(MinpvMode::ModeEnum::Inactive),
|
||||
m_pinch("PINCH"),
|
||||
m_pinchoutMode(PinchMode::ModeEnum::TOPBOT),
|
||||
m_multzMode(PinchMode::ModeEnum::TOP)
|
||||
m_multzMode(PinchMode::ModeEnum::TOP),
|
||||
m_pinchGapMode(PinchMode::ModeEnum::GAP)
|
||||
{
|
||||
initCornerPointGrid( coord , zcorn , actnum , mapaxes );
|
||||
}
|
||||
@@ -84,7 +85,8 @@ EclipseGrid::EclipseGrid(const std::string& fileName )
|
||||
m_minpvMode(MinpvMode::ModeEnum::Inactive),
|
||||
m_pinch("PINCH"),
|
||||
m_pinchoutMode(PinchMode::ModeEnum::TOPBOT),
|
||||
m_multzMode(PinchMode::ModeEnum::TOP)
|
||||
m_multzMode(PinchMode::ModeEnum::TOP),
|
||||
m_pinchGapMode(PinchMode::ModeEnum::GAP)
|
||||
{
|
||||
|
||||
Opm::EclIO::EclFile egridfile(fileName);
|
||||
@@ -99,7 +101,8 @@ EclipseGrid::EclipseGrid(size_t nx, size_t ny , size_t nz,
|
||||
m_minpvMode(MinpvMode::ModeEnum::Inactive),
|
||||
m_pinch("PINCH"),
|
||||
m_pinchoutMode(PinchMode::ModeEnum::TOPBOT),
|
||||
m_multzMode(PinchMode::ModeEnum::TOP)
|
||||
m_multzMode(PinchMode::ModeEnum::TOP),
|
||||
m_pinchGapMode(PinchMode::ModeEnum::GAP)
|
||||
{
|
||||
|
||||
m_coord.reserve((nx+1)*(ny+1)*6);
|
||||
@@ -207,7 +210,8 @@ EclipseGrid::EclipseGrid(const Deck& deck, const int * actnum)
|
||||
m_minpvMode(MinpvMode::ModeEnum::Inactive),
|
||||
m_pinch("PINCH"),
|
||||
m_pinchoutMode(PinchMode::ModeEnum::TOPBOT),
|
||||
m_multzMode(PinchMode::ModeEnum::TOP)
|
||||
m_multzMode(PinchMode::ModeEnum::TOP),
|
||||
m_pinchGapMode(PinchMode::ModeEnum::GAP)
|
||||
{
|
||||
|
||||
if (deck.hasKeyword("GDFILE")){
|
||||
@@ -309,6 +313,8 @@ EclipseGrid::EclipseGrid(const Deck& deck, const int * actnum)
|
||||
|
||||
auto multzString = record.getItem<ParserKeywords::PINCH::MULTZ_OPTION>().get< std::string >(0);
|
||||
m_multzMode = PinchMode::PinchModeFromString(multzString);
|
||||
auto pinchGapString = record.getItem<ParserKeywords::PINCH::CONTROL_OPTION>().get< std::string >(0);
|
||||
m_pinchGapMode = PinchMode::PinchModeFromString(pinchGapString);
|
||||
}
|
||||
|
||||
if (deck.hasKeyword<ParserKeywords::MINPV>() && deck.hasKeyword<ParserKeywords::MINPVFIL>()) {
|
||||
@@ -484,6 +490,10 @@ EclipseGrid::EclipseGrid(const Deck& deck, const int * actnum)
|
||||
return m_minpvMode;
|
||||
}
|
||||
|
||||
PinchMode::ModeEnum EclipseGrid::getPinchGapMode() const {
|
||||
return m_pinchGapMode;
|
||||
}
|
||||
|
||||
const std::vector<double>& EclipseGrid::getMinpvVector( ) const {
|
||||
return m_minpvVector;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,13 @@ namespace Opm {
|
||||
case ModeEnum::TOP:
|
||||
stringValue = "TOP";
|
||||
break;
|
||||
|
||||
case ModeEnum::GAP:
|
||||
stringValue = "GAP";
|
||||
break;
|
||||
case ModeEnum::NOGAP:
|
||||
stringValue = "NOGAP";
|
||||
break;
|
||||
}
|
||||
|
||||
return stringValue;
|
||||
@@ -52,6 +59,8 @@ namespace Opm {
|
||||
if (s == "ALL") { mode = ModeEnum::ALL; }
|
||||
else if (s == "TOPBOT") { mode = ModeEnum::TOPBOT; }
|
||||
else if (s == "TOP") { mode = ModeEnum::TOP; }
|
||||
else if (s == "GAP") { mode = ModeEnum::GAP; }
|
||||
else if (s == "NOGAP") { mode = ModeEnum::NOGAP; }
|
||||
else {
|
||||
std::string msg = "Unsupported pinchout mode " + s;
|
||||
throw std::invalid_argument(msg);
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/EclipseGrid.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/GridDims.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/NNC.hpp>
|
||||
#include <opm/parser/eclipse/EclipseState/Grid/PinchMode.hpp>
|
||||
|
||||
#include <opm/parser/eclipse/Parser/Parser.hpp>
|
||||
|
||||
@@ -211,6 +212,27 @@ static Opm::Deck createPinchedCPDeck() {
|
||||
return parser.parseString( deckData) ;
|
||||
}
|
||||
|
||||
static Opm::Deck createPinchedNOGAPCPDeck() {
|
||||
const char* deckData =
|
||||
"RUNSPEC\n"
|
||||
"\n"
|
||||
"DIMENS\n"
|
||||
" 10 10 10 /\n"
|
||||
"GRID\n"
|
||||
"COORD\n"
|
||||
" 726*1 / \n"
|
||||
"ZCORN \n"
|
||||
" 8000*1 / \n"
|
||||
"ACTNUM \n"
|
||||
" 1000*1 / \n"
|
||||
"PINCH \n"
|
||||
" 0.2 NOGAP / \n"
|
||||
"EDIT\n"
|
||||
"\n";
|
||||
|
||||
Opm::Parser parser;
|
||||
return parser.parseString( deckData) ;
|
||||
}
|
||||
|
||||
static Opm::Deck createMinpvDefaultCPDeck() {
|
||||
const char* deckData =
|
||||
@@ -794,9 +816,11 @@ BOOST_AUTO_TEST_CASE(ConstructorNoSections) {
|
||||
BOOST_AUTO_TEST_CASE(ConstructorNORUNSPEC_PINCH) {
|
||||
auto deck1 = createCPDeck();
|
||||
auto deck2 = createPinchedCPDeck();
|
||||
auto deck3 = createPinchedNOGAPCPDeck();
|
||||
|
||||
Opm::EclipseGrid grid1(deck1);
|
||||
Opm::EclipseGrid grid2(deck2);
|
||||
Opm::EclipseGrid grid3(deck3);
|
||||
|
||||
BOOST_CHECK(!grid1.equal( grid2 ));
|
||||
|
||||
@@ -804,6 +828,8 @@ BOOST_AUTO_TEST_CASE(ConstructorNORUNSPEC_PINCH) {
|
||||
BOOST_CHECK_THROW(grid1.getPinchThresholdThickness(), std::logic_error);
|
||||
BOOST_CHECK(grid2.isPinchActive());
|
||||
BOOST_CHECK_EQUAL(grid2.getPinchThresholdThickness(), 0.2);
|
||||
BOOST_CHECK_EQUAL(grid2.getPinchGapMode(), Opm::PinchMode::ModeEnum::GAP);
|
||||
BOOST_CHECK_EQUAL(grid3.getPinchGapMode(), Opm::PinchMode::ModeEnum::NOGAP);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ConstructorMINPV) {
|
||||
|
||||
Reference in New Issue
Block a user