#include <NOX_LineSearch_NonlinearCG.H>
Inheritance diagram for NOX::LineSearch::NonlinearCG:
Public Member Functions | |
| NonlinearCG (const Teuchos::RefCountPtr< NOX::GlobalData > &gd, Teuchos::ParameterList ¶ms) | |
| Constructor. | |
| ~NonlinearCG () | |
| Destructor. | |
| bool | reset (const Teuchos::RefCountPtr< NOX::GlobalData > &gd, Teuchos::ParameterList ¶ms) |
| Reset parameters. | |
| bool | compute (NOX::Abstract::Group &newgrp, double &step, const NOX::Abstract::Vector &dir, const NOX::Solver::Generic &s) |
| Perform a line search. | |
This is a simple linesearch intended to be used with NOX::Direction::NonlinearCG, which provides search direction
, in computing an update to the current solution vector
. It is designed to compute a step length
consistent with the exact linesearch of Linear CG for linear problems, and it avoids use of matrices by employing a directional derivative (details below). The step length,
is computed from a single evaluation of,
where
is the n x n Jacobian matrix. Explicit construction of
is avoided by performing the product
using a directional derivative (cf NOX::Epetra::MatrixFree):
where
.
Derivation / Theory:
This linesearch is derived by attempting to achieve in a single step, the following minimization:
where
is a merit function chosen (but never explicitly given) so that an equivalence to Linear CG holds, ie
. The minimization above can now be cast as an equation:
An approximate solution to this equation can be obtained from a second-order expansion of
,
from which it immediately follows
Input Parameters
The NonlinearCG linesearch is selected using:
"Line Search"
"Method" = "%NonlinearCG" [required]
Currently, no adjustable parameters exist for this linesarch.
References
Jonathan Richard Shewchuk, <A HREF="http://www-2.cs.cmu.edu/~jrs/jrspapers.html"/> "An Introduction to the Conjugate Gradient Method Without the Agonizing Pain," 1994. Though presented within the context of nonlinear optimization, the connection to solving nonlinear equation systems is made via the equivalence
.
|
||||||||||||||||||||
|
Perform a line search. Let
In the end, we should have computed
Ideally, Implements NOX::LineSearch::Generic. |
1.3.9.1