Merge pull request #2054 from joakim-hove/groups-active-cmode

Rename group production control mode variable
This commit is contained in:
Atgeirr Flø Rasmussen 2020-10-27 11:52:42 +01:00 committed by GitHub
commit 3c1e3b5a30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 17 deletions

View File

@ -168,7 +168,8 @@ struct GroupProductionProperties {
{} {}
std::string name; std::string name;
ProductionCMode cmode = ProductionCMode::NONE; ProductionCMode gconprod_cmode = ProductionCMode::NONE;
ProductionCMode active_cmode = ProductionCMode::NONE;
ExceedAction exceed_action = ExceedAction::NONE; ExceedAction exceed_action = ExceedAction::NONE;
UDAValue oil_target; UDAValue oil_target;
UDAValue water_target; UDAValue water_target;
@ -189,7 +190,8 @@ struct GroupProductionProperties {
void serializeOp(Serializer& serializer) void serializeOp(Serializer& serializer)
{ {
serializer(name); serializer(name);
serializer(cmode); serializer(gconprod_cmode);
serializer(active_cmode);
serializer(exceed_action); serializer(exceed_action);
oil_target.serializeOp(serializer); oil_target.serializeOp(serializer);
water_target.serializeOp(serializer); water_target.serializeOp(serializer);
@ -265,7 +267,7 @@ struct ProductionControls {
const GroupProductionProperties& productionProperties() const; const GroupProductionProperties& productionProperties() const;
const std::map<Phase , GroupInjectionProperties>& injectionProperties() const; const std::map<Phase , GroupInjectionProperties>& injectionProperties() const;
const GroupType& getGroupType() const; const GroupType& getGroupType() const;
ProductionCMode production_cmode() const; ProductionCMode gconprod_cmode() const;
InjectionCMode injection_cmode() const; InjectionCMode injection_cmode() const;
Phase injection_phase() const; Phase injection_phase() const;
bool has_control(ProductionCMode control) const; bool has_control(ProductionCMode control) const;

View File

@ -344,7 +344,6 @@ std::vector<std::size_t> groupParentSeqIndex(const Opm::Schedule& sched,
bool higherLevelProdCMode_NotNoneFld(const Opm::Schedule& sched, bool higherLevelProdCMode_NotNoneFld(const Opm::Schedule& sched,
const Opm::SummaryState& sumState,
const Opm::Group& group, const Opm::Group& group,
const size_t simStep) const size_t simStep)
{ {
@ -353,7 +352,7 @@ bool higherLevelProdCMode_NotNoneFld(const Opm::Schedule& sched,
auto current = group; auto current = group;
while (current.name() != "FIELD" && ctrl_mode_not_none_fld == false) { while (current.name() != "FIELD" && ctrl_mode_not_none_fld == false) {
current = sched.getGroup(current.parent(), simStep); current = sched.getGroup(current.parent(), simStep);
const auto& prod_cmode = current.productionControls(sumState).cmode; const auto& prod_cmode = group.gconprod_cmode();
if ((prod_cmode != Opm::Group::ProductionCMode::FLD) && (prod_cmode!= Opm::Group::ProductionCMode::NONE)) { if ((prod_cmode != Opm::Group::ProductionCMode::FLD) && (prod_cmode!= Opm::Group::ProductionCMode::NONE)) {
ctrl_mode_not_none_fld = true; ctrl_mode_not_none_fld = true;
} }
@ -440,7 +439,7 @@ void productionGroup(const Opm::Schedule& sched,
const std::map<int, Opm::Group::ProductionCMode>& pCtrlToPCmode, const std::map<int, Opm::Group::ProductionCMode>& pCtrlToPCmode,
IGrpArray& iGrp) IGrpArray& iGrp)
{ {
const auto& prod_cmode = group.productionControls(sumState).cmode; const auto& prod_cmode = group.gconprod_cmode();
if (group.name() == "FIELD") { if (group.name() == "FIELD") {
iGrp[nwgmax + 6] = 0; iGrp[nwgmax + 6] = 0;
iGrp[nwgmax + 7] = 0; iGrp[nwgmax + 7] = 0;
@ -539,7 +538,7 @@ void productionGroup(const Opm::Schedule& sched,
} else { } else {
iGrp[nwgmax + 5] = 1; iGrp[nwgmax + 5] = 1;
} }
} else if (higherLevelProdCMode_NotNoneFld(sched, sumState, group, simStep)) { } else if (higherLevelProdCMode_NotNoneFld(sched, group, simStep)) {
if (!((prod_cmode == Opm::Group::ProductionCMode::FLD) if (!((prod_cmode == Opm::Group::ProductionCMode::FLD)
|| (prod_cmode == Opm::Group::ProductionCMode::NONE))) { || (prod_cmode == Opm::Group::ProductionCMode::NONE))) {
iGrp[nwgmax + 5] = -1; iGrp[nwgmax + 5] = -1;

View File

@ -218,7 +218,8 @@ Group::GroupProductionProperties Group::GroupProductionProperties::serializeObje
{ {
Group::GroupProductionProperties result("Group123"); Group::GroupProductionProperties result("Group123");
result.name = "Group123"; result.name = "Group123";
result.cmode = ProductionCMode::PRBL; result.gconprod_cmode = ProductionCMode::PRBL;
result.active_cmode = ProductionCMode::PRBL;
result.exceed_action = ExceedAction::WELL; result.exceed_action = ExceedAction::WELL;
result.oil_target = UDAValue(1.0); result.oil_target = UDAValue(1.0);
result.water_target = UDAValue(2.0); result.water_target = UDAValue(2.0);
@ -236,7 +237,8 @@ Group::GroupProductionProperties Group::GroupProductionProperties::serializeObje
bool Group::GroupProductionProperties::operator==(const GroupProductionProperties& other) const { bool Group::GroupProductionProperties::operator==(const GroupProductionProperties& other) const {
return return
this->name == other.name && this->name == other.name &&
this->cmode == other.cmode && this->active_cmode == other.active_cmode &&
this->gconprod_cmode == other.gconprod_cmode &&
this->exceed_action == other.exceed_action && this->exceed_action == other.exceed_action &&
this->oil_target == other.oil_target && this->oil_target == other.oil_target &&
this->water_target == other.water_target && this->water_target == other.water_target &&
@ -439,7 +441,7 @@ bool Group::updateParent(const std::string& parent) {
Group::ProductionControls Group::productionControls(const SummaryState& st) const { Group::ProductionControls Group::productionControls(const SummaryState& st) const {
Group::ProductionControls pc; Group::ProductionControls pc;
pc.cmode = this->production_properties.cmode; pc.cmode = this->production_properties.active_cmode;
pc.exceed_action = this->production_properties.exceed_action; pc.exceed_action = this->production_properties.exceed_action;
pc.oil_target = UDA::eval_group_uda(this->production_properties.oil_target, this->m_name, st, this->udq_undefined); pc.oil_target = UDA::eval_group_uda(this->production_properties.oil_target, this->m_name, st, this->udq_undefined);
pc.water_target = UDA::eval_group_uda(this->production_properties.water_target, this->m_name, st, this->udq_undefined); pc.water_target = UDA::eval_group_uda(this->production_properties.water_target, this->m_name, st, this->udq_undefined);
@ -479,8 +481,8 @@ bool Group::hasInjectionControl(Phase phase) const {
Group::ProductionCMode Group::production_cmode() const { Group::ProductionCMode Group::gconprod_cmode() const {
return this->production_properties.cmode; return this->production_properties.gconprod_cmode;
} }
bool Group::ProductionControls::has_control(Group::ProductionCMode control) const { bool Group::ProductionControls::has_control(Group::ProductionCMode control) const {

View File

@ -377,7 +377,8 @@ namespace {
{ {
auto group_ptr = std::make_shared<Group>(this->getGroup(group_name, handlerContext.currentStep)); auto group_ptr = std::make_shared<Group>(this->getGroup(group_name, handlerContext.currentStep));
Group::GroupProductionProperties production(group_name); Group::GroupProductionProperties production(group_name);
production.cmode = controlMode; production.gconprod_cmode = controlMode;
production.active_cmode = controlMode;
production.oil_target = oil_target; production.oil_target = oil_target;
production.gas_target = gas_target; production.gas_target = gas_target;
production.water_target = water_target; production.water_target = water_target;
@ -387,10 +388,10 @@ namespace {
production.resv_target = resv_target; production.resv_target = resv_target;
production.available_group_control = availableForGroupControl; production.available_group_control = availableForGroupControl;
if ((production.cmode == Group::ProductionCMode::ORAT) || if ((production.gconprod_cmode == Group::ProductionCMode::ORAT) ||
(production.cmode == Group::ProductionCMode::WRAT) || (production.gconprod_cmode == Group::ProductionCMode::WRAT) ||
(production.cmode == Group::ProductionCMode::GRAT) || (production.gconprod_cmode == Group::ProductionCMode::GRAT) ||
(production.cmode == Group::ProductionCMode::LRAT)) (production.gconprod_cmode == Group::ProductionCMode::LRAT))
production.exceed_action = Group::ExceedAction::RATE; production.exceed_action = Group::ExceedAction::RATE;
else else
production.exceed_action = exceedAction; production.exceed_action = exceedAction;