3#ifndef DUNE_PDELAB_SOLVER_TERMINATE_HH
4#define DUNE_PDELAB_SOLVER_TERMINATE_HH
24 std::cout <<
"NewtonMethod::_terminate->printParameters() is not implemented." << std::endl;
29 template <
typename Solver>
33 using Real =
typename Solver::Real;
39 if (_force_iteration && _solver.result().iterations == 0)
41 auto converged = _solver.result().defect < _solver.getAbsoluteLimit() || _solver.result().defect < _solver.result().first_defect * _solver.getReduction();
42 if (_solver.result().iterations >= _maxIterations && not _solver.result().converged)
44 "Terminate::terminate(): Maximum iteration count reached");
50 _maxIterations = parameterTree.get<
unsigned int>(
"MaxIterations", _maxIterations);
51 _force_iteration = parameterTree.get<
bool>(
"ForceIteration", _force_iteration);
56 std::cout <<
"Terminate.MaxIterations. " << _maxIterations << std::endl;
57 std::cout <<
"Terminate.ForceIteration " << _force_iteration << std::endl;
63 _maxIterations = maxIterations;
69 _force_iteration = forceIteration;
74 unsigned int _maxIterations = 40;
75 bool _force_iteration =
false;
Definition: adaptivity.hh:29
Base class for all PDELab exceptions.
Definition: exceptions.hh:19
Definition: terminate.hh:9
Definition: terminate.hh:13
virtual ~TerminateInterface()
Every abstract base class should have a virtual destructor.
Definition: terminate.hh:16
virtual bool terminate()=0
virtual void setParameters(const ParameterTree &)=0
virtual void printParameters() const
Definition: terminate.hh:22
Definition: terminate.hh:31
virtual void printParameters() const override
Definition: terminate.hh:54
virtual bool terminate() override
Definition: terminate.hh:37
void setForceIteration(const bool forceIteration)
Set if the Newton solver should always perform an iteration.
Definition: terminate.hh:67
DefaultTerminate(Solver &solver)
Definition: terminate.hh:35
virtual void setParameters(const ParameterTree ¶meterTree) override
Definition: terminate.hh:48
typename Solver::Real Real
Definition: terminate.hh:33
void setMaxIterations(const unsigned int maxIterations)
Set the maximum iterations allowed in the Newton solver.
Definition: terminate.hh:61