diff --git a/NumLib/ODESolver/ConvergenceCriterionPerComponentDeltaX.cpp b/NumLib/ODESolver/ConvergenceCriterionPerComponentDeltaX.cpp index 25f875333dbfe984d825bf6ad140c1f81ff373e5..2e34b6f2673dd3696dc5874f69c2bf1c9785ece7 100644 --- a/NumLib/ODESolver/ConvergenceCriterionPerComponentDeltaX.cpp +++ b/NumLib/ODESolver/ConvergenceCriterionPerComponentDeltaX.cpp @@ -48,9 +48,6 @@ void ConvergenceCriterionPerComponentDeltaX::checkDeltaX( OGS_FATAL("D.o.f. table or mesh have not been set."); } - bool satisfied_abs = true; - bool satisfied_rel = true; - for (unsigned global_component = 0; global_component < _abstols.size(); ++global_component) { @@ -67,13 +64,12 @@ void ConvergenceCriterionPerComponentDeltaX::checkDeltaX( (norm_x == 0. ? std::numeric_limits<double>::quiet_NaN() : (error_dx / norm_x))); - satisfied_abs = satisfied_abs && error_dx < _abstols[global_component]; - satisfied_rel = - satisfied_rel && checkRelativeTolerance(_reltols[global_component], - error_dx, norm_x); - } + bool const satisfied_abs = error_dx < _abstols[global_component]; + bool const satisfied_rel = checkRelativeTolerance( + _reltols[global_component], error_dx, norm_x); - _satisfied = _satisfied && (satisfied_abs || satisfied_rel); + _satisfied = _satisfied && (satisfied_abs || satisfied_rel); + } } void ConvergenceCriterionPerComponentDeltaX::setDOFTable( diff --git a/NumLib/ODESolver/ConvergenceCriterionPerComponentResidual.cpp b/NumLib/ODESolver/ConvergenceCriterionPerComponentResidual.cpp index 6a1e6e13d2c3fc3e0c2bf39c47dfe24c2390ddb4..29cf5ea453bdf07d1a8ca4c4163e5eee69f0ad22 100644 --- a/NumLib/ODESolver/ConvergenceCriterionPerComponentResidual.cpp +++ b/NumLib/ODESolver/ConvergenceCriterionPerComponentResidual.cpp @@ -74,11 +74,6 @@ void ConvergenceCriterionPerComponentResidual::checkResidual( OGS_FATAL("D.o.f. table or mesh have not been set."); } - bool satisfied_abs = true; - // Make sure that in the first iteration the relative residual tolerance is - // not satisfied. - bool satisfied_rel = !_is_first_iteration; - for (unsigned global_component = 0; global_component < _abstols.size(); ++global_component) { @@ -103,14 +98,16 @@ void ConvergenceCriterionPerComponentResidual::checkResidual( : (norm_res / norm_res0))); } - satisfied_abs = satisfied_abs && norm_res < _abstols[global_component]; - satisfied_rel = - satisfied_rel && + bool const satisfied_abs = norm_res < _abstols[global_component]; + // Make sure that in the first iteration the relative residual tolerance + // is not satisfied. + bool const satisfied_rel = + !_is_first_iteration && checkRelativeTolerance(_reltols[global_component], norm_res, _residual_norms_0[global_component]); + _satisfied = _satisfied && (satisfied_abs || satisfied_rel); } - _satisfied = _satisfied && (satisfied_abs || satisfied_rel); } void ConvergenceCriterionPerComponentResidual::setDOFTable(