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]

List of all members.

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.
 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.

Private Attributes

NOX::StatusTest::StatusType status
 Status
Teuchos::RCP
< NOX::Abstract::Vector
updateVectorPtr
 Vector containing the update for the current outer iteration.
NOX::Abstract::Vector::NormType normType
 Type of norm to use.
ScaleType scaleType
 Scaling to use.
double tolerance
 Tolerance value specified by user in constructor.
double normUpdate
 Norm of the update to be compared to trueTolerance.


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} \]

Definition at line 119 of file NOX_StatusTest_NormUpdate.H.


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.

Definition at line 124 of file NOX_StatusTest_NormUpdate.H.


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.

Definition at line 52 of file NOX_StatusTest_NormUpdate.C.

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.

Definition at line 61 of file NOX_StatusTest_NormUpdate.C.

NormUpdate::~NormUpdate (  )  [virtual]

Destructor.

Definition at line 70 of file NOX_StatusTest_NormUpdate.C.


Member Function Documentation

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

StatusType NormUpdate::getStatus (  )  const [virtual]

Return the result of the most recent checkStatus call.

Implements NOX::StatusTest::Generic.

Definition at line 134 of file NOX_StatusTest_NormUpdate.C.

References status.

ostream & NormUpdate::print ( ostream &  stream,
int  indent = 0 
) const [virtual]

Output formatted description of stopping test to output stream.

Implements NOX::StatusTest::Generic.

Definition at line 139 of file NOX_StatusTest_NormUpdate.C.

References normUpdate, NOX::Utils::sciformat(), status, and tolerance.

double NOX::StatusTest::NormUpdate::getNormUpdate (  )  const [virtual]

Returns the value of the Update-norm computed in the last call to checkStatus.

Definition at line 149 of file NOX_StatusTest_NormUpdate.C.

References normUpdate.

double NOX::StatusTest::NormUpdate::getTolerance (  )  const [virtual]

Returns the true tolerance.

Definition at line 154 of file NOX_StatusTest_NormUpdate.C.

References tolerance.


Member Data Documentation

Status

Definition at line 166 of file NOX_StatusTest_NormUpdate.H.

Referenced by checkStatus(), getStatus(), and print().

Vector containing the update for the current outer iteration.

Definition at line 169 of file NOX_StatusTest_NormUpdate.H.

Referenced by checkStatus().

Type of norm to use.

Definition at line 172 of file NOX_StatusTest_NormUpdate.H.

Referenced by checkStatus().

Scaling to use.

Definition at line 175 of file NOX_StatusTest_NormUpdate.H.

Referenced by checkStatus().

Tolerance value specified by user in constructor.

Definition at line 178 of file NOX_StatusTest_NormUpdate.H.

Referenced by checkStatus(), getTolerance(), and print().

Norm of the update to be compared to trueTolerance.

Definition at line 181 of file NOX_StatusTest_NormUpdate.H.

Referenced by checkStatus(), getNormUpdate(), and print().


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

Generated on Wed Oct 21 14:28:49 2009 for Nonlinear Solver Project by  doxygen 1.5.9