#include <NOX_StatusTest_SafeCombo.hpp>
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. | |
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. |
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 | |||
) |
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.
virtual StatusType NOX::StatusTest::SafeCombo::checkStatus | ( | const NOX::Solver::Generic & | problem | ) | [virtual] |
Calls checkStatus(problem, NOX::StatusTest::Minimal).
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.
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.
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.
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.