Merge pull request #1122 from atgeirr/fix-type-bug-in-equil

Fix type bug in equil
This commit is contained in:
Atgeirr Flø Rasmussen 2017-11-14 14:40:47 +01:00 committed by GitHub
commit f29f1b49d1
2 changed files with 25 additions and 26 deletions

View File

@ -702,7 +702,7 @@ namespace Opm
const BlackoilPropertiesInterface& props_; const BlackoilPropertiesInterface& props_;
const int phase_; const int phase_;
const int cell_; const int cell_;
const int target_pc_; const double target_pc_;
mutable double s_[BlackoilPhases::MaxNumPhases]; mutable double s_[BlackoilPhases::MaxNumPhases];
mutable double pc_[BlackoilPhases::MaxNumPhases]; mutable double pc_[BlackoilPhases::MaxNumPhases];
}; };
@ -775,7 +775,7 @@ namespace Opm
const int phase1_; const int phase1_;
const int phase2_; const int phase2_;
const int cell_; const int cell_;
const int target_pc_; const double target_pc_;
mutable double s_[BlackoilPhases::MaxNumPhases]; mutable double s_[BlackoilPhases::MaxNumPhases];
mutable double pc_[BlackoilPhases::MaxNumPhases]; mutable double pc_[BlackoilPhases::MaxNumPhases];
}; };

View File

