diff options
author | Anton Khirnov <anton@khirnov.net> | 2019-01-29 12:54:06 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2019-01-29 12:54:06 +0100 |
commit | 91c352d4ca45042055ee0205f46e815b6e89a631 (patch) | |
tree | ffa0ec0f1ba7bd4c0f62e35ebddd3874e78ff062 | |
parent | 042257840fd26ad8d4dd8f304ad1adf06d6b50b4 (diff) |
mg2d: fail when a full multigrid iteration does not reduce the residual
-rw-r--r-- | mg2d.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -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; } |