diff --git a/src/solvers/pde/tnlExplicitTimeStepper.h b/src/solvers/pde/tnlExplicitTimeStepper.h index 3394733c765b59eb88328f75b49e7a196819d87f..0f35a1495d9c89687542d4d6ede27e7beb4369e4 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 f071b3af0acf7b2ba7c543bfda8362743f6ed773..e026ef174f85a1d4be7181fd7f6d45af3502463f 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 05f16704e760f44ab54d433211a56ddaa5a29623..1d66681f2956dfcf70c1e1957457a1e98f920679 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 4a873b67d3ae7f5eea6aceb7571e009b17de3fc7..53507c0f73bc74844172a4173f92f8ad1eb8e051 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; }