@ -468,9 +468,9 @@ BOOST_AUTO_TEST_CASE (DeckWithCapillary)
const auto& sats = comp.saturation(); const auto& sats = comp.saturation();
const std::vector<double> s[3]{ const std::vector<double> s[3]{
{ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.42192000000000002, 0.77802666666666664, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.42190294373815257, 0.77800802072306474, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 0, 0, 0, 0.00736, 0.792746666666, 0.8, 0.8, 0.8, 0.8, 0.57807999999999993, 0.22197333333333336, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0.0073481611123183965, 0.79272270823081337, 0.8, 0.8, 0.8, 0.8, 0.57809705626184749, 0.22199197927693526, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0.8, 0.8, 0.8, 0.79264, 0.007253333333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } { 0.8, 0.8, 0.8, 0.79265183888768165, 0.0072772917691866562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}; };
for (int phase = 0; phase < 3; ++phase) { for (int phase = 0; phase < 3; ++phase) {
BOOST_REQUIRE(sats[phase].size() == s[phase].size()); BOOST_REQUIRE(sats[phase].size() == s[phase].size());
@ -529,9 +529,9 @@ BOOST_AUTO_TEST_CASE (DeckWithCapillaryOverlap)
}; };
const std::vector<double> s_opm[3]{ // opm const std::vector<double> s_opm[3]{ // opm
{ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2289309090909091, 0.53406545454545451, 0.78458, 0.9154, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.22892931226886132, 0.53406457830052489, 0.78457075254244724, 0.91539712466977541, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2002466666666666, 0.0846, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.20023624994125844, 0.084602875330224592, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.77106909090909093, 0.46593454545454549, 0.015173333333333336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } { 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.77107068773113863, 0.46593542169947511, 0.015192997516294321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}; };
for (int phase = 0; phase < 3; ++phase) { for (int phase = 0; phase < 3; ++phase) {
BOOST_REQUIRE(sats[phase].size() == s_opm[phase].size()); BOOST_REQUIRE(sats[phase].size() == s_opm[phase].size());
@ -591,9 +591,9 @@ BOOST_AUTO_TEST_CASE (DeckWithLiveOil)
{ 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.77102, 0.46578, 0.01458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } { 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.77102, 0.46578, 0.01458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}; };
const std::vector<double> s_opm[3]{ // opm const std::vector<double> s_opm[3]{ // opm
{ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2291709091, 0.5343054545, 0.78472, 0.91529, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.22916963446461344, 0.53430490523774521, 0.78471886612242092, 0.91528324362210933, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2005866667, 0.08471, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.20057438297017782, 0.084716756377890667, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.7708290909, 0.4656945455, 0.01469333333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } { 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.77083036553538653, 0.46569509476225479, 0.014706750907401245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}; };
for (int phase = 0; phase < 3; ++phase) { for (int phase = 0; phase < 3; ++phase) {
BOOST_REQUIRE(sats[phase].size() == s_opm[phase].size()); BOOST_REQUIRE(sats[phase].size() == s_opm[phase].size());
@ -645,7 +645,7 @@ BOOST_AUTO_TEST_CASE (DeckWithLiveGas)
// but the answer we are checking is the result of an ODE // but the answer we are checking is the result of an ODE
// solver, and it is unclear if we should check it against // solver, and it is unclear if we should check it against
// the true answer or something else. // the true answer or something else.
const double reltol = 5.0e-3; const double reltol = 1.0e-3;
const double reltol_ecl = 1.0; const double reltol_ecl = 1.0;
BOOST_CHECK_CLOSE(pressures[0][first], 1.48215e+07, reltol_ecl); // eclipse BOOST_CHECK_CLOSE(pressures[0][first], 1.48215e+07, reltol_ecl); // eclipse
BOOST_CHECK_CLOSE(pressures[0][last], 1.54801e+07, reltol_ecl); BOOST_CHECK_CLOSE(pressures[0][last], 1.54801e+07, reltol_ecl);
@ -702,8 +702,7 @@ BOOST_AUTO_TEST_CASE (DeckWithLiveGas)
0.25104999E-03, 0.25104999E-03, 0.25104999E-03, 0.25104999E-03}; 0.25104999E-03, 0.25104999E-03, 0.25104999E-03, 0.25104999E-03};
for (size_t i = 0; i < rv_opm.size(); ++i) { for (size_t i = 0; i < rv_opm.size(); ++i) {
//std::cout << std::setprecision(10) << sats[phase][i] << '\n'; CHECK(rv[i], rv_opm[i], reltol);
CHECK(rv[i], rv_opm[i], 100.*reltol);
CHECK(rv[i], rv_ecl[i], reltol_ecl); CHECK(rv[i], rv_ecl[i], reltol_ecl);
} }
} }
@ -755,16 +754,16 @@ BOOST_AUTO_TEST_CASE (DeckWithRSVDAndRVVD)
}; };
const std::vector<double> s_opm[3]{ // opm const std::vector<double> s_opm[3]{ // opm
{ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.22232000, 0.52882909, 0.78153000, 0.91817000, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.22231423543119974, 0.52882640735211706, 0.78152142505479982, 0.91816512259416283, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.19636333, 0.08183000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.19636279642563928, 0.08183487740583717, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.77768000, 0.47117091, 0.02210667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } { 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.77768576456880023, 0.47117359264788294, 0.022115778519560897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}; };
for (int phase = 0; phase < 3; ++phase) { for (int phase = 0; phase < 3; ++phase) {
BOOST_REQUIRE(sats[phase].size() == s_opm[phase].size()); BOOST_REQUIRE(sats[phase].size() == s_opm[phase].size());
for (size_t i = 0; i < s_opm[phase].size(); ++i) { for (size_t i = 0; i < s_opm[phase].size(); ++i) {
//std::cout << std::setprecision(10) << sats[phase][i] << '\n'; //std::cout << std::setprecision(10) << sats[phase][i] << '\n';
CHECK(sats[phase][i], s_opm[phase][i], 100.*reltol); CHECK(sats[phase][i], s_opm[phase][i], reltol);
CHECK(sats[phase][i], s_ecl[phase][i], reltol_ecl); CHECK(sats[phase][i], s_ecl[phase][i], reltol_ecl);
} }
std::cout << std::endl; std::cout << std::endl;
@ -773,7 +772,7 @@ BOOST_AUTO_TEST_CASE (DeckWithRSVDAndRVVD)
const auto& rs = comp.rs(); const auto& rs = comp.rs();
const std::vector<double> rs_opm { // opm const std::vector<double> rs_opm { // opm
74.62498302, 74.65959041, 74.69438035, 74.72935336, 74.62498302, 74.65959041, 74.69438035, 74.72935336,
74.76450995, 74.79985061, 74.83537588, 74.87527125, 74.76450995, 74.79985061, 74.83537588, 74.87527065,
74.96863769, 75.08891765, 52.5, 57.5, 74.96863769, 75.08891765, 52.5, 57.5,
62.5, 67.5, 72.5, 76.45954841, 62.5, 67.5, 72.5, 76.45954841,
76.70621045, 76.95287736, 77.19954913, 77.44622578}; 76.70621045, 76.95287736, 77.19954913, 77.44622578};
@ -802,9 +801,9 @@ BOOST_AUTO_TEST_CASE (DeckWithRSVDAndRVVD)
for (size_t i = 0; i < rv_opm.size(); ++i) { for (size_t i = 0; i < rv_opm.size(); ++i) {
//std::cout << std::setprecision(10) << rs[i] << '\n'; //std::cout << std::setprecision(10) << rs[i] << '\n';
BOOST_CHECK_CLOSE(rs[i], rs_opm[i], 100*reltol); BOOST_CHECK_CLOSE(rs[i], rs_opm[i], reltol);
BOOST_CHECK_CLOSE(rs[i], rs_ecl[i], reltol_ecl); BOOST_CHECK_CLOSE(rs[i], rs_ecl[i], reltol_ecl);
BOOST_CHECK_CLOSE(rv[i], rv_opm[i], 100.*reltol); BOOST_CHECK_CLOSE(rv[i], rv_opm[i], reltol);
BOOST_CHECK_CLOSE(rv[i], rv_ecl[i], reltol_ecl); BOOST_CHECK_CLOSE(rv[i], rv_ecl[i], reltol_ecl);
} }
} }
@ -825,16 +824,16 @@ BOOST_AUTO_TEST_CASE (DeckWithSwatinit)
// reference saturations // reference saturations
const std::vector<double> s[3]{ const std::vector<double> s[3]{
{ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.425307, 0.77464, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.42528761746004229, 0.77462669821009045, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 0, 0, 0, 0.0148267, 0.78528, 0.8, 0.8, 0.8, 0.8, 0.574693, 0.22536, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0.014813991154779993, 0.78525420807446045, 0.8, 0.8, 0.8, 0.8, 0.57471238253995771, 0.22537330178990955, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0.8, 0.8, 0.8, 0.785173, 0.01472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } { 0.8, 0.8, 0.8, 0.78518600884522005, 0.014745791925539575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}; };
// sw in cell 1-5 is forced to be 0.2 since swl=0.2 // sw in cell 1-5 is forced to be 0.2 since swl=0.2
// sw in cell 13 and 14 is forced to be swu=1 since P_oil - P_wat < 0. // sw in cell 13 and 14 is forced to be swu=1 since P_oil - P_wat < 0.
const std::vector<double> swatinit[3]{ const std::vector<double> swatinit[3]{
{ 0.2, 0.2, 0.2, 0.2, 0.2, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 1 }, { 0.2, 0.2, 0.2, 0.2, 0.2, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 0, 0, 0, 0.0148267, 0.78528, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0.014813991154779993, 0.78525420807446045, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0.8, 0.8, 0.8, 0.785173, 0.01472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } { 0.8, 0.8, 0.8, 0.78518600884522005, 0.014745791925539575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}; };
std::vector<double> sats = state.saturation(); std::vector<double> sats = state.saturation();
for (int phase = 0; phase < 3; ++phase) { for (int phase = 0; phase < 3; ++phase) {