diff --git a/NumLib/ODESolver/ConvergenceCriterion.h b/NumLib/ODESolver/ConvergenceCriterion.h index dc9faa5a6de909c37b9b235f32a6538909775702..32b27ee34a5db15b5850894bde6b8f1844e9dfc3 100644 --- a/NumLib/ODESolver/ConvergenceCriterion.h +++ b/NumLib/ODESolver/ConvergenceCriterion.h @@ -60,6 +60,10 @@ public: //! (while solving a specific nonlinear system). virtual void preFirstIteration() {} + //! Tell the ConvergenceCriterion that it is not called for the first time + //! (while solving a coupling system). + virtual void setNoFirstIteration() {} + //! Indicate that a new iteration now starts. //! //! A concrete implementation of ConvergenceCriterion might want to check diff --git a/NumLib/ODESolver/ConvergenceCriterionResidual.h b/NumLib/ODESolver/ConvergenceCriterionResidual.h index 21b793f589d60964aacf32002c4ab1434fd74852..d654eda8680856843395d95ab6dda093c36134ae 100644 --- a/NumLib/ODESolver/ConvergenceCriterionResidual.h +++ b/NumLib/ODESolver/ConvergenceCriterionResidual.h @@ -39,6 +39,7 @@ public: void checkResidual(const GlobalVector& residual) override; void preFirstIteration() override { _is_first_iteration = true; } + void setNoFirstIteration() override { _is_first_iteration = false; } void reset() override { _satisfied = true; _is_first_iteration = false; } bool isSatisfied() const override { return _satisfied; } private: