NOX::Direction::Newton Class ReferenceNewton direction computation
Inheritance diagram for NOX::Direction::Newton:[legend]Collaboration diagram for NOX::Direction::Newton:[legend]List of all members.
Newton direction computation
Computes the Newton direction by solving the Newton system.
Here is the n x n Jacobian matrix at the current iterate, is the n-vector representing the nonlinear function at the current iterate, and is the n-vector that we are solving for.
If we use an iterative linear solver for the Newton system, 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 we require,
Here is the forcing term for iteration .
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:
- This solution tolerance is to be enforced by the user's implementation of NOX::Abstract::Group::computeNewton; it is passed in as the "Tolerance" in the parameter list for that function.
"Method" = "Newton" [required]
"Forcing Term Method" - Method to compute the forcing term, i.e., the tolerance for the linear solver. Choices are:
"Forcing Term Initial Tolerance" - (initial linear solver tolerance). Defaults to 0.1.
"Forcing Term Minimum Tolerance" - . Defaults to 1.0e-6.
"Forcing Term Maximum Tolerance" - . Defaults to 0.01.
"Forcing Term Alpha" - (used only by "Type 2"). Defaults to 1.5.
"Forcing Term Gamma" - (used only by "Type 2"). Defaults to 0.9.
"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 should be based on the same norm used in the convergence test of the linear solver. Essentially this means that the norm must account for LEFT scaling of any kind that is applied to the linear system during a solve. If set, the computation of will be done using a used defined function that is passed in through a NOX::Parameter::Arbitrary derived object. It will take the arbitrary object and cast it to a NOX::Parameter::UserNorm object and use it for norm computations. If this parameter is not set, this method uses the L-2 Norm for any norm computations of .
"Rescue Bad %Newton Solve" (Boolean) - True if we even if the linear solve does not meet the tolerance specified by the forcing term. Defaults to true.
"Tolerance" - Tolerance for the linear solve. This may be adjusted automatically by the forcing calculation. Defaults to 1.0e-10. Will be adjusted automatically by NOX if the "Forcing Term Method" is "Type 1" or "Type 2".
- When using a forcing term, it's critically important the the residual of the original system is used in the comparison. This can be an issue if scaling or left preconditioning is applied to the linear system.
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
Member Function Documentation
Compute the direction vector,
dir, for a specific method given the current group,
grp is not const so that we can compute the F vector, the Jacobian matrix, the Newton vector, and so on.
Const access to the solver is used for getting additional information such as the past solution, the iteration number, and so on.
Called each iteration to reset the forcing term (ie, the convergence tolerance for the linear solver).
The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:42:27 2008 for NOX by 188.8.131.52