From c4b5a7e3026b746baf2eaa4458ee538544baa51b Mon Sep 17 00:00:00 2001 From: osae Date: Thu, 26 Jun 2014 14:46:57 +0200 Subject: [PATCH] Make use of EclipseState for EQLNUM and SWATINIT. --- opm/core/simulator/initStateEquil.hpp | 11 +++++++---- opm/core/simulator/initStateEquil_impl.hpp | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/opm/core/simulator/initStateEquil.hpp b/opm/core/simulator/initStateEquil.hpp index 273271f2d..b869aa977 100644 --- a/opm/core/simulator/initStateEquil.hpp +++ b/opm/core/simulator/initStateEquil.hpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -62,6 +63,7 @@ namespace Opm void initStateEquil(const UnstructuredGrid& grid, const BlackoilPropertiesInterface& props, const Opm::DeckConstPtr deck, + const Opm::EclipseStateConstPtr eclipseState, const double gravity, BlackoilState& state); @@ -230,13 +232,14 @@ namespace Opm inline std::vector equilnum(const Opm::DeckConstPtr deck, + const Opm::EclipseStateConstPtr eclipseState, const UnstructuredGrid& G ) { std::vector eqlnum; if (deck->hasKeyword("EQLNUM")) { eqlnum.resize(G.number_of_cells); const std::vector& e = - deck->getKeyword("EQLNUM")->getIntData(); + eclipseState->getIntGridProperty("EQLNUM")->getData(); const int* gc = G.global_cell; for (int cell = 0; cell < G.number_of_cells; ++cell) { const int deck_pos = (gc == NULL) ? cell : gc[cell]; @@ -257,6 +260,7 @@ namespace Opm public: InitialStateComputer(BlackoilPropertiesInterface& props, const Opm::DeckConstPtr deck, + const Opm::EclipseStateConstPtr eclipseState, const UnstructuredGrid& G , const double grav = unit::gravity) : pp_(props.numPhases(), @@ -270,7 +274,7 @@ namespace Opm const std::vector rec = getEquil(deck); // Create (inverse) region mapping. - const RegionMapping<> eqlmap(equilnum(deck, G)); + const RegionMapping<> eqlmap(equilnum(deck, eclipseState, G)); // Create Rs functions. rs_func_.reserve(rec.size()); @@ -338,14 +342,13 @@ namespace Opm // Check for presence of kw SWATINIT if (deck->hasKeyword("SWATINIT")) { - const std::vector& swat_init = deck->getKeyword("SWATINIT")->getSIDoubleData(); + const std::vector& swat_init = eclipseState->getDoubleGridProperty("SWATINIT")->getData(); swat_init_.resize(G.number_of_cells); const int* gc = G.global_cell; for (int c = 0; c < G.number_of_cells; ++c) { const int deck_pos = (gc == NULL) ? c : gc[c]; swat_init_[c] = swat_init[deck_pos]; } - } // Compute pressures, saturations, rs and rv factors. diff --git a/opm/core/simulator/initStateEquil_impl.hpp b/opm/core/simulator/initStateEquil_impl.hpp index 74dbba1f7..553b35969 100644 --- a/opm/core/simulator/initStateEquil_impl.hpp +++ b/opm/core/simulator/initStateEquil_impl.hpp @@ -755,11 +755,12 @@ namespace Opm void initStateEquil(const UnstructuredGrid& grid, BlackoilPropertiesInterface& props, const Opm::DeckConstPtr deck, + const Opm::EclipseStateConstPtr eclipseState, const double gravity, BlackoilState& state) { typedef Equil::DeckDependent::InitialStateComputer ISC; - ISC isc(props, deck, grid, gravity); + ISC isc(props, deck, eclipseState, grid, gravity); const auto pu = props.phaseUsage(); const int ref_phase = pu.phase_used[BlackoilPhases::Liquid] ? pu.phase_pos[BlackoilPhases::Liquid]