summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2019-01-29 12:54:06 +0100
committerAnton Khirnov <anton@khirnov.net>2019-01-29 12:54:06 +0100
commit91c352d4ca45042055ee0205f46e815b6e89a631 (patch)
treeffa0ec0f1ba7bd4c0f62e35ebddd3874e78ff062
parent042257840fd26ad8d4dd8f304ad1adf06d6b50b4 (diff)
mg2d: fail when a full multigrid iteration does not reduce the residual
-rw-r--r--mg2d.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/mg2d.c b/mg2d.c
index 902c3cc..a65af6c 100644
--- a/mg2d.c
+++ b/mg2d.c
@@ -527,6 +527,11 @@ int mg2d_solve(MG2DContext *ctx)
mg2di_log(&priv->logger, MG2D_LOG_VERBOSE,
"finished toplevel iteration %d, residual %g -> %g (%g)\n",
i, res_prev, res_cur, res_prev / res_cur);
+ if (res_cur / res_prev > 1.0) {
+ mg2di_log(&priv->logger, MG2D_LOG_ERROR, "A multigrid iteration diverged\n");
+ ret = MG2D_ERR_DIVERGE;
+ goto fail;
+ }
res_prev = res_cur;
}