NOX  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | List of all members
NOX::StatusTest::NormUpdate Class Reference

Various convergence tests based on the norm of the change in the solution vector, $ x $, between outer iterations. More...

#include <NOX_StatusTest_NormUpdate.H>

Inheritance diagram for NOX::StatusTest::NormUpdate:
Inheritance graph
[legend]
Collaboration diagram for NOX::StatusTest::NormUpdate:
Collaboration graph
[legend]

Public Types

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. More...
 
 NormUpdate (double tolerance, ScaleType stype=Scaled)
 Constructor for absolute norm. More...
 
virtual ~NormUpdate ()
 Destructor.
 
virtual NOX::StatusTest::StatusType checkStatus (const NOX::Solver::Generic &problem, NOX::StatusTest::CheckType checkType)
 Test the stopping criterion More...
 
virtual NOX::StatusTest::StatusType getStatus () const
 Return the result of the most recent checkStatus call.
 
virtual std::ostream & print (std::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.
 
- Public Member Functions inherited from NOX::StatusTest::Generic
 Generic ()
 Constructor.
 
virtual ~Generic ()
 Destructor.
 

Detailed Description

Various convergence tests based on the norm of the change in the solution vector, $ x $, between outer iterations.

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 $\alpha < \beta$ and NOX::StatusTest::Uncoverged otherwise. Here $\alpha$ represents the norm of $ \Delta x $ and $\beta$ represents the tolerance. We define:

\[ \Delta x = x_k - x_{k-1} \]

where $ x_k $ is the solution vector of the $ k $-th nonlinear iterate.

Let $\gamma$ denote an optional scale factor defined as

Then $\alpha$ is defined as follows:

Finally, $\beta$ is set to the tolerance in the constructor, i.e.,

\[ \beta = \mbox{tolerance} \]

Member Enumeration Documentation

Type that determines whether to scale the norm by the problem size.

Enumerator
Unscaled 

No norm scaling.

Scaled 

Scale the norm by the length of the vector.

Constructor & Destructor Documentation

NormUpdate::NormUpdate ( double  tolerance,
NOX::Abstract::Vector::NormType  ntype,
ScaleType  stype = Scaled 
)

Constructor for absolute norm.

This constructor defaults to the Absolute tolerance type.

References NOX::StatusTest::Unevaluated.

NormUpdate::NormUpdate ( double  tolerance,
ScaleType  stype = Scaled 
)

Constructor for absolute norm.

This constructor defaults to the Absolute ToleranceType and TWO NormType.

Member Function Documentation

StatusType NormUpdate::checkStatus ( const NOX::Solver::Generic problem,
NOX::StatusTest::CheckType  checkType 
)
virtual

The documentation for this class was generated from the following files: