diff --git a/src/opm/output/eclipse/Summary.cpp b/src/opm/output/eclipse/Summary.cpp index 6ed7ef06e..bdffafa4c 100644 --- a/src/opm/output/eclipse/Summary.cpp +++ b/src/opm/output/eclipse/Summary.cpp @@ -722,11 +722,11 @@ inline quantity potential_rate( const fn_args& args ) { if (sched_well.isInjector() && outputInjector) { const auto v = args.wells.at(name).rates.get(phase, 0.0); - sum += v; + sum += v * efac(args.eff_factors, name); } else if (sched_well.isProducer() && outputProducer) { const auto v = args.wells.at(name).rates.get(phase, 0.0); - sum += v; + sum += v * efac(args.eff_factors, name); } } diff --git a/tests/SUMMARY_EFF_FAC.DATA b/tests/SUMMARY_EFF_FAC.DATA index 3c22f681f..8373018c0 100644 --- a/tests/SUMMARY_EFF_FAC.DATA +++ b/tests/SUMMARY_EFF_FAC.DATA @@ -88,6 +88,17 @@ GWCT GGOR / +GOPP +/ +GWPP +/ +GGPP +/ +GGPI +/ +GWPI +/ + FOPR FOPT @@ -96,6 +107,12 @@ FOIR FOIT +FOPP +FWPP +FGPP +FGPI +FWPI + COPR 'W_2' / / diff --git a/tests/test_Summary.cpp b/tests/test_Summary.cpp index c592074a4..2313d0125 100644 --- a/tests/test_Summary.cpp +++ b/tests/test_Summary.cpp @@ -1579,6 +1579,31 @@ BOOST_AUTO_TEST_CASE(READ_WRITE_WELLDATA) { BOOST_CHECK_MESSAGE(curr.inj == ::Opm::Well::InjectorCMode::GRUP, "W_6 must be on GRUP control"); } +// Well/group tree structure (SUMMARY_EFF_FAC.DATA): +// +// W* are wells, G* are groups. +// +// +-------+ +// | FIELD | +// +---+---+ +// | +// +----------+-----------------+ +// | | +// +----+---+ +----+---+ +// | G | | G_4 | +// +----+---+ +----+---+ +// | | +// +--------+----------+ +----+---+ +// | | | G_3 | +// +----+---+ +----+---+ +----+---+ +// | G_1 | | G_2 | | +// +----+---+ +----+---+ +----+---+ +// | | | W_3 | +// +----+---+ +----+---+ +----+---+ +// | W_1 | | W_2 | +// +----+---+ +----+---+ +// + BOOST_AUTO_TEST_CASE(efficiency_factor) { setup cfg( "test_efficiency_factor", "SUMMARY_EFF_FAC.DATA" ); @@ -1599,12 +1624,48 @@ BOOST_AUTO_TEST_CASE(efficiency_factor) { BOOST_CHECK_CLOSE( 10.1, ecl_sum_get_well_var( resp, 1, "W_1", "WOPT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * 10.1, ecl_sum_get_well_var( resp, 2, "W_1", "WOPT" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.13, ecl_sum_get_group_var( resp, 1, "G_1", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.14, ecl_sum_get_group_var( resp, 1, "G_1", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.15, ecl_sum_get_group_var( resp, 1, "G_1", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G_1", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G_1", "GGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( -10.13, ecl_sum_get_group_var( resp, 2, "G_1", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.14, ecl_sum_get_group_var( resp, 2, "G_1", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.15, ecl_sum_get_group_var( resp, 2, "G_1", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G_1", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G_1", "GGPI" ), 1e-5 ); + /* WEFAC 0.2 assigned to W_2. * W_2 assigned to group G2. GEFAC G2 = 0.01 */ BOOST_CHECK_CLOSE( 20.1, ecl_sum_get_well_var( resp, 1, "W_2", "WOPR" ), 1e-5 ); BOOST_CHECK_CLOSE( 20.1 * 0.2 * 0.01, ecl_sum_get_well_var( resp, 1, "W_2", "WOPT" ), 1e-5 ); BOOST_CHECK_CLOSE( 2 * 20.1 * 0.2 * 0.01, ecl_sum_get_well_var( resp, 2, "W_2", "WOPT" ), 1e-5 ); + BOOST_CHECK_CLOSE( -20.13 * 0.2, ecl_sum_get_group_var( resp, 1, "G_2", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -20.14 * 0.2, ecl_sum_get_group_var( resp, 1, "G_2", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -20.15 * 0.2, ecl_sum_get_group_var( resp, 1, "G_2", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G_2", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G_2", "GGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( -10.13 - (20.13 * 0.2 * 0.01), ecl_sum_get_group_var( resp, 1, "G", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.14 - (20.14 * 0.2 * 0.01), ecl_sum_get_group_var( resp, 1, "G", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.15 - (20.15 * 0.2 * 0.01), ecl_sum_get_group_var( resp, 1, "G", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G", "GGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( -20.13 * 0.2, ecl_sum_get_group_var( resp, 2, "G_2", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -20.14 * 0.2, ecl_sum_get_group_var( resp, 2, "G_2", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -20.15 * 0.2, ecl_sum_get_group_var( resp, 2, "G_2", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G_2", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G_2", "GGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( -10.13 - (20.13 * 0.2 * 0.01), ecl_sum_get_group_var( resp, 2, "G", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.14 - (20.14 * 0.2 * 0.01), ecl_sum_get_group_var( resp, 2, "G", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( -10.15 - (20.15 * 0.2 * 0.01), ecl_sum_get_group_var( resp, 2, "G", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G", "GGPI" ), 1e-5 ); + /* WEFAC 0.3 assigned to W_3. * W_3 assigned to group G3. GEFAC G_3 = 0.02 * G_3 assigned to group G4. GEFAC G_4 = 0.03*/ @@ -1612,6 +1673,54 @@ BOOST_AUTO_TEST_CASE(efficiency_factor) { BOOST_CHECK_CLOSE( 30.1 * 0.3 * 0.02 * 0.03, ecl_sum_get_well_var( resp, 1, "W_3", "WOIT" ), 1e-5 ); BOOST_CHECK_CLOSE( 30.1 * 0.3 * 0.02 * 0.03 + 30.1 * 0.3 * 0.02 * 0.04, ecl_sum_get_well_var( resp, 2, "W_3", "WOIT" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.13 * 0.3, ecl_sum_get_group_var( resp, 1, "G_3", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.14 * 0.3, ecl_sum_get_group_var( resp, 1, "G_3", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.15 * 0.3, ecl_sum_get_group_var( resp, 1, "G_3", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G_3", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G_3", "GGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( 30.13 * 0.3 * 0.02, ecl_sum_get_group_var( resp, 1, "G_4", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.14 * 0.3 * 0.02, ecl_sum_get_group_var( resp, 1, "G_4", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.15 * 0.3 * 0.02, ecl_sum_get_group_var( resp, 1, "G_4", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G_4", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 1, "G_4", "GGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( 30.13 * 0.3, ecl_sum_get_group_var( resp, 2, "G_3", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.14 * 0.3, ecl_sum_get_group_var( resp, 2, "G_3", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.15 * 0.3, ecl_sum_get_group_var( resp, 2, "G_3", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G_3", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G_3", "GGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( 30.13 * 0.3 * 0.02, ecl_sum_get_group_var( resp, 2, "G_4", "GWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.14 * 0.3 * 0.02, ecl_sum_get_group_var( resp, 2, "G_4", "GOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 30.15 * 0.3 * 0.02, ecl_sum_get_group_var( resp, 2, "G_4", "GGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G_4", "GWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_group_var( resp, 2, "G_4", "GGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( - 10.13 + - (20.13 * 0.2 * 0.01) + + (30.13 * 0.3 * 0.02)*0.03, ecl_sum_get_field_var( resp, 1, "FWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( - 10.14 + - (20.14 * 0.2 * 0.01) + + (30.14 * 0.3 * 0.02)*0.03, ecl_sum_get_field_var( resp, 1, "FOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( - 10.15 + - (20.15 * 0.2 * 0.01) + + (30.15 * 0.3 * 0.02)*0.03, ecl_sum_get_field_var( resp, 1, "FGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_field_var( resp, 1, "FWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_field_var( resp, 1, "FGPI" ), 1e-5 ); + + BOOST_CHECK_CLOSE( - 10.13 + - (20.13 * 0.2 * 0.01) + + (30.13 * 0.3 * 0.02)*0.04, ecl_sum_get_field_var( resp, 2, "FWPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( - 10.14 + - (20.14 * 0.2 * 0.01) + + (30.14 * 0.3 * 0.02)*0.04, ecl_sum_get_field_var( resp, 2, "FOPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( - 10.15 + - (20.15 * 0.2 * 0.01) + + (30.15 * 0.3 * 0.02)*0.04, ecl_sum_get_field_var( resp, 2, "FGPP" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_field_var( resp, 2, "FWPI" ), 1e-5 ); + BOOST_CHECK_CLOSE( 0.0 , ecl_sum_get_field_var( resp, 2, "FGPI" ), 1e-5 ); + /* WEFAC 0.2 assigned to W_2. * W_2 assigned to group G2. GEFAC G2 = 0.01 */ BOOST_CHECK_CLOSE( 20.1 * 0.2, ecl_sum_get_group_var( resp, 1, "G_2", "GOPR" ), 1e-5 );