Class xlifepp::StatusTest#

template<class ScalarType, class MV, class OP>
class StatusTest#

Inheritence diagram for xlifepp::StatusTest:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::StatusTest< ScalarType, MV, OP >" tooltip="xlifepp::StatusTest< ScalarType, MV, OP >" fillcolor="#BFBFBF"] "2" [label="xlifepp::StatusTestCombo< ScalarType, MV, OP >" tooltip="xlifepp::StatusTestCombo< ScalarType, MV, OP >"] "3" [label="xlifepp::StatusTestMaxIters< ScalarType, MV, OP >" tooltip="xlifepp::StatusTestMaxIters< ScalarType, MV, OP >"] "4" [label="xlifepp::StatusTestOutput< ScalarType, MV, OP >" tooltip="xlifepp::StatusTestOutput< ScalarType, MV, OP >"] "5" [label="xlifepp::StatusTestResNorm< ScalarType, MV, OP >" tooltip="xlifepp::StatusTestResNorm< ScalarType, MV, OP >"] "6" [label="xlifepp::StatusTestWithOrdering< ScalarType, MV, OP >" tooltip="xlifepp::StatusTestWithOrdering< ScalarType, MV, OP >"] "2" -> "1" [dir=forward tooltip="public-inheritance"] "3" -> "1" [dir=forward tooltip="public-inheritance"] "4" -> "1" [dir=forward tooltip="public-inheritance"] "5" -> "1" [dir=forward tooltip="public-inheritance"] "6" -> "1" [dir=forward tooltip="public-inheritance"] }

Collaboration diagram for xlifepp::StatusTest:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::StatusTest< ScalarType, MV, OP >" tooltip="xlifepp::StatusTest< ScalarType, MV, OP >" fillcolor="#BFBFBF"] }

A pure virtual class for defining the status tests for the xlifepp iterative solvers.

xlifepp::StatusTest is an interface that can be implemented to create convergence tests for all xlifepp solvers. Almost any kind of test can be expressed using this mechanism, including composite tests (see StatusTestCombo).

Subclassed by xlifepp::StatusTestCombo< ScalarType, MV, OP >, xlifepp::StatusTestMaxIters< ScalarType, MV, OP >, xlifepp::StatusTestOutput< ScalarType, MV, OP >, xlifepp::StatusTestResNorm< ScalarType, MV, OP >, xlifepp::StatusTestWithOrdering< ScalarType, MV, OP >

Constructors/destructors

inline StatusTest()#

Constructor.

inline virtual ~StatusTest()#

Destructor.

Status methods

virtual TestStatus checkStatus(EigenSolver<ScalarType, MV, OP> *solver) = 0#

Check status as defined by test.

Returns:

TestStatus indicating whether the test passed or failed.

virtual TestStatus getStatus() const = 0#

Return the result of the most recent checkStatus call, or undefined if it has not been run.

virtual std::vector<int> whichVecs() const = 0#

Get the indices for the vectors that passed the test.

virtual int howMany() const = 0#

Get the number of vectors that passed the test.

Reset methods

virtual void reset() = 0#

Informs the status test that it should reset its internal configuration to the uninitialized state.

This is necessary for the case when the status test is being reused by another solver or for another eigenvalue problem. The status test may have information that pertains to a particular problem or solver state. The internal information will be reset back to the uninitialized state. The user specified information that the convergence test uses will remain.

virtual void clearStatus() = 0#

Clears the results of the last status test.

This should be distinguished from the reset() method, as it only clears the cached result from the last status test, so that a call to getStatus() will return Undefined. This is necessary for the SEQOR and SEQAND tests in the StatusTestCombo class, which may short circuit and not evaluate all of the StatusTests contained in them.

Print methods

virtual std::ostream &print(std::ostream &os, int indent = 0) const = 0#

Output formatted description of stopping test to output stream.

virtual PrintStream &print(PrintStream &os, int indent = 0) const = 0#

Output formatted description of stopping test to output stream.