NOX
Development
|
Generic backtracking line search. More...
#include <NOX_LineSearch_Backtrack.H>
Public Member Functions | |
Backtrack (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList ¶ms) | |
Constructor. | |
~Backtrack () | |
Destructor. | |
bool | reset (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList ¶ms) |
bool | compute (NOX::Abstract::Group &newgrp, double &step, const NOX::Abstract::Vector &dir, const NOX::Solver::Generic &s) |
Perform a line search. More... | |
Public Member Functions inherited from NOX::LineSearch::Generic | |
Generic () | |
Default constructor. | |
virtual | ~Generic () |
Destructor. | |
Generic backtracking line search.
This line search starts with the step length defined by "Default
Step". It checks to see if the norm of the right hand side (RHS) has been reduced. If so, it exits successfully. Otherwise, it reduces the step length by the reduction factor (defaults to one-half). It continues to repeat this procedure until it either finds a reduction in the norm of the RHS or the step is less than that specified by "Minimum Step". In the later case, the line search has failed, and we take the step defined by "Recovery Step".
This line search can be called via NOX::LineSearch::Manager.
The following parameters can be specified for this line search in the "Backtrack" sublist of the "Line Search" sublist.
|
virtual |
Perform a line search.
On input:
grp | The initial solution vector, . |
dir | A vector of directions to be used in the line search, . |
s | The nonlinear solver. |
On output:
step | The distance the direction was scaled, . |
grp | The grp is updated with a new solution, , resulting from the linesearch. Normally, for a single direction line search, this is computed as: |
Ideally, (e.g the final direction is a descent direction).
Note that the dir
object is a std::vector. For typical line searches as described in the above equation, this vector is of size one. We have used a std::vector to allow for special cases of multi-directional line searches such as the Bader/Schnabel curvillinear line search.
Return value is true for a successful line search computation.
Implements NOX::LineSearch::Generic.
References NOX::Abstract::Group::computeF(), NOX::Abstract::Group::computeX(), NOX::Utils::fill(), NOX::StatusTest::FiniteValue::finiteNumberTest(), NOX::Solver::Generic::getPreviousSolutionGroup(), NOX::Utils::InnerIteration, and NOX::Abstract::Group::Ok.