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

View File

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

View File

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