diff options
Diffstat (limited to 'src/qms_solve.c')
-rw-r--r-- | src/qms_solve.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/qms_solve.c b/src/qms_solve.c index 3ce463b..08c298f 100644 --- a/src/qms_solve.c +++ b/src/qms_solve.c @@ -992,28 +992,38 @@ int qms_solver_solve(QMSSolver *ctx) return 0; } -void qms_solver_print_stats(QMSSolver *ctx) +static void indent(int level) +{ + for (int i = 0; i < level; i++) + fprintf(stderr, " "); +} + +void qms_solver_print_stats(QMSSolver *ctx, int indent_level) { QMSSolverPriv *s = ctx->priv; + indent(indent_level); fprintf(stderr, "%g%% interpolate geometry: %lu, " "total time %g s, avg time per call %g ms\n", (double)s->interp_geometry_time * 100 / s->solve_time, s->interp_geometry_count, (double)s->interp_geometry_time / 1e6, (double)s->interp_geometry_time / s->interp_geometry_count / 1e3); + indent(indent_level); fprintf(stderr, "%g%% calc equation coefficients: %lu, " "total time %g s, avg time per call %g ms\n", (double)s->calc_eq_coeffs_time * 100 / s->solve_time, s->calc_eq_coeffs_count, (double)s->calc_eq_coeffs_time / 1e6, (double)s->calc_eq_coeffs_time / s->calc_eq_coeffs_count / 1e3); + indent(indent_level); fprintf(stderr, "%g%% pseudospectral matrix construction: %lu, " "total time %g s, avg time per call %g ms\n", (double)s->ps_ctx->construct_matrix_time * 100 / s->solve_time, s->ps_ctx->construct_matrix_count, (double)s->ps_ctx->construct_matrix_time / 1e6, (double)s->ps_ctx->construct_matrix_time / s->ps_ctx->construct_matrix_count / 1e3); + indent(indent_level); fprintf(stderr, "%g%% BiCGSTAB %lu solves, " "%lu iterations, total time %g s, " @@ -1024,6 +1034,7 @@ void qms_solver_print_stats(QMSSolver *ctx) (double)s->ps_ctx->cg_iter_count / s->ps_ctx->cg_solve_count, (double)s->ps_ctx->cg_time_total / s->ps_ctx->cg_solve_count / 1e3, (double)s->ps_ctx->cg_time_total / s->ps_ctx->cg_iter_count / 1e3); + indent(indent_level); fprintf(stderr, "%g%% LU %lu solves, total time %g s, avg time per solve %g ms\n", (double)s->ps_ctx->lu_solves_time * 100 / s->solve_time, |