25 if (type ==
"Residual")
29 if (type ==
"PerComponentDeltaX")
33 if (type ==
"PerComponentResidual")
38 OGS_FATAL(
"There is no convergence criterion of type `{:s}'.", type);
42 const double denominator)
44 auto const eps = std::numeric_limits<double>::epsilon();
45 return std::abs(numerator) <
46 std::abs(reltol) * (std::abs(denominator) + eps);
T peekConfigParameter(std::string const ¶m) const
bool checkRelativeTolerance(const double reltol, const double numerator, const double denominator)
std::unique_ptr< ConvergenceCriterionResidual > createConvergenceCriterionResidual(const BaseLib::ConfigTree &config)
std::unique_ptr< ConvergenceCriterionPerComponentDeltaX > createConvergenceCriterionPerComponentDeltaX(const BaseLib::ConfigTree &config)
std::unique_ptr< ConvergenceCriterion > createConvergenceCriterion(const BaseLib::ConfigTree &config)
Creates a convergence criterion from the given configuration.
std::unique_ptr< ConvergenceCriterionDeltaX > createConvergenceCriterionDeltaX(const BaseLib::ConfigTree &config)
std::unique_ptr< ConvergenceCriterionPerComponentResidual > createConvergenceCriterionPerComponentResidual(const BaseLib::ConfigTree &config)