add missing wellGroupTargetsViolated in ++ operator

This commit is contained in:
Tor Harald Sandve 2022-09-19 08:33:57 +02:00
parent 756c9bad21
commit e1d36f32b8
3 changed files with 14 additions and 12 deletions

View File

@ -86,7 +86,7 @@ namespace Opm
: status_{AllGood}
, res_failures_{}
, well_failures_{}
, groupConverged_(true)
, wellGroupTargetsViolated_(false)
{
}
@ -95,7 +95,7 @@ namespace Opm
status_ = AllGood;
res_failures_.clear();
well_failures_.clear();
groupConverged_ = true;
wellGroupTargetsViolated_ = false;
}
void setReservoirFailed(const ReservoirFailure& rf)
@ -110,9 +110,9 @@ namespace Opm
well_failures_.push_back(wf);
}
void setGroupConverged(const bool groupConverged)
void setWellGroupTargetsViolated(const bool wellGroupTargetsViolated)
{
groupConverged_ = groupConverged;
wellGroupTargetsViolated_ = wellGroupTargetsViolated;
}
ConvergenceReport& operator+=(const ConvergenceReport& other)
@ -122,6 +122,7 @@ namespace Opm
well_failures_.insert(well_failures_.end(), other.well_failures_.begin(), other.well_failures_.end());
assert(reservoirFailed() != res_failures_.empty());
assert(wellFailed() != well_failures_.empty());
wellGroupTargetsViolated_ = (wellGroupTargetsViolated_ || other.wellGroupTargetsViolated_);
return *this;
}
@ -129,7 +130,7 @@ namespace Opm
bool converged() const
{
return status_ == AllGood && groupConverged_;
return (status_ == AllGood) && !wellGroupTargetsViolated_;
}
bool reservoirFailed() const
@ -174,7 +175,7 @@ namespace Opm
Status status_;
std::vector<ReservoirFailure> res_failures_;
std::vector<WellFailure> well_failures_;
bool groupConverged_;
bool wellGroupTargetsViolated_;
};
} // namespace Opm

View File

@ -1409,15 +1409,16 @@ namespace Opm {
const Opm::Parallel::Communication comm = grid().comm();
DeferredLogger global_deferredLogger = gatherDeferredLogger(local_deferredLogger, comm);
if (terminal_output_) {
global_deferredLogger.logMessages();
}
ConvergenceReport report = gatherConvergenceReport(local_report, comm);
if (report.converged() && checkWellGroupControls) {
bool violated = updateWellControls(local_deferredLogger);
report.setGroupConverged(!violated);
bool violated = updateWellControls(global_deferredLogger);
report.setWellGroupTargetsViolated(violated);
}
if (terminal_output_) {
global_deferredLogger.logMessages();
}
// Log debug messages for NaN or too large residuals.
if (terminal_output_) {

View File

@ -230,7 +230,7 @@ namespace Opm
const GroupState& group_state,
DeferredLogger& deferred_logger) /* const */
{
if (!this->isOperableAndSolvable() || this->wellIsStopped()) {
if (this->wellIsStopped()) {
return false;
}