diff --git a/nufi/poisson_problem.h b/nufi/poisson_problem.h index 0d15e69..5d7f093 100644 --- a/nufi/poisson_problem.h +++ b/nufi/poisson_problem.h @@ -56,6 +56,7 @@ #include "nufi/cells.h" #include "nufi/grids.h" #include "nufi/parameters.h" +#include "nufi/stopwatch.h" #include "omp.h" void save_space_vector(const std::vector &vals, @@ -70,8 +71,8 @@ public: PoissonProblem(unsigned int degree); void initialize(); - void solve_step(size_t it, std::vector> &grid_versions, - bool refining = false); + double solve_step(size_t it, std::vector> &grid_versions, + bool refining = false); void coarse_and_refine_grid(size_t it); void setup_constraints(AffineConstraints &constraints); void run(); @@ -487,16 +488,21 @@ template void PoissonProblem::initialize() { } template -void PoissonProblem::solve_step( +double PoissonProblem::solve_step( size_t it, std::vector> &grid_versions, bool refining) { + double refining_time = 0.0; if (refining) { + stopwatch refining_timer; coarse_and_refine_grid(it); setup_system(); update_grid_versions(grid_versions, *this); + refining_time = refining_timer.elapsed(); } assemble_system(); solve(it); estimate_error(); + + return refining_time; } // NuFI doesnt use this, kept only for testing PoissonProblem diff --git a/src/nufi_solver.cc b/src/nufi_solver.cc index df25d41..299161c 100644 --- a/src/nufi_solver.cc +++ b/src/nufi_solver.cc @@ -286,8 +286,8 @@ void NuFISolver::run() { if (it % Parameters::REFINE_FREQUENCY == 0) { // if (it == 0) { - poisson.solve_step(it, grid_versions, true); - compute_time = timer.elapsed() - compute_start; + refine_time = poisson.solve_step(it, grid_versions, true); + compute_time = timer.elapsed() - compute_start - refine_time; } else { poisson.solve_step(it, grid_versions, false); compute_time = timer.elapsed() - compute_start;