From 7510ded183a3b583573ee1a2ddd7a1584bfa5a9c Mon Sep 17 00:00:00 2001 From: osae Date: Fri, 7 Dec 2012 14:34:06 +0100 Subject: [PATCH] Fixed loop index and added parameter check. --- opm/core/fluid/SatFuncSimple.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/opm/core/fluid/SatFuncSimple.cpp b/opm/core/fluid/SatFuncSimple.cpp index 37e74fff..9c42ad30 100644 --- a/opm/core/fluid/SatFuncSimple.cpp +++ b/opm/core/fluid/SatFuncSimple.cpp @@ -46,6 +46,9 @@ namespace Opm const std::vector& krw = swof_table[table_num][1]; const std::vector& krow = swof_table[table_num][2]; const std::vector& pcow = swof_table[table_num][3]; + if (krw.front() != 0.0 || krow.back() != 0.0) { + THROW("Error SWOF data - non-zero krw(swco) and/or krow(1-sor)"); + } buildUniformMonotoneTable(sw, krw, samples, krw_); buildUniformMonotoneTable(sw, krow, samples, krow_); buildUniformMonotoneTable(sw, pcow, samples, pcow_); @@ -68,10 +71,10 @@ namespace Opm break; } } - for (unsigned int i=sw.size()-2; i>=0; --i) { - if (krow[i]> 0.0) { - sowcr_ = 1.0 - sw[i+1]; - krwr_ = krw[i+1]; + for (unsigned int i=sw.size()-1; i>=1; --i) { + if (krow[i-1]> 0.0) { + sowcr_ = 1.0 - sw[i]; + krwr_ = krw[i]; break; } } @@ -268,6 +271,9 @@ namespace Opm const std::vector& krw = swof_table[table_num][1]; const std::vector& krow = swof_table[table_num][2]; const std::vector& pcow = swof_table[table_num][3]; + if (krw.front() != 0.0 || krow.back() != 0.0) { + THROW("Error SWOF data - non-zero krw(swco) and/or krow(1-sor)"); + } krw_ = NonuniformTableLinear(sw, krw); krow_ = NonuniformTableLinear(sw, krow); pcow_ = NonuniformTableLinear(sw, pcow); @@ -290,10 +296,10 @@ namespace Opm break; } } - for (unsigned int i=sw.size()-2; i>=0; --i) { - if (krow[i]> 0.0) { - sowcr_ = 1.0 - sw[i+1]; - krwr_ = krw[i+1]; + for (unsigned int i=sw.size()-1; i>=1; --i) { + if (krow[i-1]> 0.0) { + sowcr_ = 1.0 - sw[i]; + krwr_ = krw[i]; break; } }