mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Write penalty count to infoiter file
This commit is contained in:
@@ -1151,7 +1151,9 @@ namespace Opm {
|
|||||||
|
|
||||||
total_penaltyCard_ += report.getPenaltyCard();
|
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,
|
report.setReservoirFailed({ConvergenceReport::ReservoirFailure::Type::ConvergenceMonitorFailure,
|
||||||
ConvergenceReport::Severity::ConvergenceMonitorFailure,
|
ConvergenceReport::Severity::ConvergenceMonitorFailure,
|
||||||
-1}); // -1 indicates it's not specific to any component
|
-1}); // -1 indicates it's not specific to any component
|
||||||
@@ -1179,9 +1181,8 @@ namespace Opm {
|
|||||||
OPM_TIMEBLOCK(getWellConvergence);
|
OPM_TIMEBLOCK(getWellConvergence);
|
||||||
report += wellModel().getWellConvergence(B_avg, /*checkWellGroupControls*/report.converged());
|
report += wellModel().getWellConvergence(B_avg, /*checkWellGroupControls*/report.converged());
|
||||||
}
|
}
|
||||||
if (param_.convergence_monitoring_) {
|
|
||||||
checkCardPenalty(report, iteration);
|
checkCardPenalty(report, iteration);
|
||||||
}
|
|
||||||
|
|
||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,6 +65,9 @@ namespace {
|
|||||||
"CnvCellCntConv"s,
|
"CnvCellCntConv"s,
|
||||||
"CnvCellCntRelax"s,
|
"CnvCellCntRelax"s,
|
||||||
"CnvCellCntUnconv"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,
|
void writeReservoirConvergence(std::ostream& os,
|
||||||
const std::string::size_type colSize,
|
const std::string::size_type colSize,
|
||||||
const Opm::ConvergenceReport& report)
|
const Opm::ConvergenceReport& report)
|
||||||
@@ -229,6 +243,8 @@ namespace {
|
|||||||
|
|
||||||
writeCnvPvSplit(os, expectNumCnvSplit, firstColSize, report);
|
writeCnvPvSplit(os, expectNumCnvSplit, firstColSize, report);
|
||||||
|
|
||||||
|
writePenaltyCount(os, firstColSize, report);
|
||||||
|
|
||||||
writeReservoirConvergence(os, colSize, report);
|
writeReservoirConvergence(os, colSize, report);
|
||||||
writeWellConvergence(os, colSize, report);
|
writeWellConvergence(os, colSize, report);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user