deltaFlow
LoggingSolverObserver Class Referencefinal

Reports solver progress to the Logger singleton and terminal progress bar. More...

#include <LoggingSolverObserver.H>

Inheritance diagram for LoggingSolverObserver:
Collaboration diagram for LoggingSolverObserver:

Public Member Functions

void onIteration (const char *solverName, int iter, int maxIter, double error, double tolerance) override
 Called after every iteration with the current error/tolerance.
 
void onFinished (const char *solverName, bool converged, int iter, int maxIter, double error, double tolerance) override
 Called once after the iteration loop ends (converged or not).
 
void onMessage (const char *solverName, const char *message) override
 Called for solver-specific diagnostic/warning messages (e.g.
 
- Public Member Functions inherited from ISolverObserver
virtual ~ISolverObserver ()=default
 

Detailed Description

Reports solver progress to the Logger singleton and terminal progress bar.

Definition at line 46 of file LoggingSolverObserver.H.

Member Function Documentation

◆ onFinished()

void LoggingSolverObserver::onFinished ( const char *  solverName,
bool  converged,
int  iter,
int  maxIter,
double  error,
double  tolerance 
)
inlineoverridevirtual

Called once after the iteration loop ends (converged or not).

Implements ISolverObserver.

Definition at line 53 of file LoggingSolverObserver.H.

53 {
54 printConvergenceStatus(solverName, converged, iter, maxIter, error, tolerance);
55 if (converged) {
56 LOG_DEBUG("{} converged in {} iterations with error {:.6e}.", solverName, iter, error);
57 } else {
58 LOG_WARN("{} did not converge within {} iterations.", solverName, maxIter);
59 LOG_DEBUG("Final error was {:.6e}, tolerance is {:.6e}.", error, tolerance);
60 }
61 }
#define LOG_WARN(msg,...)
Macro for logging a warning-level message.
Definition Logger.H:87
#define LOG_DEBUG(msg,...)
Macro for logging a debug-level message.
Definition Logger.H:85
void printConvergenceStatus(const std::string &solver, bool converged, int iter, int maxIter, double error, double tol, int barWidth=50)
Print the final convergence status line.
Definition Progress.H:100

References LOG_DEBUG, LOG_WARN, and printConvergenceStatus().

Here is the call graph for this function:

◆ onIteration()

void LoggingSolverObserver::onIteration ( const char *  solverName,
int  iter,
int  maxIter,
double  error,
double  tolerance 
)
inlineoverridevirtual

Called after every iteration with the current error/tolerance.

Implements ISolverObserver.

Definition at line 48 of file LoggingSolverObserver.H.

48 {
49 printIterationProgress(solverName, iter, maxIter, error, tolerance);
50 LOG_DEBUG("{} iteration {}: error = {:.16e}", solverName, iter, error);
51 }
void printIterationProgress(const std::string &solver, int iter, int maxIter, double error, double tol, int barWidth=50)
Print an iteration progress line for a solver.
Definition Progress.H:50

References LOG_DEBUG, and printIterationProgress().

Here is the call graph for this function:

◆ onMessage()

void LoggingSolverObserver::onMessage ( const char *  solverName,
const char *  message 
)
inlineoverridevirtual

Called for solver-specific diagnostic/warning messages (e.g.

relaxation coefficient notes).

Implements ISolverObserver.

Definition at line 63 of file LoggingSolverObserver.H.

63 {
64 (void)solverName;
65 LOG_DEBUG("{}", message);
66 }

References LOG_DEBUG.


The documentation for this class was generated from the following file: