further changes to report currentStatusGroupControls to Summary

This commit is contained in:
Jostein Alvestad
2020-02-19 13:00:35 +01:00
parent 0dcacb41d4
commit 4006319ff7
5 changed files with 92 additions and 52 deletions

View File

@@ -33,9 +33,12 @@
#include <cassert>
#include <tuple>
#include <opm/parser/eclipse/EclipseState/Runspec.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/Schedule.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/Well/WellTestState.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/Group/GuideRate.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/Group/Group.hpp>
//#include <opm/output/data/Groups.hpp>
#include <opm/simulators/timestepping/SimulatorReport.hpp>
@@ -184,30 +187,40 @@ namespace Opm {
void initFromRestartFile(const RestartValue& restartValues);
/*Opm::data::Group groupData(const int reportStepIdx, Opm::Schedule& sched)
Opm::data::Group groupData(const int reportStepIdx, Opm::Schedule& sched) const
{
Opm::data::Group dw;
std::pair<const std::string, const Opm::Group::ProductionCMode> groupPCPair;
std::pair<const std::string, const Opm::Group::InjectionCMode> groupICPair;
for (const std::string gname : sched.groupNames(reportStepIdx)) {
const auto& grup = sched.getGroup(gname, reportStepIdx);
const auto& grup_type = grup.getGroupType();
const auto& i_phase = grup.injection_phase();
Opm::data::currentGroupConstraints cgc;
cgc.currentProdConstraint = Opm::Group::ProductionCMode::NONE;
cgc.currentGasInjectionConstraint = Opm::Group::InjectionCMode::NONE;
cgc.currentWaterInjectionConstraint = Opm::Group::InjectionCMode::NONE;
if (this->well_state_.hasProductionGroupControl(gname)) {
groupPCPair = std::make_pair(gname, this->well_state_.currentProductionGroupControl(gname));
dw.currentProdConstraint.insert(groupPCPair);
cgc.currentProdConstraint = this->well_state_.currentProductionGroupControl(gname);
}
if (this->well_state_.hasInjectionGroupControl(gname)) {
groupICPair = std::make_pair(gname, this->well_state_.currentInjectionGroupControl(gname));
dw.currentInjectionConstraint.insert(groupICPair);
if ((grup_type == Opm::Group::GroupType::INJECTION) || (grup_type == Opm::Group::GroupType::MIXED)) {
if (i_phase == Opm::Phase::WATER) {
if (this->well_state_.hasInjectionGroupControl(gname)) {
cgc.currentWaterInjectionConstraint = this->well_state_.currentInjectionGroupControl(gname);
}
}
if (i_phase == Opm::Phase::GAS) {
if (this->well_state_.hasInjectionGroupControl(gname)) {
cgc.currentGasInjectionConstraint = this->well_state_.currentInjectionGroupControl(gname);
}
}
}
dw.emplace(gname, cgc);
}
return dw;
} */
}
Opm::data::Wells wellData() const
{ return well_state_.report(phase_usage_, Opm::UgGridHelpers::globalCell(grid())); }
//Opm::data::Group groupData(const int reportStepIdx) const
//{ return g_report(reportStepIdx); }
// substract Binv(D)rw from r;
void apply( BVector& r) const;