diff --git a/src/solvers/linear/krylov/tnlBICGStabSolver_impl.h b/src/solvers/linear/krylov/tnlBICGStabSolver_impl.h
index 4919d56bd612cee98420efcaa2136d0a4b9202f2..8532424ef49bdc2633f91e3aa36cd39cdc8f9177 100644
--- a/src/solvers/linear/krylov/tnlBICGStabSolver_impl.h
+++ b/src/solvers/linear/krylov/tnlBICGStabSolver_impl.h
@@ -193,7 +193,7 @@ bool tnlBICGStabSolver< Matrix, Preconditioner > :: solve( const Vector& b, Vect
          this->setResidue( ResidueGetter :: getResidue( *matrix, b, x, bNorm ) );
    }
    //this->setResidue( ResidueGetter :: getResidue( *matrix, b, x, bNorm ) );
-   this->refreshSolverMonitor();
+   this->refreshSolverMonitor( true );
    return this->checkConvergence();
 };
 
diff --git a/src/solvers/linear/krylov/tnlCGSolver_impl.h b/src/solvers/linear/krylov/tnlCGSolver_impl.h
index ae599af1bbb4e6e51307bee5b9cf6d7df1a92efd..86bea9efd293ee7a9db34950d983bfbf70343f42 100644
--- a/src/solvers/linear/krylov/tnlCGSolver_impl.h
+++ b/src/solvers/linear/krylov/tnlCGSolver_impl.h
@@ -142,7 +142,7 @@ solve( const Vector& b, Vector& x )
          this -> setResidue( ResidueGetter :: getResidue( *matrix, b, x, bNorm ) );
    }
    this -> setResidue( ResidueGetter :: getResidue( *matrix, b, x, bNorm ) );
-   this -> refreshSolverMonitor();
+   this -> refreshSolverMonitor( true );
    return this->checkConvergence();
 };
 
diff --git a/src/solvers/linear/krylov/tnlGMRESSolver_impl.h b/src/solvers/linear/krylov/tnlGMRESSolver_impl.h
index 13582c94a8bfba630dd6d368a8a6fb3491f7dc38..8d738b1b74ac7a494c54a1a67d935a374087427b 100644
--- a/src/solvers/linear/krylov/tnlGMRESSolver_impl.h
+++ b/src/solvers/linear/krylov/tnlGMRESSolver_impl.h
@@ -289,7 +289,7 @@ bool tnlGMRESSolver< Matrix, Preconditioner > :: solve( const Vector& b, Vector&
       //cout << "residue = " << beta / normb << endl;
 
    }
-   this->refreshSolverMonitor();
+   this->refreshSolverMonitor( true );
    return this->checkConvergence();
 };
 
diff --git a/src/solvers/linear/krylov/tnlTFQMRSolver_impl.h b/src/solvers/linear/krylov/tnlTFQMRSolver_impl.h
index b9f5fefea64720287e51b7b1d2ed7cbaf60c8144..52adc5f30d3da28fef6624d821e3056f93f1ce3d 100644
--- a/src/solvers/linear/krylov/tnlTFQMRSolver_impl.h
+++ b/src/solvers/linear/krylov/tnlTFQMRSolver_impl.h
@@ -154,8 +154,9 @@ bool tnlTFQMRSolver< Matrix, Preconditioner > :: solve( const Vector& b, Vector&
       this -> refreshSolverMonitor();
    }
    this -> setResidue( ResidueGetter :: getResidue( *matrix, b, x, bNorm ) );
-   this -> refreshSolverMonitor();
-      if( this -> getResidue() > this -> getConvergenceResidue() ) return false;
+   this -> refreshSolverMonitor( true );
+   if( this -> getResidue() > this -> getConvergenceResidue() )
+      return false;
    return true;
 };
 
diff --git a/src/solvers/linear/stationary/tnlSORSolver_impl.h b/src/solvers/linear/stationary/tnlSORSolver_impl.h
index 419e190d55462ec8da4eb0d40b18f1f4c032e285..273bf9e81a3165525d851e641182e28e605cc4a2 100644
--- a/src/solvers/linear/stationary/tnlSORSolver_impl.h
+++ b/src/solvers/linear/stationary/tnlSORSolver_impl.h
@@ -107,9 +107,10 @@ bool tnlSORSolver< Matrix, Preconditioner > :: solve( const Vector& b,
                                       x,
                                       this->getOmega() );
       this -> setResidue( ResidueGetter :: getResidue( *matrix, x, b, bNorm ) );
