From dd3ade2b2c8efc8ed8d775441aef51a3442552a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20L=C3=BCbke?= Date: Wed, 9 Mar 2022 09:35:15 +0100 Subject: [PATCH] Adding timer to simulate --- app/main_2D_mdl.cpp | 5 ++++- src/BTCSDiffusion.cpp | 18 ++++++++++++++++-- src/BTCSDiffusion.hpp | 11 ++++++++--- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/main_2D_mdl.cpp b/app/main_2D_mdl.cpp index d9b73ff..900741b 100644 --- a/app/main_2D_mdl.cpp +++ b/app/main_2D_mdl.cpp @@ -53,7 +53,10 @@ int main(int argc, char *argv[]) { // Now we simulate and output 8 steps à 1 sec for (int t = 1; t < 6; t++) { - diffu.simulate(field.data(), alpha.data(), bc.data()); + double time = diffu.simulate(field.data(), alpha.data(), bc.data()); + + cerr << "time elapsed: " << time << " seconds" << endl; + cout << t; for (int i=0; i < m*n; i++) { diff --git a/src/BTCSDiffusion.cpp b/src/BTCSDiffusion.cpp index a9cd375..9094a2c 100644 --- a/src/BTCSDiffusion.cpp +++ b/src/BTCSDiffusion.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -286,8 +287,13 @@ void Diffusion::BTCSDiffusion::setTimestep(double time_step) { this->time_step = time_step; } -void Diffusion::BTCSDiffusion::simulate(double *c, double *alpha, - Diffusion::boundary_condition *bc) { +auto Diffusion::BTCSDiffusion::simulate(double *c, double *alpha, + Diffusion::boundary_condition *bc) + -> double { + + std::chrono::high_resolution_clock::time_point start = + std::chrono::high_resolution_clock::now(); + if (this->grid_dim == 1) { Eigen::Map c_in(c, this->grid_cells[0]); Eigen::Map alpha_in(alpha, this->grid_cells[0]); @@ -307,6 +313,14 @@ void Diffusion::BTCSDiffusion::simulate(double *c, double *alpha, simulate2D(c_in, alpha_in, bc_in); } + + std::chrono::high_resolution_clock::time_point end = + std::chrono::high_resolution_clock::now(); + + std::chrono::duration duration = + std::chrono::duration_cast>(end - start); + + return duration.count(); } inline auto Diffusion::BTCSDiffusion::getBCFromFlux(boundary_condition bc, diff --git a/src/BTCSDiffusion.hpp b/src/BTCSDiffusion.hpp index b994b80..f479068 100644 --- a/src/BTCSDiffusion.hpp +++ b/src/BTCSDiffusion.hpp @@ -88,11 +88,16 @@ public: /*! * With given ghost zones simulate diffusion. Only 1D allowed at this moment. * - * @param c Pointer to continious memory describing the current concentration state of each grid cell. - * @param alpha Pointer to memory area of diffusion coefficients for each grid element. + * @param c Pointer to continious memory describing the current concentration + * state of each grid cell. + * @param alpha Pointer to memory area of diffusion coefficients for each grid + * element. * @param bc Pointer to memory setting boundary conidition of each grid cell. + * + * @return Time in seconds [s] used to simulate one iteration. */ - void simulate(double *c, double *alpha, Diffusion::boundary_condition *bc); + auto simulate(double *c, double *alpha, Diffusion::boundary_condition *bc) + -> double; /*! * Set the timestep of the simulation