diff --git a/lib/algorithms/iterative/CommunicationAvoidingGeneralisedMinimalResidual.h b/lib/algorithms/iterative/CommunicationAvoidingGeneralisedMinimalResidual.h index 3bf19131..b56c8afc 100644 --- a/lib/algorithms/iterative/CommunicationAvoidingGeneralisedMinimalResidual.h +++ b/lib/algorithms/iterative/CommunicationAvoidingGeneralisedMinimalResidual.h @@ -97,7 +97,9 @@ class CommunicationAvoidingGeneralisedMinimalResidual : public OperatorFunction< SolverTimer.Start(); IterationCount = 0; - for (int k=0; k { SolverTimer.Start(); IterationCount = 0; - for (int k=0; k { std::cout << GridLogIterative << "FlexibleGeneralisedMinimalResidual: Iteration " << IterationCount << " residual " << cp << " target " << rsq << std::endl; - if ((i == RestartLength - 1) || (cp <= rsq)) { + if ((i == RestartLength - 1) || (IterationCount == MaxIterations) || (cp <= rsq)) { computeSolution(v, psi, i); diff --git a/lib/algorithms/iterative/GeneralisedMinimalResidual.h b/lib/algorithms/iterative/GeneralisedMinimalResidual.h index 78dbf5ca..e9d54a53 100644 --- a/lib/algorithms/iterative/GeneralisedMinimalResidual.h +++ b/lib/algorithms/iterative/GeneralisedMinimalResidual.h @@ -97,7 +97,9 @@ class GeneralisedMinimalResidual : public OperatorFunction { SolverTimer.Start(); IterationCount = 0; - for (int k=0; k { std::cout << GridLogIterative << "GeneralisedMinimalResidual: Iteration " << IterationCount << " residual " << cp << " target " << rsq << std::endl; - if ((i == RestartLength - 1) || (cp <= rsq)) { + if ((i == RestartLength - 1) || (IterationCount == MaxIterations) || (cp <= rsq)) { computeSolution(v, psi, i);