Implement WALQ Summary Vector

This commit is contained in:
Bård Skaflestad 2021-06-07 13:27:46 +02:00
parent 0b5694c05b
commit 2ad81c9364
3 changed files with 35 additions and 0 deletions

View File

@ -535,6 +535,33 @@ double efac( const std::vector<std::pair<std::string,double>>& eff_factors, cons
return (it != eff_factors.end()) ? it->second : 1.0; return (it != eff_factors.end()) ? it->second : 1.0;
} }
inline quantity artificial_lift_quantity( const fn_args& args ) {
// Note: This function is intentionally supported only at the well level
// (meaning there's no loop over args.schedule_wells by intention). Its
// purpose is to calculate WALQ only.
auto alq = quantity { 0.0, measure::identity };
if (args.schedule_wells.empty()) {
return alq;
}
const auto* well = args.schedule_wells.front();
if (well->isInjector()) {
return alq;
}
auto xwPos = args.wells.find(well->name());
if ((xwPos == args.wells.end()) ||
(xwPos->second.dynamicStatus == Opm::Well::Status::SHUT))
{
return alq;
}
alq.value = well->productionControls(args.st).alq_value;
return alq;
}
inline bool inline bool
has_alq_type(const Opm::ScheduleState& sched_state, has_alq_type(const Opm::ScheduleState& sched_state,
const Opm::Well::ProductionControls& pc) const Opm::Well::ProductionControls& pc)
@ -1578,6 +1605,7 @@ static const std::unordered_map< std::string, ofun > funs = {
{ "WEPR", rate< rt::energy, producer > }, { "WEPR", rate< rt::energy, producer > },
{ "WTPRHEA", rate< rt::energy, producer > }, { "WTPRHEA", rate< rt::energy, producer > },
{ "WGLIR", glir}, { "WGLIR", glir},
{ "WALQ", artificial_lift_quantity },
{ "WNPR", rate< rt::solvent, producer > }, { "WNPR", rate< rt::solvent, producer > },
{ "WCPR", rate< rt::polymer, producer > }, { "WCPR", rate< rt::polymer, producer > },
{ "WSPR", rate< rt::brine, producer > }, { "WSPR", rate< rt::brine, producer > },

View File

@ -10291,6 +10291,9 @@ WWPRH
WGLIR WGLIR
'B-*' 'C-*' / 'B-*' 'C-*' /
WALQ
'B-*' /
-- Production cumulatives -- Production cumulatives
WOPT WOPT
'B-*' 'C-*' / 'B-*' 'C-*' /

View File

@ -1207,6 +1207,10 @@ BOOST_AUTO_TEST_CASE(GLIR_and_ALQ)
BOOST_CHECK_CLOSE(1234.56 + 2345.67 + 3456.78, BOOST_CHECK_CLOSE(1234.56 + 2345.67 + 3456.78,
ecl_sum_get_group_var(resp, 1, "B1", "GGLIR"), 1.0e-5); ecl_sum_get_group_var(resp, 1, "B1", "GGLIR"), 1.0e-5);
BOOST_CHECK_CLOSE(0.0, ecl_sum_get_well_var(resp, 1, "B-1H", "WALQ"), 1.0e-5);
BOOST_CHECK_CLOSE(0.0, ecl_sum_get_well_var(resp, 1, "B-2H", "WALQ"), 1.0e-5);
BOOST_CHECK_CLOSE(0.0, ecl_sum_get_well_var(resp, 1, "B-3H", "WALQ"), 1.0e-5);
} }
BOOST_AUTO_TEST_CASE(connection_kewords) { BOOST_AUTO_TEST_CASE(connection_kewords) {