Adaptive tolerance selection for linear solver.
More...
#include <dune/fem/solver/newtoninverseoperator.hh>
Adaptive tolerance selection for linear solver.
- Note
- Prevents over-solving linear systems far away from solution. Source: "Globally Convergent Inexact Newton Methods", Stanley C. Eisenstat and Homer F. Walker, https://doi.org/10.1137/0804022.
-
etaMax and gamma are configurable via the constructor, via setEtaMax()/setGamma() setters, or via the parameter system: fem.solver.nonlinear.eisenstatwalker.etamax (default: 0.99) fem.solver.nonlinear.eisenstatwalker.gamma (default: 0.1) For degenerate problems consider etaMax~0.1-0.3, gamma~0.5-0.9.
◆ EisenstatWalkerStrategy()
| Dune::Fem::EisenstatWalkerStrategy::EisenstatWalkerStrategy |
( |
const double |
newtonTolerance, |
|
|
const double |
etaMax = 0.99, |
|
|
const double |
gamma = 0.1 |
|
) |
| |
|
inline |
constructor
- Parameters
-
| [in] | newtonTolerance | absolute tolerance of the Newton method |
| [in] | etaMax | maximum forcing term (default: 0.99) |
| [in] | gamma | safeguard parameter (default: 0.1) |
◆ etaMax()
| double Dune::Fem::EisenstatWalkerStrategy::etaMax |
( |
| ) |
const |
|
inline |
◆ gamma()
| double Dune::Fem::EisenstatWalkerStrategy::gamma |
( |
| ) |
const |
|
inline |
◆ nextLinearTolerance()
| double Dune::Fem::EisenstatWalkerStrategy::nextLinearTolerance |
( |
const double |
currentResidual | ) |
const |
|
inline |
◆ setEtaMax()
| void Dune::Fem::EisenstatWalkerStrategy::setEtaMax |
( |
const double |
etaMax | ) |
|
|
inline |
Set the maximum allowed forcing term. Reduce from 0.99 towards e.g. 0.1 to make EW less aggressive.
◆ setGamma()
| void Dune::Fem::EisenstatWalkerStrategy::setGamma |
( |
const double |
gamma | ) |
|
|
inline |
Set the safeguard / superlinear-convergence decay parameter. Increase from 0.1 towards e.g. 0.9 for more conservative behaviour.
◆ setTolerance()
| void Dune::Fem::EisenstatWalkerStrategy::setTolerance |
( |
const double |
newtonTolerance | ) |
|
|
inline |
Set the Newton (nonlinear) tolerance used in the lower bound of eta.
◆ etaMax_
| double Dune::Fem::EisenstatWalkerStrategy::etaMax_ = 0.99 |
|
protected |
◆ gamma_
| double Dune::Fem::EisenstatWalkerStrategy::gamma_ = 0.1 |
|
protected |
◆ newtonTolerance_
| double Dune::Fem::EisenstatWalkerStrategy::newtonTolerance_ |
|
mutableprotected |
◆ previousEta_
| double Dune::Fem::EisenstatWalkerStrategy::previousEta_ = -1.0 |
|
mutableprotected |
◆ previousResidual_
| double Dune::Fem::EisenstatWalkerStrategy::previousResidual_ = -1.0 |
|
mutableprotected |
The documentation for this class was generated from the following file: