mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Merge pull request #4219 from akva2/use_fmt
BlackoilWellModel: use fmt::format
This commit is contained in:
commit
50eff23710
@ -29,7 +29,8 @@
|
||||
#include <opm/simulators/wells/WellGroupHelpers.hpp>
|
||||
#include <opm/simulators/wells/WellInterfaceGeneric.hpp>
|
||||
|
||||
#include <sstream>
|
||||
#include <fmt/format.h>
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
namespace Opm {
|
||||
@ -384,17 +385,17 @@ actionOnBrokenConstraints(const Group& group,
|
||||
{
|
||||
auto oldControl = wellModel_.groupState().injection_control(group.name(), controlPhase);
|
||||
|
||||
std::ostringstream ss;
|
||||
if (oldControl != newControl) {
|
||||
const std::string from = Group::InjectionCMode2String(oldControl);
|
||||
ss << "Switching injection control mode for group "<< group.name()
|
||||
<< " from " << Group::InjectionCMode2String(oldControl)
|
||||
<< " to " << Group::InjectionCMode2String(newControl);
|
||||
group_state.injection_control(group.name(), controlPhase, newControl);
|
||||
if (wellModel_.comm().rank() == 0) {
|
||||
auto msg = fmt::format("Switching injection control mode for group {} from {} to {}",
|
||||
group.name(),
|
||||
Group::InjectionCMode2String(oldControl),
|
||||
Group::InjectionCMode2String(newControl));
|
||||
deferred_logger.info(msg);
|
||||
}
|
||||
}
|
||||
|
||||
if (!ss.str().empty() && wellModel_.comm().rank() == 0)
|
||||
deferred_logger.info(ss.str());
|
||||
}
|
||||
|
||||
void BlackoilWellModelConstraints::
|
||||
@ -406,12 +407,12 @@ actionOnBrokenConstraints(const Group& group,
|
||||
{
|
||||
const Group::ProductionCMode oldControl = wellModel_.groupState().production_control(group.name());
|
||||
|
||||
std::ostringstream ss;
|
||||
|
||||
std::string ss;
|
||||
switch(exceed_action) {
|
||||
case Group::ExceedAction::NONE: {
|
||||
if (oldControl != newControl && oldControl != Group::ProductionCMode::NONE) {
|
||||
ss << "Group production exceed action is NONE for group " + group.name() + ". Nothing happens.";
|
||||
ss = fmt::format("Group production exceed action is NONE for group {}. Nothing happens.",
|
||||
group.name());
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -434,9 +435,10 @@ actionOnBrokenConstraints(const Group& group,
|
||||
case Group::ExceedAction::RATE: {
|
||||
if (oldControl != newControl) {
|
||||
group_state.production_control(group.name(), newControl);
|
||||
ss << "Switching production control mode for group "<< group.name()
|
||||
<< " from " << Group::ProductionCMode2String(oldControl)
|
||||
<< " to " << Group::ProductionCMode2String(newControl);
|
||||
ss = fmt::format("Switching production control mode for group {} from {} to {}",
|
||||
group.name(),
|
||||
Group::ProductionCMode2String(oldControl),
|
||||
Group::ProductionCMode2String(newControl));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -444,8 +446,8 @@ actionOnBrokenConstraints(const Group& group,
|
||||
throw("Invalid procedure for maximum rate limit selected for group" + group.name());
|
||||
}
|
||||
|
||||
if (!ss.str().empty() && wellModel_.comm().rank() == 0)
|
||||
deferred_logger.debug(ss.str());
|
||||
if (!ss.empty() && wellModel_.comm().rank() == 0)
|
||||
deferred_logger.debug(ss);
|
||||
}
|
||||
|
||||
bool BlackoilWellModelConstraints::
|
||||
|
@ -328,7 +328,7 @@ checkGconsaleLimits(const Group& group,
|
||||
if (!schedule()[reportStepIdx].gconsale().has(group.name()))
|
||||
return;
|
||||
|
||||
std::ostringstream ss;
|
||||
std::string ss;
|
||||
|
||||
const auto& gconsale = schedule()[reportStepIdx].gconsale().get(group.name(), summaryState_);
|
||||
const Group::ProductionCMode& oldProductionControl = this->groupState().production_control(group.name());
|
||||
@ -359,7 +359,8 @@ checkGconsaleLimits(const Group& group,
|
||||
switch(gconsale.max_proc) {
|
||||
case GConSale::MaxProcedure::NONE: {
|
||||
if (oldProductionControl != Group::ProductionCMode::GRAT && oldProductionControl != Group::ProductionCMode::NONE) {
|
||||
ss << "Group sales exceed maximum limit, but the action is NONE for " + group.name() + ". Nothing happens";
|
||||
ss = fmt::format("Group sales exceed maximum limit, but the action is NONE for {}. Nothing happens",
|
||||
group.name());
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -389,9 +390,13 @@ checkGconsaleLimits(const Group& group,
|
||||
}
|
||||
case GConSale::MaxProcedure::RATE: {
|
||||
this->groupState().production_control(group.name(), Group::ProductionCMode::GRAT);
|
||||
ss << "Maximum GCONSALE limit violated for " << group.name() << ". The group is switched from ";
|
||||
ss << Group::ProductionCMode2String(oldProductionControl) << " to " << Group::ProductionCMode2String(Group::ProductionCMode::GRAT);
|
||||
ss << " and limited by the maximum sales rate after consumption and import are considered" ;
|
||||
ss = fmt::format("Maximum GCONSALE limit violated for {}. "
|
||||
"The group is switched from {} to {} "
|
||||
"and limited by the maximum sales rate after "
|
||||
"consumption and import are considered",
|
||||
group.name(),
|
||||
Group::ProductionCMode2String(oldProductionControl),
|
||||
Group::ProductionCMode2String(Group::ProductionCMode::GRAT));
|
||||
this->groupState().update_grat_sales_target(group.name(), production_target);
|
||||
break;
|
||||
}
|
||||
@ -402,23 +407,25 @@ checkGconsaleLimits(const Group& group,
|
||||
if (sales_rate < gconsale.min_sales_rate) {
|
||||
const Group::ProductionCMode& currentProductionControl = this->groupState().production_control(group.name());
|
||||
if ( currentProductionControl == Group::ProductionCMode::GRAT ) {
|
||||
ss << "Group " + group.name() + " has sale rate less then minimum permitted value and is under GRAT control. \n";
|
||||
ss << "The GRAT is increased to meet the sales minimum rate. \n";
|
||||
ss = fmt::format("Group {} has sale rate less then minimum permitted value and is under GRAT control.\n"
|
||||
"The GRAT is increased to meet the sales minimum rate.",
|
||||
group.name());
|
||||
this->groupState().update_grat_sales_target(group.name(), production_target);
|
||||
//} else if () {//TODO add action for WGASPROD
|
||||
//} else if () {//TODO add action for drilling queue
|
||||
} else {
|
||||
ss << "Group " + group.name() + " has sale rate less then minimum permitted value but cannot increase the group production rate \n";
|
||||
ss << "or adjust gas production using WGASPROD or drill new wells to meet the sales target. \n";
|
||||
ss << "Note that WGASPROD and drilling queues are not implemented in Flow. No action is taken. \n ";
|
||||
ss = fmt::format("Group {} has sale rate less then minimum permitted value but cannot increase the group production rate \n"
|
||||
"or adjust gas production using WGASPROD or drill new wells to meet the sales target. \n"
|
||||
"Note that WGASPROD and drilling queues are not implemented in Flow. No action is taken.",
|
||||
group.name());
|
||||
}
|
||||
}
|
||||
if (gconsale.sales_target < 0.0) {
|
||||
OPM_DEFLOG_THROW(std::runtime_error, "Group " + group.name() + " has sale rate target less then zero. Not implemented in Flow" , deferred_logger);
|
||||
}
|
||||
|
||||
if (!ss.str().empty() && comm_.rank() == 0)
|
||||
deferred_logger.info(ss.str());
|
||||
if (!ss.empty() && comm_.rank() == 0)
|
||||
deferred_logger.info(ss);
|
||||
}
|
||||
|
||||
bool
|
||||
|
Loading…
Reference in New Issue
Block a user