#include <NOX_StatusTest_FiniteValue.H>
Inheritance diagram for NOX::StatusTest::FiniteValue:
Public Types | |
FVector | |
SolutionVector | |
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 | |
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(). |
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.
NOX::StatusTest::StatusType NOX::StatusTest::FiniteValue::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.
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: