Write penalty count to infoiter file

This commit is contained in:
jakobtorben 2024-09-12 16:43:40 +02:00
parent 71a64fbd13
commit 6ff83e19ae
2 changed files with 21 additions and 4 deletions

View File

@ -1151,7 +1151,9 @@ namespace Opm {
total_penaltyCard_ += report.getPenaltyCard();
if (total_penaltyCard_.total() > param_.convergence_monitoring_cutoff_) {
if (param_.convergence_monitoring_ && (total_penaltyCard_.total() > param_.convergence_monitoring_cutoff_)) {
report.setReservoirFailed({ConvergenceReport::ReservoirFailure::Type::ConvergenceMonitorFailure,
ConvergenceReport::Severity::ConvergenceMonitorFailure,
-1}); // -1 indicates it's not specific to any component
@ -1179,9 +1181,8 @@ namespace Opm {
OPM_TIMEBLOCK(getWellConvergence);
report += wellModel().getWellConvergence(B_avg, /*checkWellGroupControls*/report.converged());
}
if (param_.convergence_monitoring_) {
checkCardPenalty(report, iteration);
}
checkCardPenalty(report, iteration);
return report;
}

View File

@ -65,6 +65,9 @@ namespace {
"CnvCellCntConv"s,
"CnvCellCntRelax"s,
"CnvCellCntUnconv"s,
"PenaltyNonConv"s,
"PenaltyDecay"s,
"PenaltyWellRes"s,
};
}
@ -190,6 +193,17 @@ namespace {
}
}
void writePenaltyCount(std::ostream& os,
const std::string::size_type firstColSize,
const Opm::ConvergenceReport& report)
{
const auto& penaltyCard = report.getPenaltyCard();
os << ' ' << std::setw(firstColSize) << penaltyCard.nonConverged;
os << ' ' << std::setw(firstColSize) << penaltyCard.distanceDecay;
os << ' ' << std::setw(firstColSize) << penaltyCard.largeWellResiduals;
}
void writeReservoirConvergence(std::ostream& os,
const std::string::size_type colSize,
const Opm::ConvergenceReport& report)
@ -229,6 +243,8 @@ namespace {
writeCnvPvSplit(os, expectNumCnvSplit, firstColSize, report);
writePenaltyCount(os, firstColSize, report);
writeReservoirConvergence(os, colSize, report);
writeWellConvergence(os, colSize, report);