|
SpECTRE
v2025.08.19
|
Items related to checking the convergence of numerical algorithms. More...
Namespaces | |
| namespace | OptionTags |
| Option tags related to the convergence of iterative algorithms. | |
| namespace | Tags |
| Tags related to the convergence of iterative algorithms. | |
Classes | |
| struct | Criteria |
| Criteria that determine an iterative algorithm has converged. More... | |
| struct | HasConverged |
| Signals convergence or termination of the algorithm. More... | |
Enumerations | |
| enum class | Reason { NumIterations , MaxIterations , AbsoluteResidual , RelativeResidual , Error } |
| The reason the algorithm has converged or terminated. More... | |
Functions | |
| bool | operator== (const Criteria &lhs, const Criteria &rhs) |
| bool | operator!= (const Criteria &lhs, const Criteria &rhs) |
| std::optional< Reason > | criteria_match (const Criteria &criteria, size_t iteration_id, double residual_magnitude, double initial_residual_magnitude) |
Determine whether the criteria are met. More... | |
| std::ostream & | operator<< (std::ostream &os, const Reason &reason) |
Items related to checking the convergence of numerical algorithms.
|
strong |
The reason the algorithm has converged or terminated.
| std::optional< Reason > Convergence::criteria_match | ( | const Criteria & | criteria, |
| size_t | iteration_id, | ||
| double | residual_magnitude, | ||
| double | initial_residual_magnitude | ||
| ) |
Determine whether the criteria are met.
iteration_id is that of the latest completed step and that it is zero-indexed, where zero indicates the initial state of the algorithm. Therefore, the MaxIteration criterion will match if the iteration_id is equal or higher. For example, a MaxIteration of 0 means the algorithm should run no iterations, so it matches if the iteration_id is 0 or higher since that's the initial state before any steps have been performed. A MaxIteration of 1 matches if the iteration_id is 1 or higher since one iteration is complete. At this point, also the residual_magnitude reflects the state of the algorithm after completion of the first iteration. The initial_residual_magnitude always refers to the state before the first iteration has begun, i.e. where the iteration_id is zero.Returns: A Convergence::Reason if the criteria are met, or std::nullopt otherwise. The possible convergence reasons are:
Convergence::Reason::AbsoluteResidual if the residual_magnitude meets the convergence criteria's absolute_residual.Convergence::Reason::RelativeResidual if residual_magnitude / initial_residual_magnitude meets the convergence criteria's relative_residual.Convergence::Reason::MaxIterations if the iteration_id is the convergence_criteria's max_iterations or higher. This is often interpreted as an error because the algorithm did not converge in the alloted number of iterations.