Store report of failed step before cutting from convergence monitoring

This commit is contained in:
jakobtorben 2024-09-10 15:50:09 +02:00
parent eef0ba50bf
commit 6d53daaa42
3 changed files with 6 additions and 2 deletions

View File

@ -369,6 +369,8 @@ namespace Opm {
OPM_THROW_PROBLEM(NumericalProblem, "NaN residual found!");
} else if (severity == ConvergenceReport::Severity::TooLarge) {
OPM_THROW_NOLOG(NumericalProblem, "Too large residual found!");
} else if (severity == ConvergenceReport::Severity::ConvergenceMonitorFailure) {
OPM_THROW_PROBLEM(ConvergenceMonitorFailure, "Total penalty count exceeded cut-off-limit of " + std::to_string(param_.convergence_monitoring_cutoff_));
}
}
report.update_time += perfTimer.stop();
@ -1148,9 +1150,8 @@ namespace Opm {
if (total_penaltyCard_.total() > param_.convergence_monitoring_cutoff_) {
report.setReservoirFailed({ConvergenceReport::ReservoirFailure::Type::ConvergenceMonitorFailure,
ConvergenceReport::Severity::TooLarge,
ConvergenceReport::Severity::ConvergenceMonitorFailure,
-1}); // -1 indicates it's not specific to any component
throw ConvergenceMonitorFailure("Total penalty count exceeded cut-off-limit of " + std::to_string(param_.convergence_monitoring_cutoff_) + ". Cutting timestep.");
}
}

View File

@ -59,6 +59,8 @@ namespace Opm
return "TooLarge";
case S::NotANumber:
return "NotANumber";
case S::ConvergenceMonitorFailure:
return "ConvergenceMonitorFailure";
}
throw std::logic_error("Unknown ConvergenceReport::Severity");
}

View File

@ -51,6 +51,7 @@ namespace Opm
Normal = 1,
TooLarge = 2,
NotANumber = 3,
ConvergenceMonitorFailure = 4,
};
struct PenaltyCard {