35#ifndef LOGGING_SOLVER_OBSERVER_H
36#define LOGGING_SOLVER_OBSERVER_H
48 void onIteration(
const char* solverName,
int iter,
int maxIter,
double error,
double tolerance)
override {
50 LOG_DEBUG(
"{} iteration {}: error = {:.16e}", solverName, iter, error);
53 void onFinished(
const char* solverName,
bool converged,
int iter,
int maxIter,
double error,
double tolerance)
override {
56 LOG_DEBUG(
"{} converged in {} iterations with error {:.6e}.", solverName, iter, error);
58 LOG_WARN(
"{} did not converge within {} iterations.", solverName, maxIter);
59 LOG_DEBUG(
"Final error was {:.6e}, tolerance is {:.6e}.", error, tolerance);
63 void onMessage(
const char* solverName,
const char* message)
override {
Abstraction over power-flow solvers (Open/Closed Principle).
Logger utilities for deltaFlow, providing logging macros and a singleton Logger class.
#define LOG_WARN(msg,...)
Macro for logging a warning-level message.
#define LOG_DEBUG(msg,...)
Macro for logging a debug-level message.
Progress bar for iterative solvers.
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.
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.
Sink for solver progress/diagnostics (Dependency Inversion / SRP).
Reports solver progress to the Logger singleton and terminal progress bar.
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.
void onIteration(const char *solverName, int iter, int maxIter, double error, double tolerance) override
Called after every iteration with the current error/tolerance.