From faf52d83c39a78c38914b0e75d29a7f55f143e0c Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Tue, 28 Aug 2012 11:40:21 +0200
Subject: [PATCH] Add a warning for when we do not converge

---
 src/one-body-sample.cc | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index f0820d1f..dd233f3f 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -257,10 +257,9 @@ int main(int argc, char *argv[]) {
           if (ignoreNodes[i].count() == dim)
             dirichletFunction.evaluate(time, u_diff[i][0]);
 
-        for (size_t state_fpi = 0;
-             state_fpi <
-                 parset.get<size_t>("solver.tnnmg.fixed_point_iterations");
-             ++state_fpi) {
+        auto const state_fpi_max =
+            parset.get<size_t>("solver.tnnmg.fixed_point_iterations");
+        for (size_t state_fpi = 1; state_fpi <= state_fpi_max; ++state_fpi) {
           auto myGlobalNonlinearity =
               assemble_nonlinearity<MatrixType, VectorType>(
                   parset.sub("boundary.friction"), *nodalIntegrals, alpha, tau);
@@ -306,6 +305,10 @@ int main(int argc, char *argv[]) {
           if (energyNorm.diff(u_diff_saved, u_diff) <
               parset.get<double>("solver.tnnmg.fixed_point_tolerance"))
             break;
+
+          if (state_fpi == state_fpi_max)
+            std::cerr << "FPI did not converge after " << state_fpi_max
+                      << " iterations" << std::endl;
         }
 
         // Record the state, (scaled) displacement, and Neumann
-- 
GitLab