#include <NOX_Direction_Newton.H>
Inheritance diagram for NOX::Direction::Newton:
Public Member Functions | |
Newton (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList ¶ms) | |
Constructor. | |
virtual | ~Newton () |
Destructor. | |
virtual bool | reset (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList ¶ms) |
Reset direction based on possibly new parameters. | |
virtual bool | compute (NOX::Abstract::Vector &dir, NOX::Abstract::Group &grp, const NOX::Solver::Generic &solver) |
Compute the direction vector, dir , for a specific method given the current group, grp . | |
virtual bool | compute (NOX::Abstract::Vector &dir, NOX::Abstract::Group &grp, const NOX::Solver::LineSearchBased &solver) |
Same as compute(NOX::Abstract::Vector&, NOX::Abstract::Group&, const NOX::Solver::Generic&). | |
Protected Member Functions | |
virtual bool | resetForcingTerm (const NOX::Abstract::Group &soln, const NOX::Abstract::Group &oldSoln, int niter, const NOX::Solver::Generic &solver) |
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 .
With the following safeguards imposed:
With the following safeguards imposed:
Parameters
"Direction":
"Direction"/"Newton":
"Direction"/"Newton"/"Linear Solver":
bool NOX::Direction::Newton::compute | ( | NOX::Abstract::Vector & | dir, | |
NOX::Abstract::Group & | grp, | |||
const NOX::Solver::LineSearchBased & | solver | |||
) | [virtual] |
Same as compute(NOX::Abstract::Vector&, NOX::Abstract::Group&, const NOX::Solver::Generic&).
Enables direct support for line search based solvers for the purpose of efficiency since the LineSearchBased object has a getStep() function that some directions require.
If it is not redefined in the derived class, it will just call the compute with the NOX::Solver::Generic argument.
Reimplemented from NOX::Direction::Generic.
bool NOX::Direction::Newton::compute | ( | NOX::Abstract::Vector & | dir, | |
NOX::Abstract::Group & | grp, | |||
const NOX::Solver::Generic & | solver | |||
) | [virtual] |
Compute the direction vector, dir
, for a specific method given the current group, grp
.
The 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.
Implements NOX::Direction::Generic.
bool NOX::Direction::Newton::resetForcingTerm | ( | const NOX::Abstract::Group & | soln, | |
const NOX::Abstract::Group & | oldSoln, | |||
int | niter, | |||
const NOX::Solver::Generic & | solver | |||
) | [protected, virtual] |
Called each iteration to reset the forcing term (ie, the convergence tolerance for the linear solver).