Public Types | |
enum | ComboType { AND, OR } |
The test can be either the AND of all the component tests, or the OR of all the component tests. More... | |
Public Member Functions | |
SafeCombo (ComboType t) | |
Constructor. | |
SafeCombo (ComboType t, const Teuchos::RCP< Generic > &a) | |
Constructor with a single test. | |
SafeCombo (ComboType t, const Teuchos::RCP< Generic > &a, const Teuchos::RCP< Generic > &b) | |
Constructor with two tests. | |
virtual SafeCombo & | addStatusTest (const Teuchos::RCP< Generic > &a) |
Add another test to this combination. | |
virtual | ~SafeCombo () |
Destructor. | |
virtual StatusType | checkStatus (const NOX::Solver::Generic &problem) |
Calls checkStatus(problem, NOX::StatusTest::Minimal). | |
virtual StatusType | checkStatus (const NOX::Solver::Generic &problem, NOX::StatusTest::CheckType checkType) |
Tests stopping criterion. | |
virtual StatusType | getStatus () const |
virtual ostream & | print (std::ostream &stream, int indent=0) const |
Protected Member Functions | |
virtual void | orOp (const Solver::Generic &problem, NOX::StatusTest::CheckType checkType) |
Use this for checkStatus when this is an OR type combo. Updates NOX::StatusTest::Combo::status. | |
virtual void | andOp (const Solver::Generic &problem, NOX::StatusTest::CheckType checkType) |
Use this for checkStatus when this is an AND type combo. Updates NOX::StatusTest::Combo::status. | |
bool | isSafe (const Teuchos::RCP< Generic > &a) |
Check whether or not it is safe to add a to this list of tests. | |
Private Attributes | |
const ComboType | type |
Type of test. | |
vector< Teuchos::RCP< Generic > > | tests |
Vector of generic status tests. | |
StatusType | status |
Status |
In the AND
(see NOX::StatusTest::Combo::ComboType) combination, the result is Unconverged
(see NOX::StatusTest::StatusType) if any of the tests is Unconverged
. Otherwise, the result is equal to the result of the first test in the list that is either Converged
or Failed
. It is not recommended to mix Converged
and Failed
tests in an AND
combination.
In the OR
combination, the result is Unconverged
if all of the tests are Unconverged
. Otherwise, it is the result of the first test in the list that is either Converged
or Failed
. Therefore, it will generally make sense to put the Failed
-type tests at the end of the OR
list.
This is identical in operation to StatusTest::Combo. but stores the constituent subtests using a reference-counted pointer. This ensures safe behavior if the constituent subtests go out of scope before the combo.
Definition at line 46 of file NOX_StatusTest_SafeCombo.hpp.
The test can be either the AND of all the component tests, or the OR of all the component tests.
AND | Logically "AND" together the results of the tests in this combination. |
OR | Logically "OR" together the results of the tests in this combination. |
Definition at line 54 of file NOX_StatusTest_SafeCombo.hpp.
NOX::StatusTest::SafeCombo::SafeCombo | ( | ComboType | t | ) |
NOX::StatusTest::SafeCombo::SafeCombo | ( | ComboType | t, | |
const Teuchos::RCP< Generic > & | a | |||
) |
NOX::StatusTest::SafeCombo::SafeCombo | ( | ComboType | t, | |
const Teuchos::RCP< Generic > & | a, | |||
const Teuchos::RCP< Generic > & | b | |||
) |
Constructor with two tests.
Definition at line 26 of file NOX_StatusTest_SafeCombo.cpp.
References addStatusTest(), status, and tests.
NOX::StatusTest::SafeCombo::~SafeCombo | ( | ) | [virtual] |
NOX::StatusTest::SafeCombo & NOX::StatusTest::SafeCombo::addStatusTest | ( | const Teuchos::RCP< Generic > & | a | ) | [virtual] |
Add another test to this combination.
Calls isSafe() to determine if it is safe to add a
to the combination.
Definition at line 36 of file NOX_StatusTest_SafeCombo.cpp.
References isSafe(), print(), and tests.
Referenced by SafeCombo().
void NOX::StatusTest::SafeCombo::andOp | ( | const Solver::Generic & | problem, | |
NOX::StatusTest::CheckType | checkType | |||
) | [protected, virtual] |
Use this for checkStatus when this is an AND type combo. Updates NOX::StatusTest::Combo::status.
If any tests are NOX::StatusTest::Unconverged, then the status of this test is NOX::StatusTest::Unconverged. If there is a combination of NOX::StatusTest::Failed and NOX::StatusTest::Converged in the tests that are AND'd together, the value of status for this test is set to the status of the first test it encounters. The tests are evaluated in the order that they were added to the combination.
Definition at line 141 of file NOX_StatusTest_SafeCombo.cpp.
virtual StatusType NOX::StatusTest::SafeCombo::checkStatus | ( | const NOX::Solver::Generic & | problem, | |
NOX::StatusTest::CheckType | checkType | |||
) | [virtual] |
Tests stopping criterion.
See addOp() and orOp() for details.
virtual StatusType NOX::StatusTest::SafeCombo::checkStatus | ( | const NOX::Solver::Generic & | problem | ) | [virtual] |
Calls checkStatus(problem, NOX::StatusTest::Minimal).
NOX::StatusTest::StatusType NOX::StatusTest::SafeCombo::getStatus | ( | ) | const [virtual] |
bool NOX::StatusTest::SafeCombo::isSafe | ( | const Teuchos::RCP< Generic > & | a | ) | [protected] |
Check whether or not it is safe to add a
to this list of tests.
This is necessary to avoid any infinite recursions (i.e., a test cannot own a copy of itself).
Definition at line 53 of file NOX_StatusTest_SafeCombo.cpp.
References isSafe(), and tests.
Referenced by addStatusTest(), and isSafe().
void NOX::StatusTest::SafeCombo::orOp | ( | const Solver::Generic & | problem, | |
NOX::StatusTest::CheckType | checkType | |||
) | [protected, virtual] |
Use this for checkStatus when this is an OR type combo. Updates NOX::StatusTest::Combo::status.
If there is a combination of NOX::StatusTest::Failed and NOX::StatusTest::Converged in the tests that are OR'd together, the value of status for this test is set to the status of the first test it encounters which is not NOX::Status::Unconvered. The tests are evaluated in the order that they were added to the combination.
Definition at line 111 of file NOX_StatusTest_SafeCombo.cpp.
ostream & NOX::StatusTest::SafeCombo::print | ( | std::ostream & | stream, | |
int | indent = 0 | |||
) | const [virtual] |
Definition at line 184 of file NOX_StatusTest_SafeCombo.cpp.
References OR, status, tests, and type.
Referenced by addStatusTest().
StatusType NOX::StatusTest::SafeCombo::status [private] |
Status
Definition at line 152 of file NOX_StatusTest_SafeCombo.hpp.
Referenced by andOp(), getStatus(), orOp(), print(), and SafeCombo().
vector<Teuchos::RCP<Generic> > NOX::StatusTest::SafeCombo::tests [private] |
Vector of generic status tests.
Definition at line 149 of file NOX_StatusTest_SafeCombo.hpp.
Referenced by addStatusTest(), andOp(), isSafe(), orOp(), print(), and SafeCombo().
const ComboType NOX::StatusTest::SafeCombo::type [private] |