#include <NOX_StatusTest_NormUpdate.H>
Inheritance diagram for NOX::StatusTest::NormUpdate:
Public Types | |
Unscaled | |
No norm scaling. | |
Scaled | |
Scale the norm by the length of the vector. | |
enum | ScaleType { Unscaled, Scaled } |
Type that determines whether to scale the norm by the problem size. More... | |
Public Member Functions | |
NormUpdate (double tolerance, NOX::Abstract::Vector::NormType ntype, ScaleType stype=Scaled) | |
Constructor for absolute norm. | |
NormUpdate (double tolerance, ScaleType stype=Scaled) | |
Constructor for absolute norm. | |
virtual | ~NormUpdate () |
Destructor. | |
virtual NOX::StatusTest::StatusType | checkStatus (const NOX::Solver::Generic &problem, NOX::StatusTest::CheckType checkType) |
Test the stopping criterion | |
virtual NOX::StatusTest::StatusType | getStatus () const |
Return the result of the most recent checkStatus call. | |
virtual ostream & | print (ostream &stream, int indent=0) const |
Output formatted description of stopping test to output stream. | |
virtual double | getNormUpdate () const |
Returns the value of the Update-norm computed in the last call to checkStatus. | |
virtual double | getTolerance () const |
Returns the true tolerance. |
If checkStatusEfficiently is called with the type set to NOX::StatusTest::None, then the status is set to NOX::StatusTest::Unevaluated and returned. (Also normUpdate is set to -1.0.)
If checkStatusEfficiently is called on the first iteration, then the status is set to NOX::StatusTest::Unconverged and returned. (Also normUpdate is set to -1.0.)
If checkStatusEfficiently is called on a problem where the solution group does not have F evaluated (i.e., problem.getSolutionGroup().isF() is false), then the status is set to NOX::StatusTest::Unconverged and returned. (Also normUpdate is set to -1.0.)
Finally, we return NOX::StatusTest::Converged if and NOX::StatusTest::Uncoverged otherwise. Here represents the norm of and represents the tolerance. We define:
where is the solution vector of the -th nonlinear iterate.
Let denote an optional scale factor defined as
sType
in the constructor is NOX::NormF::Scaled, and
sType
in the constructor is NOX::NormF::Unscaled.Then is defined as follows:
nType
in the constructor is Abstract::Vector::TWO, then
nType
in the constructor is Abstract::Vector::ONE, then
nType
in the constructor is Abstract::Vector::INF, then
Finally, is set to the tolerance
in the constructor, i.e.,
NormUpdate::NormUpdate | ( | double | tolerance, | |
NOX::Abstract::Vector::NormType | ntype, | |||
ScaleType | stype = Scaled | |||
) |
Constructor for absolute norm.
This constructor defaults to the Absolute
tolerance type.
NormUpdate::NormUpdate | ( | double | tolerance, | |
ScaleType | stype = Scaled | |||
) |
Constructor for absolute norm.
This constructor defaults to the Absolute
ToleranceType and TWO
NormType.
StatusType NormUpdate::checkStatus | ( | const NOX::Solver::Generic & | problem, | |
NOX::StatusTest::CheckType | checkType | |||
) | [virtual] |
Test the stopping criterion
The test can (and should, if possible) be skipped if checkType is NOX::StatusType::None. If the test is skipped, then the status should be set to NOX::StatusTest::Unevaluated.
Implements NOX::StatusTest::Generic.