51 const std::string& solver,
58 float ratio = maxIter == 0 ? 0.0f :
static_cast<float>(iter) / maxIter;
59 int filled =
static_cast<int>(ratio * barWidth);
63 fmt::print(
"\033[1F\033[2K");
65 fmt::print(fg(fmt::color::cyan) | fmt::emphasis::bold,
"{:<16}", solver);
68 for (
int i = 0; i < filled; ++i)
69 fmt::print(bg(fmt::color::green),
" ");
70 for (
int i = filled; i < barWidth; ++i)
71 fmt::print(bg(fmt::color::dark_gray),
" ");
74 fmt::print(
"\033[0m");
78 fmt::print(fg(fmt::color::yellow) | fmt::emphasis::bold,
"{:>4}", iter);
79 fmt::print(fg(fmt::color::white),
"/{:<4}", maxIter);
80 fmt::print(
" error ");
81 fmt::print(fg(fmt::color::yellow),
"{:.6e}", error);
82 fmt::print(fg(fmt::color::white),
" tol {:.0e}\n", tol);
101 const std::string& solver,
110 fmt::print(
"\033[1F\033[2K");
112 float ratio = maxIter == 0 ? 0.0f :
static_cast<float>(iter) / maxIter;
113 int filled =
static_cast<int>(ratio * barWidth);
115 fmt::print(fg(fmt::color::cyan) | fmt::emphasis::bold,
"{:<16}", solver);
119 for (
int i = 0; i < filled; ++i)
120 fmt::print(bg(fmt::color::green),
" ");
121 for (
int i = filled; i < barWidth; ++i)
122 fmt::print(bg(fmt::color::dark_gray),
" ");
123 fmt::print(
"\033[0m");
126 fmt::print(fg(fmt::color::green) | fmt::emphasis::bold,
"CONVERGED");
127 fmt::print(fg(fmt::color::white),
" in ");
128 fmt::print(fg(fmt::color::yellow) | fmt::emphasis::bold,
"{}", iter);
129 fmt::print(fg(fmt::color::white),
" iterations");
130 fmt::print(fg(fmt::color::white),
" error {:.6e}\n", error);
133 for (
int i = 0; i < filled; ++i)
134 fmt::print(bg(fmt::color::red),
" ");
135 for (
int i = filled; i < barWidth; ++i)
136 fmt::print(bg(fmt::color::dark_gray),
" ");
137 fmt::print(
"\033[0m");
140 fmt::print(fg(fmt::color::red) | fmt::emphasis::bold,
"FAILED");
141 fmt::print(fg(fmt::color::white),
" after ");
142 fmt::print(fg(fmt::color::yellow) | fmt::emphasis::bold,
"{}", iter);
143 fmt::print(fg(fmt::color::white),
" iterations");
144 fmt::print(fg(fmt::color::white),
" error {:.6e}\n", error);
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.