From f2b684c61d791967e4e5c077740d0c3e6a74cb9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Oberhuber?= <oberhuber.tomas@gmail.com> Date: Sat, 12 Mar 2016 22:03:55 +0100 Subject: [PATCH] Adding counter of all iterations. --- src/solvers/pde/tnlExplicitTimeStepper.h | 2 ++ src/solvers/pde/tnlExplicitTimeStepper_impl.h | 9 +++++++-- src/solvers/pde/tnlSemiImplicitTimeStepper.h | 2 ++ src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h | 10 ++++++++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/solvers/pde/tnlExplicitTimeStepper.h b/src/solvers/pde/tnlExplicitTimeStepper.h index 3394733c76..0f35a1495d 100644 --- a/src/solvers/pde/tnlExplicitTimeStepper.h +++ b/src/solvers/pde/tnlExplicitTimeStepper.h @@ -86,6 +86,8 @@ class tnlExplicitTimeStepper MeshDependentDataType* meshDependentData; tnlTimerRT explicitUpdaterTimer, mainTimer; + + long long int allIterations; }; #include <solvers/pde/tnlExplicitTimeStepper_impl.h> diff --git a/src/solvers/pde/tnlExplicitTimeStepper_impl.h b/src/solvers/pde/tnlExplicitTimeStepper_impl.h index f071b3af0a..e026ef174f 100644 --- a/src/solvers/pde/tnlExplicitTimeStepper_impl.h +++ b/src/solvers/pde/tnlExplicitTimeStepper_impl.h @@ -27,7 +27,8 @@ tnlExplicitTimeStepper< Problem, OdeSolver >:: tnlExplicitTimeStepper() : odeSolver( 0 ), problem( 0 ), - timeStep( 0 ) + timeStep( 0 ), + allIterations( 0 ) { }; @@ -123,8 +124,11 @@ solve( const RealType& time, this->odeSolver->setMaxTau( ( stopTime - time ) / ( typename OdeSolver< Problem >::RealType ) this->odeSolver->getMinIterations() ); this->mesh = &mesh; this->meshDependentData = &meshDependentData; - return this->odeSolver->solve( dofVector ); + if( ! this->odeSolver->solve( dofVector ) ) + return false; mainTimer.stop(); + this->allIterations += this->odeSolver->getIterations(); + return true; } template< typename Problem, @@ -167,6 +171,7 @@ bool tnlExplicitTimeStepper< Problem, OdeSolver >:: writeEpilog( tnlLogger& logger ) { + logger.writeParameter< long long int >( "Ierations count:", this->allIterations ); logger.writeParameter< double >( "Explicit update computation time:", this->explicitUpdaterTimer.getTime() ); logger.writeParameter< double >( "Explicit time stepper time:", this->mainTimer.getTime() ); return true; diff --git a/src/solvers/pde/tnlSemiImplicitTimeStepper.h b/src/solvers/pde/tnlSemiImplicitTimeStepper.h index 05f16704e7..1d66681f29 100644 --- a/src/solvers/pde/tnlSemiImplicitTimeStepper.h +++ b/src/solvers/pde/tnlSemiImplicitTimeStepper.h @@ -83,6 +83,8 @@ class tnlSemiImplicitTimeStepper tnlTimerRT preIterateTimer, linearSystemAssemblerTimer, linearSystemSolverTimer, postIterateTimer; bool verbose; + + long long int allIterations; }; #include <solvers/pde/tnlSemiImplicitTimeStepper_impl.h> diff --git a/src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h b/src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h index 4a873b67d3..53507c0f73 100644 --- a/src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h +++ b/src/solvers/pde/tnlSemiImplicitTimeStepper_impl.h @@ -20,13 +20,16 @@ #include <core/mfuncs.h> +#include "tnlSemiImplicitTimeStepper.h" + template< typename Problem, typename LinearSystemSolver > tnlSemiImplicitTimeStepper< Problem, LinearSystemSolver >:: tnlSemiImplicitTimeStepper() : problem( 0 ), linearSystemSolver( 0 ), - timeStep( 0 ) + timeStep( 0 ), + allIterations( 0 ) { }; @@ -75,6 +78,7 @@ init( const MeshType& mesh ) return false; this->linearSystemAssemblerTimer.reset(); this->linearSystemSolverTimer.reset(); + this->allIterations = 0; return true; } @@ -187,6 +191,7 @@ solve( const RealType& time, return false; } this->linearSystemSolverTimer.stop(); + this->allIterations += this->linearSystemSolver->getIterations(); //if( verbose ) // cout << endl; @@ -214,10 +219,11 @@ bool tnlSemiImplicitTimeStepper< Problem, LinearSystemSolver >:: writeEpilog( tnlLogger& logger ) { + logger.writeParameter< long long int >( "Ierations count:", this->allIterations ); logger.writeParameter< double >( "Pre-iterate time:", this->preIterateTimer.getTime() ); logger.writeParameter< double >( "Linear system assembler time:", this->linearSystemAssemblerTimer.getTime() ); logger.writeParameter< double >( "Linear system solver time:", this->linearSystemSolverTimer.getTime() ); - logger.writeParameter< double >( "Post-iterate time:", this->postIterateTimer.getTime() ); + logger.writeParameter< double >( "Post-iterate time:", this->postIterateTimer.getTime() ); return true; } -- GitLab