From 42e55ec342452d56b8530e26e04b95f052b8e934 Mon Sep 17 00:00:00 2001 From: Tor Harald Sandve Date: Tue, 30 Jun 2020 12:44:00 +0200 Subject: [PATCH] Add brine output --- opm/output/data/Wells.hpp | 8 ++++- src/opm/output/eclipse/Summary.cpp | 28 +++++++++++++--- .../EclipseState/Schedule/SummaryState.cpp | 2 +- tests/summary_deck.DATA | 32 +++++++++++++++++++ tests/test_Summary.cpp | 16 ++++++++++ 5 files changed, 80 insertions(+), 6 deletions(-) diff --git a/opm/output/data/Wells.hpp b/opm/output/data/Wells.hpp index bb5a8497d..8b4dd6d85 100644 --- a/opm/output/data/Wells.hpp +++ b/opm/output/data/Wells.hpp @@ -66,6 +66,7 @@ namespace Opm { well_potential_water = (1 << 14), well_potential_oil = (1 << 15), well_potential_gas = (1 << 16), + brine = (1 << 17), }; using enum_size = std::underlying_type< opt >::type; @@ -117,6 +118,7 @@ namespace Opm { double well_potential_water = 0.0; double well_potential_oil = 0.0; double well_potential_gas = 0.0; + double brine = 0.0; }; struct Connection { @@ -404,7 +406,8 @@ namespace Opm { productivity_index_oil == rate.productivity_index_oil && well_potential_water == rate.well_potential_water && well_potential_oil == rate.well_potential_oil && - well_potential_gas == rate.well_potential_gas; + well_potential_gas == rate.well_potential_gas && + brine == rate.brine; } @@ -436,6 +439,7 @@ namespace Opm { case opt::well_potential_water: return this->well_potential_water; case opt::well_potential_oil: return this->well_potential_oil; case opt::well_potential_gas: return this->well_potential_gas; + case opt::brine: return this->brine; } throw std::invalid_argument( @@ -482,6 +486,7 @@ namespace Opm { buffer.write(this->well_potential_water); buffer.write(this->well_potential_oil); buffer.write(this->well_potential_gas); + buffer.write(this->brine); } template @@ -560,6 +565,7 @@ namespace Opm { buffer.read(this->well_potential_water); buffer.read(this->well_potential_oil); buffer.read(this->well_potential_gas); + buffer.read(this->brine); } template diff --git a/src/opm/output/eclipse/Summary.cpp b/src/opm/output/eclipse/Summary.cpp index 5af0977f6..7dfcbf2ac 100644 --- a/src/opm/output/eclipse/Summary.cpp +++ b/src/opm/output/eclipse/Summary.cpp @@ -457,7 +457,7 @@ inline quantity rate( const fn_args& args ) { if( !injection ) sum *= -1; - if (phase == rt::polymer) return { sum, measure::mass_rate }; + if (phase == rt::polymer || phase == rt::brine) return { sum, measure::mass_rate }; return { sum, rate_unit< phase >() }; } @@ -505,7 +505,7 @@ inline quantity crate( const fn_args& args ) { if( ( v > 0 ) != injection ) return zero; if( !injection ) v *= -1; - if( phase == rt::polymer ) return { v, measure::mass_rate }; + if( phase == rt::polymer || phase == rt::brine ) return { v, measure::mass_rate }; return { v, rate_unit< phase >() }; } @@ -534,7 +534,7 @@ inline quantity srate( const fn_args& args ) { //switch sign of rate - opposite convention in flow vs eclipse v *= -1; - if( phase == rt::polymer ) return { v, measure::mass_rate }; + if( phase == rt::polymer || phase == rt::brine ) return { v, measure::mass_rate }; return { v, rate_unit< phase >() }; } @@ -883,6 +883,7 @@ static const std::unordered_map< std::string, ofun > funs = { { "WGIR", rate< rt::gas, injector > }, { "WNIR", rate< rt::solvent, injector > }, { "WCIR", rate< rt::polymer, injector > }, + { "WSIR", rate< rt::brine, injector > }, { "WVIR", sum( sum( rate< rt::reservoir_water, injector >, rate< rt::reservoir_oil, injector > ), rate< rt::reservoir_gas, injector > ) }, @@ -891,6 +892,7 @@ static const std::unordered_map< std::string, ofun > funs = { { "WGIT", mul( rate< rt::gas, injector >, duration ) }, { "WNIT", mul( rate< rt::solvent, injector >, duration ) }, { "WCIT", mul( rate< rt::polymer, injector >, duration ) }, + { "WSIT", mul( rate< rt::brine, injector >, duration ) }, { "WVIT", mul( sum( sum( rate< rt::reservoir_water, injector >, rate< rt::reservoir_oil, injector > ), rate< rt::reservoir_gas, injector > ), duration ) }, @@ -899,7 +901,9 @@ static const std::unordered_map< std::string, ofun > funs = { { "WGPR", rate< rt::gas, producer > }, { "WNPR", rate< rt::solvent, producer > }, { "WCPR", rate< rt::polymer, producer > }, + { "WSPR", rate< rt::brine, producer > }, { "WCPC", div( rate< rt::polymer, producer >, rate< rt::wat, producer >) }, + { "WSPC", div( rate< rt::brine, producer >, rate< rt::wat, producer >) }, { "WGPRS", rate< rt::dissolved_gas, producer > }, { "WGPRF", sub( rate< rt::gas, producer >, rate< rt::dissolved_gas, producer > ) }, @@ -915,9 +919,9 @@ static const std::unordered_map< std::string, ofun > funs = { { "WGPT", mul( rate< rt::gas, producer >, duration ) }, { "WNPT", mul( rate< rt::solvent, producer >, duration ) }, { "WCPT", mul( rate< rt::polymer, producer >, duration ) }, + { "WSPT", mul( rate< rt::brine, producer >, duration ) }, { "WLPT", mul( sum( rate< rt::wat, producer >, rate< rt::oil, producer > ), duration ) }, - { "WGPTS", mul( rate< rt::dissolved_gas, producer >, duration )}, { "WGPTF", sub( mul( rate< rt::gas, producer >, duration ), mul( rate< rt::dissolved_gas, producer >, duration ))}, @@ -949,6 +953,7 @@ static const std::unordered_map< std::string, ofun > funs = { { "GGIR", rate< rt::gas, injector > }, { "GNIR", rate< rt::solvent, injector > }, { "GCIR", rate< rt::polymer, injector > }, + { "GSIR", rate< rt::brine, injector > }, { "GVIR", sum( sum( rate< rt::reservoir_water, injector >, rate< rt::reservoir_oil, injector > ), rate< rt::reservoir_gas, injector > ) }, { "GWIT", mul( rate< rt::wat, injector >, duration ) }, @@ -956,6 +961,7 @@ static const std::unordered_map< std::string, ofun > funs = { { "GGIT", mul( rate< rt::gas, injector >, duration ) }, { "GNIT", mul( rate< rt::solvent, injector >, duration ) }, { "GCIT", mul( rate< rt::polymer, injector >, duration ) }, + { "GSIT", mul( rate< rt::brine, injector >, duration ) }, { "GVIT", mul( sum( sum( rate< rt::reservoir_water, injector >, rate< rt::reservoir_oil, injector > ), rate< rt::reservoir_gas, injector > ), duration ) }, @@ -964,7 +970,9 @@ static const std::unordered_map< std::string, ofun > funs = { { "GGPR", rate< rt::gas, producer > }, { "GNPR", rate< rt::solvent, producer > }, { "GCPR", rate< rt::polymer, producer > }, + { "GSPR", rate< rt::brine, producer > }, { "GCPC", div( rate< rt::polymer, producer >, rate< rt::wat, producer >) }, + { "GSPC", div( rate< rt::brine, producer >, rate< rt::wat, producer >) }, { "GOPRS", rate< rt::vaporized_oil, producer > }, { "GOPRF", sub (rate < rt::oil, producer >, rate< rt::vaporized_oil, producer > ) }, { "GLPR", sum( rate< rt::wat, producer >, rate< rt::oil, producer > ) }, @@ -1075,6 +1083,7 @@ static const std::unordered_map< std::string, ofun > funs = { { "CWIR", crate< rt::wat, injector > }, { "CGIR", crate< rt::gas, injector > }, { "CCIR", crate< rt::polymer, injector > }, + { "CSIR", crate< rt::brine, injector > }, { "CWIT", mul( crate< rt::wat, injector >, duration ) }, { "CGIT", mul( crate< rt::gas, injector >, duration ) }, { "CNIT", mul( crate< rt::solvent, injector >, duration ) }, @@ -1082,6 +1091,8 @@ static const std::unordered_map< std::string, ofun > funs = { { "CWPR", crate< rt::wat, producer > }, { "COPR", crate< rt::oil, producer > }, { "CGPR", crate< rt::gas, producer > }, + { "CCPR", crate< rt::polymer, producer > }, + { "CSPR", crate< rt::brine, producer > }, { "CGFR", sub(crate, crate) }, { "COFR", sub(crate, crate) }, { "CWFR", sub(crate, crate) }, @@ -1096,6 +1107,8 @@ static const std::unordered_map< std::string, ofun > funs = { { "CNPT", mul( crate< rt::solvent, producer >, duration ) }, { "CCIT", mul( crate< rt::polymer, injector >, duration ) }, { "CCPT", mul( crate< rt::polymer, producer >, duration ) }, + { "CSIT", mul( crate< rt::brine, injector >, duration ) }, + { "CSPT", mul( crate< rt::brine, producer >, duration ) }, { "CTFAC", trans_factors }, { "FWPR", rate< rt::wat, producer > }, @@ -1103,7 +1116,9 @@ static const std::unordered_map< std::string, ofun > funs = { { "FGPR", rate< rt::gas, producer > }, { "FNPR", rate< rt::solvent, producer > }, { "FCPR", rate< rt::polymer, producer > }, + { "FSPR", rate< rt::brine, producer > }, { "FCPC", div( rate< rt::polymer, producer >, rate< rt::wat, producer >) }, + { "FSPC", div( rate< rt::brine, producer >, rate< rt::wat, producer >) }, { "FVPR", sum( sum( rate< rt::reservoir_water, producer>, rate< rt::reservoir_oil, producer >), rate< rt::reservoir_gas, producer>)}, { "FGPRS", rate< rt::dissolved_gas, producer > }, @@ -1117,6 +1132,7 @@ static const std::unordered_map< std::string, ofun > funs = { { "FGPT", mul( rate< rt::gas, producer >, duration ) }, { "FNPT", mul( rate< rt::solvent, producer >, duration ) }, { "FCPT", mul( rate< rt::polymer, producer >, duration ) }, + { "FSPT", mul( rate< rt::brine, producer >, duration ) }, { "FLPT", mul( sum( rate< rt::wat, producer >, rate< rt::oil, producer > ), duration ) }, { "FVPT", mul(sum (sum( rate< rt::reservoir_water, producer>, rate< rt::reservoir_oil, producer >), @@ -1134,6 +1150,8 @@ static const std::unordered_map< std::string, ofun > funs = { { "FNIR", rate< rt::solvent, injector > }, { "FCIR", rate< rt::polymer, injector > }, { "FCPR", rate< rt::polymer, producer > }, + { "FSIR", rate< rt::brine, injector > }, + { "FSPR", rate< rt::brine, producer > }, { "FVIR", sum( sum( rate< rt::reservoir_water, injector>, rate< rt::reservoir_oil, injector >), rate< rt::reservoir_gas, injector>)}, @@ -1144,6 +1162,8 @@ static const std::unordered_map< std::string, ofun > funs = { { "FNIT", mul( rate< rt::solvent, injector >, duration ) }, { "FCIT", mul( rate< rt::polymer, injector >, duration ) }, { "FCPT", mul( rate< rt::polymer, producer >, duration ) }, + { "FSIT", mul( rate< rt::brine, injector >, duration ) }, + { "FSPT", mul( rate< rt::brine, producer >, duration ) }, { "FLIT", mul( sum( rate< rt::wat, injector >, rate< rt::oil, injector > ), duration ) }, { "FVIT", mul( sum( sum( rate< rt::reservoir_water, injector>, rate< rt::reservoir_oil, injector >), diff --git a/src/opm/parser/eclipse/EclipseState/Schedule/SummaryState.cpp b/src/opm/parser/eclipse/EclipseState/Schedule/SummaryState.cpp index f2388d715..217da8e15 100644 --- a/src/opm/parser/eclipse/EclipseState/Schedule/SummaryState.cpp +++ b/src/opm/parser/eclipse/EclipseState/Schedule/SummaryState.cpp @@ -33,7 +33,7 @@ namespace { static const std::vector totals = {"OPT" , "GPT" , "WPT" , "GIT", "WIT", "OPTF" , "OPTS" , "OIT" , "OVPT" , "OVIT" , "MWT" , "WVPT" , "WVIT" , "GMT" , "GPTF" , "SGT" , "GST" , "FGT" , "GCT" , "GIMT" , "WGPT" , "WGIT" , "EGT" , "EXGT" , "GVPT" , "GVIT" , "LPT" , "VPT" , "VIT" , "NPT" , "NIT", - "CPT", "CIT"}; + "CPT", "CIT", "SPT", "SIT"}; auto sep_pos = key.find(':'); diff --git a/tests/summary_deck.DATA b/tests/summary_deck.DATA index 321269c88..8246ae89d 100644 --- a/tests/summary_deck.DATA +++ b/tests/summary_deck.DATA @@ -98,6 +98,7 @@ FGPRS FOPRF FOPRS FCPR +FSPR --FTPRSEA -- Injection Rates FVIR @@ -107,6 +108,7 @@ FGIR FNIR -- solvent FGIRH FCIR +FSIR -- Production Cummulatives FVPT FWPT @@ -126,6 +128,7 @@ FOPTF FOPTS FVPRT FCPT +FSPT -- Injection Cummulatives FVIT FWIT @@ -134,6 +137,7 @@ FGIT FNIT FGITH FCIT +FSIT -- In place FWIP FOIP @@ -343,6 +347,10 @@ GCIR / GCIT / +GSIR +/ +GSIT +/ GWIRH / GWITH @@ -430,6 +438,11 @@ GCPR / GCPT / + +GSPR +/ +GSPT +/ -- Well Data -- Production Rates WWPR @@ -503,9 +516,15 @@ WNIR WCIR W_3 / +WSIR + W_3 +/ WCIT W_3 / +WSIT + W_3 +/ WNIT W_3 / @@ -624,6 +643,11 @@ WCPR WCPT / +WSPR +/ + +WSPT +/ -- Water injection per connection CWIR * / @@ -679,6 +703,14 @@ CCIT '*' / / +CSIR + '*' / +/ + +CSIT + '*' / +/ + CWPT 'W_1' 1 1 1 / / diff --git a/tests/test_Summary.cpp b/tests/test_Summary.cpp index 4d8b28ffd..641f5eb5f 100755 --- a/tests/test_Summary.cpp +++ b/tests/test_Summary.cpp @@ -123,6 +123,7 @@ static data::Wells result_wells(const bool w3_injector = true) { rates1.set( rt::well_potential_oil, -10.14 / day ); rates1.set( rt::well_potential_gas, -10.15 / day ); rates1.set( rt::polymer, -10.16 / day ); + rates1.set( rt::brine, -10.17 / day ); data::Rates rates2; rates2.set( rt::wat, -20.0 / day ); @@ -141,6 +142,7 @@ static data::Wells result_wells(const bool w3_injector = true) { rates2.set( rt::well_potential_oil, -20.14 / day ); rates2.set( rt::well_potential_gas, -20.15 / day ); rates2.set( rt::polymer, -20.16 / day ); + rates2.set( rt::brine, -20.17 / day ); data::Rates rates3; rates3.set( rt::wat, 30.0 / day ); @@ -159,6 +161,7 @@ static data::Wells result_wells(const bool w3_injector = true) { rates3.set( rt::well_potential_oil, 30.14 / day ); rates3.set( rt::well_potential_gas, 30.15 / day ); rates3.set( rt::polymer, 30.16 / day ); + rates3.set( rt::brine, 30.17 / day ); data::Rates rates6; @@ -178,6 +181,7 @@ static data::Wells result_wells(const bool w3_injector = true) { rates6.set( rt::well_potential_oil, 60.14 / day ); rates6.set( rt::well_potential_gas, 60.15 / day ); rates6.set( rt::polymer, 60.16 / day ); + rates6.set( rt::brine, 60.17 / day ); /* completion rates */ data::Rates crates1; crates1.set( rt::wat, -100.0 / day ); @@ -212,6 +216,7 @@ static data::Wells result_wells(const bool w3_injector = true) { crates3.set( rt::reservoir_oil, 300.7 / day ); crates3.set( rt::reservoir_gas, 300.8 / day ); crates3.set( rt::polymer, 300.16 / day ); + crates3.set( rt::brine, 300.17 / day ); data::Rates crates6; crates6.set( rt::wat, 600.0 / day ); @@ -460,6 +465,7 @@ BOOST_AUTO_TEST_CASE(well_keywords) { BOOST_CHECK_CLOSE( 10.3, ecl_sum_get_well_var( resp, 1, "W_1", "WNPR" ), 1e-5 ); BOOST_CHECK_CLOSE( 20.3, ecl_sum_get_well_var( resp, 1, "W_2", "WNPR" ), 1e-5 ); BOOST_CHECK_CLOSE( 10.16, ecl_sum_get_well_var( resp, 1, "W_1", "WCPR" ), 1e-5 ); + BOOST_CHECK_CLOSE( 10.17, ecl_sum_get_well_var( resp, 1, "W_1", "WSPR" ), 1e-5 ); BOOST_CHECK_CLOSE( 10.4, ecl_sum_get_well_var( resp, 1, "W_1", "WGPRS" ), 1e-5 ); BOOST_CHECK_CLOSE( 20.4, ecl_sum_get_well_var( resp, 1, "W_2", "WGPRS" ), 1e-5 ); BOOST_CHECK_CLOSE( 10.2 - 10.4, ecl_sum_get_well_var( resp, 1, "W_1", "WGPRF" ), 1e-5 ); @@ -528,6 +534,7 @@ BOOST_AUTO_TEST_CASE(well_keywords) { BOOST_CHECK_CLOSE( 2 * (20.6 + 20.7 + 20.8), ecl_sum_get_well_var( resp, 2, "W_2", "WVPT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * 10.16, ecl_sum_get_well_var( resp, 2, "W_1", "WCPT" ), 1e-5 ); + BOOST_CHECK_CLOSE( 2 * 10.17, ecl_sum_get_well_var( resp, 2, "W_1", "WSPT" ), 1e-5 ); /* Production rates (history) */ BOOST_CHECK_CLOSE( 10, ecl_sum_get_well_var( resp, 1, "W_1", "WWPRH" ), 1e-5 ); @@ -552,6 +559,7 @@ BOOST_AUTO_TEST_CASE(well_keywords) { BOOST_CHECK_CLOSE( 30.2, ecl_sum_get_well_var( resp, 1, "W_3", "WGIR" ), 1e-5 ); BOOST_CHECK_CLOSE( 30.3, ecl_sum_get_well_var( resp, 1, "W_3", "WNIR" ), 1e-5 ); BOOST_CHECK_CLOSE( 30.16, ecl_sum_get_well_var( resp, 1, "W_3", "WCIR" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.17, ecl_sum_get_well_var( resp, 1, "W_3", "WSIR" ), 1e-5 ); /* Injection totals */ BOOST_CHECK_CLOSE( 30.0, ecl_sum_get_well_var( resp, 1, "W_3", "WWIT" ), 1e-5 ); @@ -564,6 +572,7 @@ BOOST_AUTO_TEST_CASE(well_keywords) { BOOST_CHECK_CLOSE( 2 * 30.2, ecl_sum_get_well_var( resp, 2, "W_3", "WGIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * 30.3, ecl_sum_get_well_var( resp, 2, "W_3", "WNIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * 30.16, ecl_sum_get_well_var( resp, 2, "W_3", "WCIT" ), 1e-5 ); + BOOST_CHECK_CLOSE( 2 * 30.17, ecl_sum_get_well_var( resp, 2, "W_3", "WSIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2* (30.6 + 30.7 + 30.8), ecl_sum_get_well_var( resp, 2, "W_3", "WVIT" ), 1e-5 ); @@ -701,6 +710,7 @@ BOOST_AUTO_TEST_CASE(group_keywords) { BOOST_CHECK_CLOSE( 30.15 + 60.15, ecl_sum_get_group_var( resp, 1, "G_2", "GGPI" ), 1e-5 ); BOOST_CHECK_CLOSE( 10.16 + 20.16, ecl_sum_get_group_var( resp, 1, "G_1", "GCPR" ), 1e-5 ); + BOOST_CHECK_CLOSE( 10.17 + 20.17, ecl_sum_get_group_var( resp, 1, "G_1", "GSPR" ), 1e-5 ); /* Production totals */ BOOST_CHECK_CLOSE( 10.0 + 20.0, ecl_sum_get_group_var( resp, 1, "G_1", "GWPT" ), 1e-5 ); @@ -751,6 +761,7 @@ BOOST_AUTO_TEST_CASE(group_keywords) { BOOST_CHECK_CLOSE( 30.2 + 60.2, ecl_sum_get_group_var( resp, 1, "G_2", "GGIR" ), 1e-5 ); BOOST_CHECK_CLOSE( 30.3 + 60.3, ecl_sum_get_group_var( resp, 1, "G_2", "GNIR" ), 1e-5 ); BOOST_CHECK_CLOSE( 30.16 + 60.16, ecl_sum_get_group_var( resp, 1, "G_2", "GCIR" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.17 + 60.17, ecl_sum_get_group_var( resp, 1, "G_2", "GSIR" ), 1e-5 ); BOOST_CHECK_CLOSE( (30.6 + 30.7 + 30.8 + 60.6 + 60.7 + 60.8), ecl_sum_get_group_var( resp, 1, "G_2", "GVIR" ), 1e-5 ); @@ -765,6 +776,7 @@ BOOST_AUTO_TEST_CASE(group_keywords) { BOOST_CHECK_CLOSE( 2 * (30.2 + 60.2), ecl_sum_get_group_var( resp, 2, "G_2", "GGIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * (30.3 + 60.3), ecl_sum_get_group_var( resp, 2, "G_2", "GNIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * (30.16 + 60.16), ecl_sum_get_group_var( resp, 2, "G_2", "GCIT" ), 1e-5 ); + BOOST_CHECK_CLOSE( 2 * (30.17 + 60.17), ecl_sum_get_group_var( resp, 2, "G_2", "GSIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * (30.6 + 30.7 + 30.8 + 60.6 + 60.7 + 60.8), ecl_sum_get_group_var( resp, 2, "G_2", "GVIT" ), 1e-5 ); @@ -1001,6 +1013,7 @@ BOOST_AUTO_TEST_CASE(field_keywords) { BOOST_CHECK_CLOSE( 30.13 + 60.13, ecl_sum_get_field_var( resp, 1, "FWPI" ), 1e-5 ); BOOST_CHECK_CLOSE( 10.16 + 20.16, ecl_sum_get_field_var( resp, 1, "FCPR" ), 1e-5 ); + BOOST_CHECK_CLOSE( 10.17 + 20.17, ecl_sum_get_field_var( resp, 1, "FSPR" ), 1e-5 ); /* Production totals */ BOOST_CHECK_CLOSE( 10.0 + 20.0, ecl_sum_get_field_var( resp, 1, "FWPT" ), 1e-5 ); @@ -1036,6 +1049,7 @@ BOOST_AUTO_TEST_CASE(field_keywords) { ecl_sum_get_field_var( resp, 2, "FOPTF" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * (10.16 + 20.16), ecl_sum_get_field_var( resp, 2, "FCPT" ), 1e-5 ); + BOOST_CHECK_CLOSE( 2 * (10.17 + 20.17), ecl_sum_get_field_var( resp, 2, "FSPT" ), 1e-5 ); /* Production rates (history) */ BOOST_CHECK_CLOSE( 10.0 + 20.0, ecl_sum_get_field_var( resp, 1, "FWPRH" ), 1e-5 ); @@ -1062,6 +1076,7 @@ BOOST_AUTO_TEST_CASE(field_keywords) { BOOST_CHECK_CLOSE( 30.2 + 60.2, ecl_sum_get_field_var( resp, 1, "FGIR" ), 1e-5 ); BOOST_CHECK_CLOSE( 30.6 + 30.7 + 30.8 + 60.6 + 60.7 + 60.8, ecl_sum_get_field_var( resp, 1, "FVIR" ), 1e-5 ); BOOST_CHECK_CLOSE( 30.16 + 60.16, ecl_sum_get_field_var( resp, 1, "FCIR" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.17 + 60.17, ecl_sum_get_field_var( resp, 1, "FSIR" ), 1e-5 ); /* Injection totals */ BOOST_CHECK_CLOSE( 30.0 + 60., ecl_sum_get_field_var( resp, 1, "FWIT" ), 1e-5 ); @@ -1073,6 +1088,7 @@ BOOST_AUTO_TEST_CASE(field_keywords) { BOOST_CHECK_CLOSE( 2 * (30.2 + 60.2), ecl_sum_get_field_var( resp, 2, "FGIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * (30.6 + 30.7 + 30.8 + 60.6 + 60.7 + 60.8), ecl_sum_get_field_var( resp, 2, "FVIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * (30.16 + 60.16), ecl_sum_get_field_var( resp, 2, "FCIT" ), 1e-5 ); + BOOST_CHECK_CLOSE( 2 * (30.17 + 60.17), ecl_sum_get_field_var( resp, 2, "FSIT" ), 1e-5 ); /* Injection totals (history) */ BOOST_CHECK_CLOSE( 30.0, ecl_sum_get_field_var( resp, 1, "FWITH" ), 1e-5 );