Fix minor output bug and refine output.

Previously the substep summary reports were cumulative, misleading the user.
Also, made output a little more compact and readable, ensuring numbers line up
unless unusually many digits are needed for times and iteration counts.
This commit is contained in:
Atgeirr Flø Rasmussen 2017-04-06 14:54:08 +02:00
parent e325dcd04b
commit 98debed741
4 changed files with 14 additions and 14 deletions

View File

@ -309,7 +309,7 @@ namespace Opm {
current_relaxation_ -= nonlinear_solver.relaxIncrement(); current_relaxation_ -= nonlinear_solver.relaxIncrement();
current_relaxation_ = std::max(current_relaxation_, nonlinear_solver.relaxMax()); current_relaxation_ = std::max(current_relaxation_, nonlinear_solver.relaxMax());
if (terminalOutputEnabled()) { if (terminalOutputEnabled()) {
std::string msg = " Oscillating behavior detected: Relaxation set to " std::string msg = " Oscillating behavior detected: Relaxation set to "
+ std::to_string(current_relaxation_); + std::to_string(current_relaxation_);
OpmLog::info(msg); OpmLog::info(msg);
} }

View File

@ -140,7 +140,7 @@ void WellSwitchingLogger::logSwitch(const char* name, std::array<char,2> fromto,
ss << " Switching control mode for well " << name ss << " Switching control mode for well " << name
<< " from " << modestring[WellControlType(fromto[0])] << " from " << modestring[WellControlType(fromto[0])]
<< " to " << modestring[WellControlType(fromto[1])] << " to " << modestring[WellControlType(fromto[1])]
<< " on rank " << rank << std::endl; << " on rank " << rank;
OpmLog::info(ss.str()); OpmLog::info(ss.str());
} }
#endif #endif

View File

@ -76,7 +76,7 @@ public:
std::ostringstream ss; std::ostringstream ss;
ss << " Switching control mode for well " << name ss << " Switching control mode for well " << name
<< " from " << modestring[from] << " from " << modestring[from]
<< " to " << modestring[to] << std::endl; << " to " << modestring[to];
OpmLog::info(ss.str()); OpmLog::info(ss.str());
} }
} }

View File

@ -283,14 +283,14 @@ namespace Opm {
{ {
std::ostringstream ss; std::ostringstream ss;
ss << " Substep summary: "; ss << " Substep summary: ";
if (report.total_well_iterations != 0) { if (substepReport.total_well_iterations != 0) {
ss << "well iterations = " << report.total_well_iterations << ", "; ss << "well its = " << std::setw(2) << substepReport.total_well_iterations << ", ";
} }
ss << "newton iterations = " << report.total_newton_iterations << ", " ss << "newton its = " << std::setw(2) << substepReport.total_newton_iterations << ", "
<< "linearizations = " << report.total_linearizations << "linearizations = " << std::setw(2) << substepReport.total_linearizations
<< " (" << report.assemble_time << " sec), " << " (" << std::fixed << std::setprecision(3) << std::setw(6) << substepReport.assemble_time << " sec), "
<< "linear iterations = " << report.total_linear_iterations << "linear its = " << std::setw(3) << substepReport.total_linear_iterations
<< " (" << report.linear_solve_time << " sec)"; << " (" << std::fixed << std::setprecision(3) << std::setw(6) << substepReport.linear_solve_time << " sec)";
OpmLog::info(ss.str()); OpmLog::info(ss.str());
} }
@ -327,8 +327,8 @@ namespace Opm {
substepTimer.setLastStepFailed(true); substepTimer.setLastStepFailed(true);
// increase restart counter // increase restart counter
if( restarts >= solver_restart_max_ ) { if( restarts >= solver_restart_max_ ) {
const auto msg = std::string("Solver failed to converge after ") const auto msg = std::string("Solver failed to converge after cutting timestep ")
+ std::to_string(restarts) + " restarts."; + std::to_string(restarts) + " times.";
if (solver_verbose_) { if (solver_verbose_) {
OpmLog::error(msg); OpmLog::error(msg);
} }
@ -340,8 +340,8 @@ namespace Opm {
substepTimer.provideTimeStepEstimate( newTimeStep ); substepTimer.provideTimeStepEstimate( newTimeStep );
if( solver_verbose_ ) { if( solver_verbose_ ) {
std::string msg; std::string msg;
msg = "Solver convergence failed, restarting solver with new time step (" msg = "Solver convergence failed, cutting timestep to "
+ std::to_string(unit::convert::to( newTimeStep, unit::day )) + " days).\n"; + std::to_string(unit::convert::to( newTimeStep, unit::day )) + " days.\n";
OpmLog::problem(msg); OpmLog::problem(msg);
} }
// reset states // reset states