From 7135961b5ff0e42909ac5197e248a49d4006987d Mon Sep 17 00:00:00 2001 From: Rainer Backofen <rainer.backofen@tu-dresden.de> Date: Thu, 4 Dec 2014 09:16:33 +0000 Subject: [PATCH] exit for not convergent iterative solver only if relative AND absolute tolerance not reached --- AMDiS/src/solver/LinearSolverInterface.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/AMDiS/src/solver/LinearSolverInterface.h b/AMDiS/src/solver/LinearSolverInterface.h index 6b2d0b00..7244cf21 100644 --- a/AMDiS/src/solver/LinearSolverInterface.h +++ b/AMDiS/src/solver/LinearSolverInterface.h @@ -136,14 +136,14 @@ namespace AMDiS { } // test for absolute tolerance - TEST_EXIT((isNumber(residual) && (residual < 0.0 || tolerance < 1.e-30 || residual <= tolerance)) - || !breakTolNotReached) - ("Tolerance tol = %e could not be reached!\n Set tolerance by '->solver->tolerance:' \n", tolerance); + bool isAbsTolReached=(isNumber(residual) && (residual < 0.0 || tolerance < 1.e-30 || residual <= tolerance)); + // TEST_EXIT(isAbsTolReached || !breakTolNotReached); + // ("Tolerance tol = %e could not be reached!\n Set tolerance by '->solver->tolerance:' \n", tolerance); // test for relative tolerance - TEST_EXIT((isNumber(rel_residual) && (rel_residual < 0.0 || relative < 1.e-30 || rel_residual <= relative)) - || (residual < 1.e-30) || !breakTolNotReached) - ("Relative tolerance rtol = %e could not be reached!\n Set tolerance by '->solver->relative tolerance:' \n", relative); + bool isRelTolReached=(isNumber(rel_residual) && (rel_residual < 0.0 || relative < 1.e-30 || rel_residual <= relative)) || (residual < 1.e-30); + TEST_EXIT(isAbsTolReached || isRelTolReached ||!breakTolNotReached ) + ("Relative tolerance rtol = %e could not be reached!\n tolerance tol = %e could not be reached!\n Set tolerance by '->solver->relative tolerance:' \n Set tolerance by '->solver->tolerance:' \n", relative, tolerance); } return error_code; } -- GitLab