OGS
|
Convergence criterion applying a single absolute or relative tolerance to the whole solution increment vector.
A residual check is not done. If both an absolute and a relative tolerance are specified, at least one of them has to be satisfied.
Definition at line 26 of file ConvergenceCriterionDeltaX.h.
#include <ConvergenceCriterionDeltaX.h>
Public Member Functions | |
ConvergenceCriterionDeltaX (std::optional< double > &&absolute_tolerance, std::optional< double > &&relative_tolerance, const MathLib::VecNormType norm_type) | |
bool | hasDeltaXCheck () const override |
bool | hasResidualCheck () const override |
void | checkDeltaX (const GlobalVector &minus_delta_x, GlobalVector const &x) override |
void | checkResidual (const GlobalVector &) override |
Check if the residual satisfies the convergence criterion. | |
void | reset () override |
Public Member Functions inherited from NumLib::ConvergenceCriterion | |
ConvergenceCriterion (const MathLib::VecNormType norm_type) | |
virtual void | preFirstIteration () |
virtual void | setNoFirstIteration () |
virtual bool | isSatisfied () const |
Tell if the convergence criterion is satisfied. | |
MathLib::VecNormType | getVectorNormType () const |
virtual | ~ConvergenceCriterion ()=default |
Private Attributes | |
const std::optional< double > | _abstol |
const std::optional< double > | _reltol |
Additional Inherited Members | |
Protected Attributes inherited from NumLib::ConvergenceCriterion | |
bool | _satisfied = true |
bool | _is_first_iteration = true |
const MathLib::VecNormType | _norm_type |
NumLib::ConvergenceCriterionDeltaX::ConvergenceCriterionDeltaX | ( | std::optional< double > && | absolute_tolerance, |
std::optional< double > && | relative_tolerance, | ||
const MathLib::VecNormType | norm_type ) |
Definition at line 19 of file ConvergenceCriterionDeltaX.cpp.
|
overridevirtual |
Check if the change of the solution between iterations satisfies the convergence criterion.
minus_delta_x | the current solution update |
x | the new solution from the current iteration |
minus_delta_x
. x
is needed for relative tolerances. Implements NumLib::ConvergenceCriterion.
Definition at line 35 of file ConvergenceCriterionDeltaX.cpp.
References _abstol, NumLib::ConvergenceCriterion::_norm_type, _reltol, NumLib::ConvergenceCriterion::_satisfied, NumLib::checkRelativeTolerance(), INFO(), and MathLib::LinAlg::norm().
|
inlineoverridevirtual |
Check if the residual satisfies the convergence criterion.
Implements NumLib::ConvergenceCriterion.
Definition at line 38 of file ConvergenceCriterionDeltaX.h.
|
inlineoverridevirtual |
Tells if the change of the solution between iterations is checked.
Implements NumLib::ConvergenceCriterion.
Definition at line 33 of file ConvergenceCriterionDeltaX.h.
|
inlineoverridevirtual |
Tells if the residual is checked.
Implements NumLib::ConvergenceCriterion.
Definition at line 34 of file ConvergenceCriterionDeltaX.h.
|
inlineoverridevirtual |
Indicate that a new iteration now starts.
A concrete implementation of ConvergenceCriterion might want to check both delta x and the residual. I.e., in a new iteration both checks have to be done anew. This method will make the ConvergenceCriterion forget the result of all checks already done, s.t. all necessary checks will have to be repeated in order to satisfy the ConvergenceCriterion.
Reimplemented from NumLib::ConvergenceCriterion.
Definition at line 40 of file ConvergenceCriterionDeltaX.h.
References NumLib::ConvergenceCriterion::_satisfied.
|
private |
Definition at line 43 of file ConvergenceCriterionDeltaX.h.
Referenced by ConvergenceCriterionDeltaX(), and checkDeltaX().
|
private |
Definition at line 44 of file ConvergenceCriterionDeltaX.h.
Referenced by ConvergenceCriterionDeltaX(), and checkDeltaX().