Add report_step argument to UDQConfig::eval()

This commit is contained in:
Joakim Hove
2020-09-07 18:05:56 +02:00
parent b22304b7ba
commit 8d11a04033
5 changed files with 32 additions and 9 deletions

View File

@@ -121,7 +121,7 @@ void msim::run_step(const Schedule& schedule, Action::State& action_state, Summa
group_data,
{});
schedule.getUDQConfig( report_step ).eval(st, udq_state);
schedule.getUDQConfig( report_step ).eval(report_step, st, udq_state);
this->output(action_state,
st,

View File

@@ -59,7 +59,7 @@ namespace Opm {
void add_assign(const std::string& quantity, const std::vector<std::string>& selector, double value);
void add_define(const std::string& quantity, const std::vector<std::string>& expression);
void eval(SummaryState& st, UDQState& udq_state) const;
void eval(std::size_t report_step, SummaryState& st, UDQState& udq_state) const;
const UDQDefine& define(const std::string& key) const;
std::vector<UDQDefine> definitions() const;
std::vector<UDQDefine> definitions(UDQVarType var_type) const;

View File

@@ -289,7 +289,7 @@ namespace Opm {
this->type_count == data.type_count;
}
void UDQConfig::eval(SummaryState& st, UDQState& udq_state) const {
void UDQConfig::eval(std::size_t report_step, SummaryState& st, UDQState& udq_state) const {
const auto& func_table = this->function_table();
auto undefined_value = this->params().undefinedValue();
UDQContext context(func_table, st, udq_state);

View File

@@ -1776,7 +1776,7 @@ UDQ
SummaryState st(std::chrono::system_clock::now());
auto undefined_value = udq.params().undefinedValue();
UDQState udq_state(undefined_value);
udq.eval(st, udq_state);
udq.eval(0, st, udq_state);
BOOST_CHECK_EQUAL( st.get("FU_UADD"), 12); // 10 + 2
@@ -1803,7 +1803,7 @@ DEFINE FU_PAR2 FU_PAR3 /
auto undefined_value = udq.params().undefinedValue();
UDQState udq_state(undefined_value);
st.update("FMWPR", 100);
udq.eval(st, udq_state);
udq.eval(0, st, udq_state);
BOOST_CHECK_EQUAL(st.get("FU_PAR2"), 100);
}
@@ -1821,7 +1821,7 @@ DEFINE FU_PAR3 FU_PAR2 + 1/
SummaryState st(std::chrono::system_clock::now());
auto undefined_value = udq.params().undefinedValue();
UDQState udq_state(undefined_value);
udq.eval(st, udq_state);
udq.eval(0, st, udq_state);
BOOST_CHECK_EQUAL(st.get("FU_PAR2"), undefined_value);
BOOST_CHECK_EQUAL(st.get("FU_PAR3"), undefined_value);
@@ -1938,7 +1938,7 @@ DEFINE WUGASRA 750000 - WGLIR '*' /
st.update_well_var("W2", "WGLIR", 2);
st.update_well_var("W3", "WGLIR", 3);
udq.eval(st, udq_state);
udq.eval(0, st, udq_state);
// The current testcase has some ordering & defined / undefined issues which
// are not yet solved; therefor no udq.eval() here.
@@ -2130,7 +2130,30 @@ DEFINE FU_VAR91 GOPR TEST /
st.update_well_var("W2", "WGLIR", 2);
st.update_well_var("W3", "WGLIR", 3);
udq.eval(st, udq_state);
udq.eval(0, st, udq_state);
// The current testcase has some ordering & defined / undefined issues which
}
BOOST_AUTO_TEST_CASE(UDQ_ASSIGN) {
std::string deck_string = R"(
-- udq #2
SCHEDULE
UDQ
ASSIGN FU_VAR1 5 /
DEFINE FU_VAR1 FU_VAR1 + 5 /
/
)";
auto schedule = make_schedule(deck_string);
const auto& udq = schedule.getUDQConfig(0);
auto undefined_value = udq.params().undefinedValue();
UDQState udq_state(undefined_value);
SummaryState st(std::chrono::system_clock::now());
udq.eval(0, st, udq_state);
BOOST_CHECK_EQUAL(st.get("FU_VAR1"), 10);
}

View File

@@ -399,7 +399,7 @@ RestartValue first_sim(const Setup& setup, Action::State& action_state, SummaryS
RestartValue restart_value(sol, wells, groups);
init_st(st);
udq.eval(st, udq_state);
udq.eval(report_step, st, udq_state);
eclWriter.writeTimeStep( action_state,
st,
udq_state,