Rename PhasePressureSaturationComputer -> InitialStateComputer.

Also add (unused so far) rs_ field to class.
This commit is contained in:
Atgeirr Flø Rasmussen 2014-02-27 09:08:39 +01:00 committed by Andreas Lauser
parent a0d3bf6dd7
commit 5ee2c0cbc9
2 changed files with 36 additions and 23 deletions

View File

@ -243,19 +243,20 @@ namespace Opm
} }
template <class InputDeck> template <class InputDeck>
class PhasePressureSaturationComputer; class InitialStateComputer;
template <> template <>
class PhasePressureSaturationComputer<Opm::EclipseGridParser> { class InitialStateComputer<Opm::EclipseGridParser> {
public: public:
PhasePressureSaturationComputer(const BlackoilPropertiesInterface& props, InitialStateComputer(const BlackoilPropertiesInterface& props,
const EclipseGridParser& deck , const EclipseGridParser& deck ,
const UnstructuredGrid& G , const UnstructuredGrid& G ,
const double grav = unit::gravity) const double grav = unit::gravity)
: pp_(props.numPhases(), : pp_(props.numPhases(),
std::vector<double>(G.number_of_cells)), std::vector<double>(G.number_of_cells)),
sat_(props.numPhases(), sat_(props.numPhases(),
std::vector<double>(G.number_of_cells)) std::vector<double>(G.number_of_cells)),
rs_(G.number_of_cells)
{ {
// Get the equilibration records. // Get the equilibration records.
const std::vector<EquilRecord> rec = getEquil(deck); const std::vector<EquilRecord> rec = getEquil(deck);
@ -287,11 +288,11 @@ namespace Opm
calcPressSat(eqlmap, rec, props, G, grav); calcPressSat(eqlmap, rec, props, G, grav);
} }
typedef std::vector<double> PVal; typedef std::vector<double> Vec;
typedef std::vector<PVal> PPress; typedef std::vector<Vec> PVec; // One per phase.
const PPress& press() const { return pp_; } const PVec& press() const { return pp_; }
const PPress& saturation() const { return sat_; } const PVec& saturation() const { return sat_; }
private: private:
typedef DensityCalculator<BlackoilPropertiesInterface> RhoCalc; typedef DensityCalculator<BlackoilPropertiesInterface> RhoCalc;
@ -299,8 +300,9 @@ namespace Opm
std::vector< std::shared_ptr<Miscibility::RsFunction> > rs_func_; std::vector< std::shared_ptr<Miscibility::RsFunction> > rs_func_;
PPress pp_; PVec pp_;
PPress sat_; PVec sat_;
Vec rs_;
template <class RMap> template <class RMap>
void void
@ -325,12 +327,13 @@ namespace Opm
rs_func_[r], std::make_shared<NoMix>(), rs_func_[r], std::make_shared<NoMix>(),
props.phaseUsage()); props.phaseUsage());
const PPress press = phasePressures(G, eqreg, cells, grav); const PVec press = phasePressures(G, eqreg, cells, grav);
const PPress sat = phaseSaturations(eqreg, cells, props, press); const PVec sat = phaseSaturations(eqreg, cells, props, press);
const Vec rs(cells.size());// = gasOilRatio();
for (int p = 0, np = props.numPhases(); p < np; ++p) { for (int p = 0, np = props.numPhases(); p < np; ++p) {
PVal& d = pp_[p]; Vec& d = pp_[p];
PVal::const_iterator s = press[p].begin(); Vec::const_iterator s = press[p].begin();
for (typename RMap::CellRange::const_iterator for (typename RMap::CellRange::const_iterator
c = cells.begin(), c = cells.begin(),
e = cells.end(); e = cells.end();
@ -340,8 +343,8 @@ namespace Opm
} }
} }
for (int p = 0, np = props.numPhases(); p < np; ++p) { for (int p = 0, np = props.numPhases(); p < np; ++p) {
PVal& d = sat_[p]; Vec& d = sat_[p];
PVal::const_iterator s = sat[p].begin(); Vec::const_iterator s = sat[p].begin();
for (typename RMap::CellRange::const_iterator for (typename RMap::CellRange::const_iterator
c = cells.begin(), c = cells.begin(),
e = cells.end(); e = cells.end();
@ -350,6 +353,16 @@ namespace Opm
d[*c] = *s; d[*c] = *s;
} }
} }
Vec::const_iterator s = rs.begin();
Vec& d = rs_;
for (typename RMap::CellRange::const_iterator
c = cells.begin(),
e = cells.end();
c != e; ++c, ++s)
{
d[*c] = *s;
}
} }
} }

