NOX Development
|
Inexact Newton Utilities More...
#include <NOX_Direction_Utils_InexactNewton.H>
Public Member Functions | |
InexactNewton () | |
Constructor. | |
InexactNewton (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList &directionSublist) | |
Constructor. | |
virtual | ~InexactNewton () |
Destructor. | |
virtual bool | reset (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList &directionSublist) |
Reset the utilities. | |
virtual double | computeForcingTerm (const NOX::Abstract::Group &soln, const NOX::Abstract::Group &oldSoln, int niter, const NOX::Solver::Generic &solver, double eta_last=-1.0) |
Inexact Newton Utilities
If we use an iterative linear solver for a Newton-based solve, then this is called an inexact Newton method. The tolerance used to terminate the linear solve is called the forcing term. The forcing term may be constant, or it may be adjustable. In either case, at iteration
Here
Adjustable forcing terms were introduced by Eisenstat and Walker (1982); here they are implemented as described in Pernice and Walker (1998). We have two choices for adjustable forcing terms:
Type 1
With the following safeguards imposed:
Type 2
With the following safeguards imposed:
Parameters
"Forcing Term Method" - Method to compute the forcing term, i.e., the tolerance for the linear solver. Choices are:
"Forcing Term Initial Tolerance" -
"Forcing Term Minimum Tolerance" -
"Forcing Term Maximum Tolerance" -
"Forcing Term Alpha" -
"Forcing Term Gamma" -
"Forcing Term User Defined Norm" (NOX::Parameter::UserNorm derived object) - If using a Type 1 or Type 2 adjustable forcing term, the norms used to calculate
"Set Tolerance in Parameter List" When calling computeForcingTerm() the value of the forcing term will be set in the parmaeter list pointed to by the InexactNewton object. It will be set under paramsPtr->sublist(<directionMethod>).sublist("Linear Solver").set("Tolerance", eta_k). Defaults to true.
References
Michael Pernice and Homer F. Walker, NITSOL: A Newton Iterative Solver for Nonlinear Systems, SISC 19(Jan 1998):302-318.
S. C. Eisenstat and H. F. Walker, Globally convergent inexact Newton methods, SINUM 19(1982):400-408
|
virtual |
Called each iteration to reset the forcing term (ie, the convergence tolerance for the linear solver).
if the user supplied eta_last then it will use this value for eta_km1 instead of looking for it in the "Linear Solver" sublist.
References NOX::Abstract::Group::applyJacobian(), NOX::Abstract::Vector::clone(), NOX::Utils::Details, NOX::Abstract::Group::getF(), NOX::Abstract::Group::getNormF(), NOX::Abstract::Group::getX(), NOX::Abstract::Group::isJacobian(), and NOX::ShapeCopy.