Add Inplace argument to Summary::eval()

This commit is contained in:
Joakim Hove 2020-11-20 12:27:28 +01:00
parent f190387431
commit 7a0b020c43
5 changed files with 71 additions and 64 deletions

View File

@ -19,6 +19,7 @@
#include <iostream>
#include <opm/output/eclipse/Inplace.hpp>
#include <opm/output/eclipse/EclipseIO.hpp>
#include <opm/output/eclipse/RestartValue.hpp>
#include <opm/output/eclipse/Summary.hpp>
@ -117,6 +118,7 @@ void msim::run_step(const Schedule& schedule, Action::State& action_state, Summa
seconds_elapsed,
well_data,
group_nwrk_data,
{},
{});
schedule.getUDQConfig( report_step ).eval(report_step, schedule.wellMatcher(report_step), st, udq_state);

View File

@ -35,6 +35,7 @@ namespace Opm {
class Schedule;
class SummaryConfig;
class SummaryState;
class Inplace;
} // namespace Opm
namespace Opm { namespace data {
@ -66,6 +67,7 @@ public:
const data::WellRates& well_solution,
const data::GroupAndNetworkValues& group_and_nwrk_solution,
GlobalProcessParameters single_values,
const Inplace& initial_inplace,
const RegionParameters& region_values = {},
const BlockValues& block_values = {},
const data::Aquifers& aquifers_values = {}) const;

View File

@ -3177,6 +3177,7 @@ void Summary::eval(SummaryState& st,
const data::WellRates& well_solution,
const data::GroupAndNetworkValues& grp_nwrk_solution,
GlobalProcessParameters single_values,
const Inplace& ,
const RegionParameters& region_values,
const BlockValues& block_values,
const Opm::data::Aquifers& aquifer_values) const

View File

@ -36,6 +36,7 @@
#include <opm/output/data/Wells.hpp>
#include <opm/output/eclipse/Summary.hpp>
#include <opm/output/eclipse/Inplace.hpp>
#include <opm/parser/eclipse/Python/Python.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/SummaryState.hpp>
#include <opm/parser/eclipse/Deck/Deck.hpp>
@ -467,13 +468,13 @@ BOOST_AUTO_TEST_CASE(well_keywords) {
SummaryState st(std::chrono::system_clock::now());
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule , cfg.name );
writer.eval(st, 0, 0*day, cfg.wells, cfg.grp_nwrk, {});
writer.eval(st, 0, 0*day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval(st, 1, 1*day, cfg.wells, cfg.grp_nwrk, {});
writer.eval(st, 1, 1*day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval(st, 2, 2*day, cfg.wells, cfg.grp_nwrk, {});
writer.eval(st, 2, 2*day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -692,11 +693,11 @@ BOOST_AUTO_TEST_CASE(udq_keywords) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule , cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -717,13 +718,13 @@ BOOST_AUTO_TEST_CASE(group_keywords) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -874,11 +875,11 @@ BOOST_AUTO_TEST_CASE(group_group) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -930,11 +931,11 @@ BOOST_AUTO_TEST_CASE(connection_kewords) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -1004,13 +1005,13 @@ BOOST_AUTO_TEST_CASE(DATE) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.eval( st, 3, 18 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 3, 18 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 3);
writer.eval( st, 4, 22 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 4, 22 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 4);
writer.write();
@ -1041,11 +1042,11 @@ BOOST_AUTO_TEST_CASE(field_keywords) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -1178,11 +1179,11 @@ BOOST_AUTO_TEST_CASE(report_steps_time) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 1, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 1, 5 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 5 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 10 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 10 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -1205,11 +1206,11 @@ BOOST_AUTO_TEST_CASE(skip_unknown_var) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 1, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 1, 5 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 5 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 10 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 10 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -1316,11 +1317,11 @@ BOOST_AUTO_TEST_CASE(region_vars) {
{
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 1, 2 * day, cfg.wells, cfg.grp_nwrk, {}, region_values);
writer.eval( st, 1, 2 * day, cfg.wells, cfg.grp_nwrk, {}, {}, region_values);
writer.add_timestep( st, 1);
writer.eval( st, 1, 5 * day, cfg.wells, cfg.grp_nwrk, {}, region_values);
writer.eval( st, 1, 5 * day, cfg.wells, cfg.grp_nwrk, {}, {}, region_values);
writer.add_timestep( st, 1);
writer.eval( st, 2, 10 * day, cfg.wells, cfg.grp_nwrk, {}, region_values);
writer.eval( st, 2, 10 * day, cfg.wells, cfg.grp_nwrk, {}, {}, region_values);
writer.add_timestep( st, 2);
writer.write();
}
@ -1367,11 +1368,11 @@ BOOST_AUTO_TEST_CASE(region_production) {
{
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
}
@ -1399,11 +1400,11 @@ BOOST_AUTO_TEST_CASE(region_injection) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -1457,15 +1458,15 @@ BOOST_AUTO_TEST_CASE(BLOCK_VARIABLES) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {},{}, block_values);
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {},{}, {}, block_values);
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {},{}, block_values);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {},{}, {}, block_values);
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {},{}, block_values);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {},{}, {}, block_values);
writer.add_timestep( st, 2);
writer.eval( st, 3, 2 * day, cfg.wells , cfg.grp_nwrk, {},{}, block_values);
writer.eval( st, 3, 2 * day, cfg.wells , cfg.grp_nwrk, {},{}, {}, block_values);
writer.add_timestep( st, 3);
writer.eval( st, 4, 2 * day, cfg.wells , cfg.grp_nwrk, {},{}, block_values);
writer.eval( st, 4, 2 * day, cfg.wells , cfg.grp_nwrk, {},{}, {}, block_values);
writer.add_timestep( st, 4);
writer.write();
@ -1518,13 +1519,13 @@ BOOST_AUTO_TEST_CASE(NODE_VARIABLES) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -1576,11 +1577,11 @@ BOOST_AUTO_TEST_CASE(MISC) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule , cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
@ -1596,19 +1597,19 @@ BOOST_AUTO_TEST_CASE(EXTRA) {
{
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule , cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, { {"TCPU" , 0 }});
writer.eval( st, 0, 0 * day, cfg.wells , cfg.grp_nwrk, { {"TCPU" , 0 }}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, { {"TCPU" , 1 }});
writer.eval( st, 1, 1 * day, cfg.wells , cfg.grp_nwrk, { {"TCPU" , 1 }}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, { {"TCPU" , 2}});
writer.eval( st, 2, 2 * day, cfg.wells , cfg.grp_nwrk, { {"TCPU" , 2}}, {});
writer.add_timestep( st, 2);
/* Add a not-recognized key; that is OK */
BOOST_CHECK_NO_THROW( writer.eval( st, 3, 3 * day, cfg.wells , cfg.grp_nwrk, { {"MISSING" , 2 }}));
BOOST_CHECK_NO_THROW( writer.eval( st, 3, 3 * day, cfg.wells , cfg.grp_nwrk, { {"MISSING" , 2 }}, {}));
BOOST_CHECK_NO_THROW( writer.add_timestep( st, 3));
/* Override a NOT MISC variable - ignored. */
writer.eval( st, 4, 4 * day, cfg.wells, cfg.grp_nwrk, {});
writer.eval( st, 4, 4 * day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 4);
writer.write();
}
@ -1727,11 +1728,11 @@ BOOST_AUTO_TEST_CASE(efficiency_factor) {
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule, cfg.name );
SummaryState st(std::chrono::system_clock::now());
writer.eval( st, 0, 0 * day, cfg.wells, cfg.grp_nwrk, {});
writer.eval( st, 0, 0 * day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval( st, 1, 1 * day, cfg.wells, cfg.grp_nwrk, {});
writer.eval( st, 1, 1 * day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.eval( st, 2, 2 * day, cfg.wells, cfg.grp_nwrk, {});
writer.eval( st, 2, 2 * day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 2);
writer.write();
auto res = readsum( cfg.name );
@ -1968,11 +1969,11 @@ namespace {
};
SummaryState st(std::chrono::system_clock::now());
smry.eval(st, 0, 0*day, config.wells, config.grp_nwrk, {});
smry.eval(st, 0, 0*day, config.wells, config.grp_nwrk, {}, {});
smry.add_timestep(st, 0);
smry.eval(st, 1, 1*day, config.wells, config.grp_nwrk, {});
smry.eval(st, 1, 1*day, config.wells, config.grp_nwrk, {}, {});
smry.add_timestep(st, 1);
smry.eval(st, 2, 2*day, config.wells, config.grp_nwrk, {});
smry.eval(st, 2, 2*day, config.wells, config.grp_nwrk, {}, {});
smry.add_timestep(st, 2);
return st;
@ -2968,11 +2969,11 @@ BOOST_AUTO_TEST_CASE(Write_Read)
};
SummaryState st(std::chrono::system_clock::now());
writer.eval(st, 0, 0*day, config.wells, config.grp_nwrk, {});
writer.eval(st, 0, 0*day, config.wells, config.grp_nwrk, {}, {});
writer.add_timestep(st, 0);
writer.eval(st, 1, 1*day, config.wells, config.grp_nwrk, {});
writer.eval(st, 1, 1*day, config.wells, config.grp_nwrk, {}, {});
writer.add_timestep(st, 1);
writer.eval(st, 2, 2*day, config.wells, config.grp_nwrk, {});
writer.eval(st, 2, 2*day, config.wells, config.grp_nwrk, {}, {});
writer.add_timestep(st, 2);
writer.write();

View File

@ -38,6 +38,7 @@
#include <opm/output/data/Wells.hpp>
#include <opm/output/data/Groups.hpp>
#include <opm/output/eclipse/Summary.hpp>
#include <opm/output/eclipse/Inplace.hpp>
#include <opm/parser/eclipse/Python/Python.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/SummaryState.hpp>
@ -258,10 +259,10 @@ BOOST_AUTO_TEST_CASE(group_keywords) {
SummaryState st(std::chrono::system_clock::now());
out::Summary writer( cfg.es, cfg.config, cfg.grid, cfg.schedule , cfg.name );
writer.eval(st, 0, 0*day, cfg.wells, cfg.grp_nwrk, {});
writer.eval(st, 0, 0*day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 0);
writer.eval(st, 1, 1*day, cfg.wells, cfg.grp_nwrk, {});
writer.eval(st, 1, 1*day, cfg.wells, cfg.grp_nwrk, {}, {});
writer.add_timestep( st, 1);
writer.write();