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:

Collaboration diagram for NOX::StatusTest::FiniteValue:
List of all members.

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 ()
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 int finiteNumberTest (double x) const
 The finite number test algorithm.

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.

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

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.

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

The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:38:40 2008 for NOX by doxygen