View File

@ -328,7 +328,7 @@ BOOST_AUTO_TEST_CASE (DeckAllDead)
grid(create_grid_cart3d(1, 1, 10), destroy_grid); grid(create_grid_cart3d(1, 1, 10), destroy_grid);
Opm::EclipseGridParser deck("deadfluids.DATA"); Opm::EclipseGridParser deck("deadfluids.DATA");
Opm::BlackoilPropertiesFromDeck props(deck, *grid, false); Opm::BlackoilPropertiesFromDeck props(deck, *grid, false);
Opm::Equil::DeckDependent::PhasePressureSaturationComputer<Opm::EclipseGridParser> comp(props, deck, *grid, 10.0); Opm::Equil::DeckDependent::InitialStateComputer<Opm::EclipseGridParser> comp(props, deck, *grid, 10.0);
const auto& pressures = comp.press(); const auto& pressures = comp.press();
BOOST_REQUIRE(pressures.size() == 3); BOOST_REQUIRE(pressures.size() == 3);
BOOST_REQUIRE(int(pressures[0].size()) == grid->number_of_cells); BOOST_REQUIRE(int(pressures[0].size()) == grid->number_of_cells);
@ -405,7 +405,7 @@ BOOST_AUTO_TEST_CASE (DeckWithCapillary)
Opm::EclipseGridParser deck("capillary.DATA"); Opm::EclipseGridParser deck("capillary.DATA");
Opm::BlackoilPropertiesFromDeck props(deck, grid, false); Opm::BlackoilPropertiesFromDeck props(deck, grid, false);
Opm::Equil::DeckDependent::PhasePressureSaturationComputer<Opm::EclipseGridParser> comp(props, deck, grid, 10.0); Opm::Equil::DeckDependent::InitialStateComputer<Opm::EclipseGridParser> comp(props, deck, grid, 10.0);
const auto& pressures = comp.press(); const auto& pressures = comp.press();
BOOST_REQUIRE(pressures.size() == 3); BOOST_REQUIRE(pressures.size() == 3);
BOOST_REQUIRE(int(pressures[0].size()) == grid.number_of_cells); BOOST_REQUIRE(int(pressures[0].size()) == grid.number_of_cells);
@ -443,7 +443,7 @@ BOOST_AUTO_TEST_CASE (DeckWithCapillaryOverlap)
Opm::EclipseGridParser deck("capillary_overlap.DATA"); Opm::EclipseGridParser deck("capillary_overlap.DATA");
Opm::BlackoilPropertiesFromDeck props(deck, grid, false); Opm::BlackoilPropertiesFromDeck props(deck, grid, false);
Opm::Equil::DeckDependent::PhasePressureSaturationComputer<Opm::EclipseGridParser> comp(props, deck, grid, 10.0); Opm::Equil::DeckDependent::InitialStateComputer<Opm::EclipseGridParser> comp(props, deck, grid, 10.0);
const auto& pressures = comp.press(); const auto& pressures = comp.press();
BOOST_REQUIRE(pressures.size() == 3); BOOST_REQUIRE(pressures.size() == 3);
BOOST_REQUIRE(int(pressures[0].size()) == grid.number_of_cells); BOOST_REQUIRE(int(pressures[0].size()) == grid.number_of_cells);
@ -488,7 +488,7 @@ BOOST_AUTO_TEST_CASE (DeckWithLiveOil)
Opm::EclipseGridParser deck("equil_liveoil.DATA"); Opm::EclipseGridParser deck("equil_liveoil.DATA");
Opm::BlackoilPropertiesFromDeck props(deck, grid, false); Opm::BlackoilPropertiesFromDeck props(deck, grid, false);
Opm::Equil::DeckDependent::PhasePressureSaturationComputer<Opm::EclipseGridParser> comp(props, deck, grid, 10.0); Opm::Equil::DeckDependent::InitialStateComputer<Opm::EclipseGridParser> comp(props, deck, grid, 10.0);
const auto& pressures = comp.press(); const auto& pressures = comp.press();
BOOST_REQUIRE(pressures.size() == 3); BOOST_REQUIRE(pressures.size() == 3);
BOOST_REQUIRE(int(pressures[0].size()) == grid.number_of_cells); BOOST_REQUIRE(int(pressures[0].size()) == grid.number_of_cells);