Fix bug in RS initialisation.

Also throw if default init is specified and datum != goc depth.
This commit is contained in:
Atgeirr Flø Rasmussen 2014-02-27 14:48:14 +01:00 committed by Andreas Lauser
parent 0bfa30de7b
commit 1923de2694
3 changed files with 11 additions and 5 deletions

View File

@ -275,7 +275,13 @@ namespace Opm
// Default initialisation: constant Rs below contact, saturated above.
for (size_t i = 0; i < rec.size(); ++i) {
const int cell = *(eqlmap.cells(i + 1).begin());
const double p_contact = rec[i].goc.press;
if (rec[i].goc.depth != rec[i].main.depth) {
OPM_THROW(std::runtime_error,
"Cannot initialise: when no explicit RSVD table is given, \n"
"datum depth must be at the gas-oil-contact. "
"In EQUIL region " << (i + 1) << " (counting from 1), this does not hold.");
}
const double p_contact = rec[i].main.press;
rs_func_.push_back(std::make_shared<Miscibility::RsSatAtContact>(props, cell, p_contact));
}
}

View File

@ -42,5 +42,5 @@ DENSITY
/
EQUIL
50 150 50 0.25 45 0.35
45 150 50 0.25 45 0.35
/

View File

@ -499,9 +499,9 @@ BOOST_AUTO_TEST_CASE (DeckWithLiveOil)
// solver, and it is unclear if we should check it against
// the true answer or something else.
const double reltol = 1.0e-6;
BOOST_CHECK_CLOSE(pressures[0][first] , 1.45e7 , reltol);
BOOST_CHECK_CLOSE(pressures[0][last ] , 1.545e7 , reltol);
BOOST_CHECK_CLOSE(pressures[1][last] , 1.5489764605846416e7 , reltol);
BOOST_CHECK_CLOSE(pressures[0][first] , 1.4551328443106037e7 , reltol);
BOOST_CHECK_CLOSE(pressures[0][last ] , 1.5501328443106037e7 , reltol);
BOOST_CHECK_CLOSE(pressures[1][last] , 1.5541598197355453e7 , reltol);
const auto& sats = comp.saturation();
// std::cout << "Saturations:\n";