NOX
Development
|
A line search that determines the step size by capping the magnitue of specific entries of the direction vector. The limits are specified by a user defined vector. More...
#include <NOX_LineSearch_SafeguardedStep.H>
Public Member Functions | |
SafeguardedStep (const Teuchos::RCP< NOX::GlobalData > &gd, Teuchos::ParameterList ¶ms) | |
Constructor. | |
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... | |
Teuchos::RCP< const Teuchos::ParameterList > | getValidParameters () |
Public Member Functions inherited from NOX::LineSearch::Generic | |
Generic () | |
Default constructor. | |
virtual | ~Generic () |
Destructor. | |
A line search that determines the step size by capping the magnitue of specific entries of the direction vector. The limits are specified by a user defined vector.
|
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::computeX(), NOX::Utils::Details, NOX::Abstract::Group::getX(), NOX::Utils::InnerIteration, NOX::Abstract::Vector::MaxNorm, NOX::Abstract::Vector::norm(), NOX::Abstract::Vector::print(), and NOX::Abstract::Vector::scale().