/// <summary> /// Determine if calculation should continue /// </summary> /// <param name="iterationNumber">Number of iterations passed</param> /// <param name="result">Result <see cref="Vector"/>.</param> /// <param name="source">Source <see cref="Vector"/>.</param> /// <param name="residuals">Residual <see cref="Vector"/>.</param> /// <returns><c>true</c> if continue, otherwise <c>false</c></returns> private bool ShouldContinue(int iterationNumber, Vector result, Vector source, Vector residuals) { if (_hasBeenStopped) { _iterator.IterationCancelled(); return(true); } _iterator.DetermineStatus(iterationNumber, result, source, residuals); var status = _iterator.Status; // We stop if either: // - the user has stopped the calculation // - the calculation needs to be stopped from a numerical point of view (divergence, convergence etc.) return((!status.TerminatesCalculation) && (!_hasBeenStopped)); }