Class GooseFEM::Iterate::StopList#

class StopList#

Class to perform a residual check based on the last “n” iterations.

A typical usage is in dynamic simulations where equilibrium is checked based on a force residual. Fluctuations could however be responsible for this criterion to be triggered too early. By checking several time-steps such case can be avoided.

Public Functions

inline StopList(size_t n = 1)#

Constructor.

Parameters

n – Number of consecutive iterations to consider.

inline void reset()#

Reset all residuals to infinity.

inline void reset(size_t n)#

Reset all residuals to infinity, and change the number of residuals to check.

Parameters

n – Number of consecutive iterations to consider.

inline void roll_insert(double res)#

Roll the list with the residuals, and add a new residual to the end.

In Python code this function corresponds to::

 residuals = residuals[1:] + [new_residual]
I.e. the residual of n iterations ago will be forgotten.

Parameters

res – New residual to add to the list of residuals.

inline bool descending() const#

Check of the sequence of n residuals is in descending order.

Returns

true if the n residuals are in descending order.

inline bool all_less(double tol) const#

Check of the sequence of n residuals are all below a tolerance.

Parameters

tol – Tolerance.

Returns

true if all n residuals are less than the tolerance.

inline const std::vector<double> &data() const#

Get the historic residuals.

inline const std::vector<double> &get() const#

Get the historic residuals.