+      this -> refreshSolverMonitor();
    }
    this -> setResidue( ResidueGetter :: getResidue( *matrix, x, b, bNorm ) );
-   this -> refreshSolverMonitor();
+   this -> refreshSolverMonitor( true );
    return this->checkConvergence();
 };
 
diff --git a/src/solvers/tnlIterativeSolver.h b/src/solvers/tnlIterativeSolver.h
index d79ab4bd59f863c044a32fecb9e44ba540485782..8c05287d8d31cbbfffcfd186d550484da9618466 100644
--- a/src/solvers/tnlIterativeSolver.h
+++ b/src/solvers/tnlIterativeSolver.h
@@ -67,7 +67,7 @@ class tnlIterativeSolver
 
    bool checkConvergence();
 
-   void refreshSolverMonitor();
+   void refreshSolverMonitor( bool force = false );
 
 
    protected:
diff --git a/src/solvers/tnlIterativeSolverMonitor.h b/src/solvers/tnlIterativeSolverMonitor.h
index b4c949ee78ffc3bd2db38b99e07075983f9738f8..5cca8ed68ac8bcc9afe365b8837ff92ecdd94537 100644
--- a/src/solvers/tnlIterativeSolverMonitor.h
+++ b/src/solvers/tnlIterativeSolverMonitor.h
@@ -44,7 +44,7 @@ class tnlIterativeSolverMonitor : public tnlSolverMonitor< Real, Index >
    
    void setRefreshRate( const IndexType& refreshRate );
 
-   virtual void refresh();
+   virtual void refresh( bool force = false );
 
    void resetTimers();
 
diff --git a/src/solvers/tnlIterativeSolverMonitor_impl.h b/src/solvers/tnlIterativeSolverMonitor_impl.h
index 1db4c8048b0749e63588ea2e39a43ae22bc0d737..7f65f9e596b3cbdc1d8101c3f35c33f6d011c5e7 100644
--- a/src/solvers/tnlIterativeSolverMonitor_impl.h
+++ b/src/solvers/tnlIterativeSolverMonitor_impl.h
@@ -69,9 +69,9 @@ void tnlIterativeSolverMonitor< Real, Index > :: setRefreshRate( const Index& re
 }
 
 template< typename Real, typename Index>
-void tnlIterativeSolverMonitor< Real, Index > :: refresh()
+void tnlIterativeSolverMonitor< Real, Index > :: refresh( bool force )
 {
-   if( this->verbose > 0 && this->getIterations() % this->refreshRate == 0 )
+   if( this->verbose > 0 && ( force || this->getIterations() % this->refreshRate == 0 ) )
    {
       cout << " ITER:" << setw( 8 ) << this->getIterations()
            << " RES:" << setprecision( 5 ) << setw( 12 ) << this -> getResidue()
diff --git a/src/solvers/tnlIterativeSolver_impl.h b/src/solvers/tnlIterativeSolver_impl.h
index 012a6da17141a62ba10514632a00daeab0bc6902..090998dda368e5a53a296e812cc373d2b1590aa6 100644
--- a/src/solvers/tnlIterativeSolver_impl.h
+++ b/src/solvers/tnlIterativeSolver_impl.h
@@ -196,14 +196,14 @@ void tnlIterativeSolver< Real, Index> :: setSolverMonitor( tnlIterativeSolverMon
 }
 
 template< typename Real, typename Index >
-void tnlIterativeSolver< Real, Index> :: refreshSolverMonitor()
+void tnlIterativeSolver< Real, Index> :: refreshSolverMonitor( bool force )
 {
    if( this -> solverMonitor )
    {
       this -> solverMonitor -> setIterations( this -> getIterations() );
       this -> solverMonitor -> setResidue( this -> getResidue() );
       this -> solverMonitor -> setRefreshRate( this-> refreshRate );
-      this -> solverMonitor -> refresh();
+      this -> solverMonitor -> refresh( force );
    }
 }
 
diff --git a/src/solvers/tnlSolverMonitor.h b/src/solvers/tnlSolverMonitor.h
index df946e3643cdba6110c841ae8caa253fc06909e5..b6263a27b03e39ce1c2afa5a0fc23fd681bf5d35 100644
--- a/src/solvers/tnlSolverMonitor.h
+++ b/src/solvers/tnlSolverMonitor.h
@@ -23,7 +23,7 @@ class tnlSolverMonitor
 {
    public:
 
-   virtual void refresh() = 0;
+   virtual void refresh( bool force = false ) = 0;
 
    ~tnlSolverMonitor() {};