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

Failure test based on whether the norm of a vector has a finite value. More...

#include <NOX_StatusTest_FiniteValue.H>

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

Public Types

enum  VectorType { FVector, SolutionVector }
 Type of vector to run the finite value check on.
 

Public Member Functions

 FiniteValue (VectorType v=FVector, NOX::Abstract::Vector::NormType n=NOX::Abstract::Vector::TwoNorm)
 Constructor. Specify which vector to check and with what norm to use.
 
virtual ~FiniteValue ()
 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 int finiteNumberTest (double x) const
 The finite number test algorithm. More...
 
- Public Member Functions inherited from NOX::StatusTest::Generic
 Generic ()
 Constructor.
 
virtual ~Generic ()
 Destructor.
 

Protected Member Functions

bool NOX_isnan (double x) const
 NOX's implementation of isnan().
 
bool NOX_isinf (double x) const
 NOX's implementation of isinf().
 

Detailed Description

Failure test based on whether the norm of a vector has a finite value.

This test returns NOX::StatusTest::Failed if the norm of a vector is calssified as a NaN or Inf. Otherwise, it returns NOX::StatusTest::Unconverged. The user can specify whether to use the F vector or the solution vector from the current solution group for the check. NOX does not have access to vector entries so the number used in the NaN/Inf check is based on the norm of a vector.

Note
If checkStatus is called with the type set to NOX::StatusTest::None, then the status is set to NOX::Status::Unevaluated and returned.

Member Function Documentation

NOX::StatusTest::StatusType NOX::StatusTest::FiniteValue::checkStatus ( const NOX::Solver::Generic problem,
NOX::StatusTest::CheckType  checkType 
)
virtual
int NOX::StatusTest::FiniteValue::finiteNumberTest ( double  x) const
virtual

The finite number test algorithm.

Autoconf will test to see if the compiler implements the isnan() and isinf() functions in the cmath or math.h headers. If so, we will use these. If not, we supply a default implementation. The default implementation is only guaranteed to work if the code is IEEE 748/754 compliant. The checks for isnan and isinf are separate because compilers like the old sgi platforms support one but not the other. See bug 2019 for more details.

This method is public so that other objects (solvers, line searches, and directions) can use this test on their own values.

Return Values:

  • 0 = Finite Number
  • -1 = NaN
  • -2 = Inf

Referenced by NOX::LineSearch::Polynomial::checkConvergence(), and NOX::LineSearch::Backtrack::compute().


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