Belos Package Browser (Single Doxygen Collection)
Development
|
An implementation of StatusTestResNorm using a family of residual norms. More...
#include <BelosStatusTestGenResNorm.hpp>
Public Types | |
typedef Teuchos::ScalarTraits < ScalarType > | SCT |
typedef SCT::magnitudeType | MagnitudeType |
typedef MultiVecTraits < ScalarType, MV > | MVT |
Public Types inherited from Belos::StatusTestResNorm< ScalarType, MV, OP > | |
typedef Teuchos::ScalarTraits < ScalarType > | SCT |
typedef SCT::magnitudeType | MagnitudeType |
typedef MultiVecTraits < ScalarType, MV > | MVT |
Enums. | |
enum | ResType { Implicit, Explicit } |
Select how the residual std::vector is produced. More... | |
Constructors/destructors. | |
StatusTestGenResNorm (MagnitudeType Tolerance, int quorum=-1, bool showMaxResNormOnly=false) | |
Constructor. More... | |
virtual | ~StatusTestGenResNorm () |
Destructor. More... | |
Form and parameter definition methods. | |
int | defineResForm (ResType TypeOfResidual, NormType TypeOfNorm) |
Define form of the residual, its norm and optional weighting std::vector. More... | |
int | defineScaleForm (ScaleType TypeOfScaling, NormType TypeOfNorm, MagnitudeType ScaleValue=Teuchos::ScalarTraits< MagnitudeType >::one()) |
Define form of the scaling, its norm, its optional weighting std::vector, or, alternatively, define an explicit value. More... | |
NormType | getResNormType () |
int | setTolerance (MagnitudeType tolerance) |
Set the value of the tolerance. More... | |
int | setQuorum (int quorum) |
Sets the number of residuals that must pass the convergence test before Passed is returned. More... | |
int | setShowMaxResNormOnly (bool showMaxResNormOnly) |
Set whether the only maximum residual norm is displayed when the print() method is called. More... | |
Status methods | |
StatusType | checkStatus (Iteration< ScalarType, MV, OP > *iSolver) |
Check convergence status: Passed, Failed, or Undefined. More... | |
StatusType | getStatus () const |
Return the result of the most recent CheckStatus call. More... | |
Reset methods | |
void | reset () |
Resets the internal configuration to the initial state. More... | |
Print methods | |
void | print (std::ostream &os, int indent=0) const |
Output formatted description of stopping test to output stream. More... | |
void | printStatus (std::ostream &os, StatusType type) const |
Print message for each status specific to this stopping test. More... | |
Methods to access data members. | |
Teuchos::RCP< MV > | getSolution () |
Returns the current solution estimate that was computed for the most recent residual test. More... | |
int | getQuorum () const |
Returns the number of residuals that must pass the convergence test before Passed is returned. More... | |
bool | getShowMaxResNormOnly () |
Returns whether the only maximum residual norm is displayed when the print() method is called. More... | |
std::vector< int > | convIndices () |
Returns the std::vector containing the indices of the residuals that passed the test. More... | |
MagnitudeType | getTolerance () const |
Returns the value of the tolerance, , set in the constructor. More... | |
const std::vector < MagnitudeType > * | getTestValue () const |
Returns the test value, , computed in most recent call to CheckStatus. More... | |
const std::vector < MagnitudeType > * | getResNormValue () const |
Returns the residual norm value, , computed in most recent call to CheckStatus. More... | |
const std::vector < MagnitudeType > * | getScaledNormValue () const |
Returns the scaled norm value, . More... | |
bool | getLOADetected () const |
Returns a boolean indicating a loss of accuracy has been detected in computing the residual. More... | |
Misc. | |
StatusType | firstCallCheckStatusSetup (Iteration< ScalarType, MV, OP > *iSolver) |
Call to setup initial scaling std::vector. More... | |
Overridden from Teuchos::Describable | |
std::string | description () const |
Method to return description of the maximum iteration status test. More... | |
Private methods. | |
std::string | resFormStr () const |
Description of current residual form. More... | |
Private data members. | |
MagnitudeType | tolerance_ |
Tolerance used to determine convergence. More... | |
int | quorum_ |
Number of residuals that must pass the convergence test before Passed is returned. More... | |
bool | showMaxResNormOnly_ |
Determines if the entries for all of the residuals are shown or just the max. More... | |
ResType | restype_ |
Type of residual to use (explicit or implicit) More... | |
NormType | resnormtype_ |
Type of norm to use on residual (OneNorm, TwoNorm, or InfNorm). More... | |
ScaleType | scaletype_ |
Type of scaling to use (Norm of RHS, Norm of Initial Residual, None or User provided) More... | |
NormType | scalenormtype_ |
Type of norm to use on the scaling (OneNorm, TwoNorm, or InfNorm) More... | |
MagnitudeType | scalevalue_ |
Scaling value. More... | |
std::vector< MagnitudeType > | scalevector_ |
Scaling std::vector. More... | |
std::vector< MagnitudeType > | resvector_ |
Residual norm std::vector. More... | |
std::vector< MagnitudeType > | testvector_ |
Test std::vector = resvector_ / scalevector_. More... | |
std::vector< int > | ind_ |
Vector containing the indices for the vectors that passed the test. More... | |
Teuchos::RCP< MV > | curSoln_ |
Most recent solution vector used by this status test. More... | |
StatusType | status_ |
Status. More... | |
int | curBlksz_ |
The current blocksize of the linear system being solved. More... | |
int | curNumRHS_ |
The current number of right-hand sides being solved for. More... | |
std::vector< int > | curLSIdx_ |
The indices of the current number of right-hand sides being solved for. More... | |
int | curLSNum_ |
The current number of linear systems that have been loaded into the linear problem. More... | |
int | numrhs_ |
The total number of right-hand sides being solved for. More... | |
bool | firstcallCheckStatus_ |
Is this the first time CheckStatus is called? More... | |
bool | firstcallDefineResForm_ |
Is this the first time DefineResForm is called? More... | |
bool | firstcallDefineScaleForm_ |
Is this the first time DefineScaleForm is called? More... | |
Additional Inherited Members | |
Public Member Functions inherited from Belos::StatusTestResNorm< ScalarType, MV, OP > | |
Public Member Functions inherited from Belos::StatusTest< ScalarType, MV, OP > | |
StatusTest () | |
Constructor. More... | |
virtual | ~StatusTest () |
Destructor. More... | |
Public Member Functions inherited from Teuchos::Describable | |
DescribableStreamManipulatorState | describe (const Describable &describable, const EVerbosityLevel verbLevel=Describable::verbLevel_default) |
std::ostream & | operator<< (std::ostream &os, const DescribableStreamManipulatorState &d) |
virtual void | describe (FancyOStream &out, const EVerbosityLevel verbLevel=verbLevel_default) const |
void | describe (std::ostream &out, const EVerbosityLevel verbLevel=verbLevel_default) const |
virtual | ~Describable () |
LabeledObject () | |
virtual | ~LabeledObject () |
virtual void | setObjectLabel (const std::string &objectLabel) |
virtual std::string | getObjectLabel () const |
Static Public Attributes inherited from Teuchos::Describable | |
static const EVerbosityLevel | verbLevel_default |
An implementation of StatusTestResNorm using a family of residual norms.
StatusTestGenResNorm is an implementation of StatusTestResNorm that allows a user to construct one of a family of residual tests for use as a status/convergence test for Belos. The form of the test is
where
Definition at line 47 of file BelosStatusTestGenResNorm.hpp.
typedef Teuchos::ScalarTraits<ScalarType> Belos::StatusTestGenResNorm< ScalarType, MV, OP >::SCT |
Definition at line 52 of file BelosStatusTestGenResNorm.hpp.
typedef SCT::magnitudeType Belos::StatusTestGenResNorm< ScalarType, MV, OP >::MagnitudeType |
Definition at line 53 of file BelosStatusTestGenResNorm.hpp.
typedef MultiVecTraits<ScalarType,MV> Belos::StatusTestGenResNorm< ScalarType, MV, OP >::MVT |
Definition at line 54 of file BelosStatusTestGenResNorm.hpp.
enum Belos::StatusTestGenResNorm::ResType |
Select how the residual std::vector is produced.
Enumerator | |
---|---|
Implicit |
Use the residual std::vector produced by the iterative solver. |
Explicit |
Explicitly compute the residual std::vector r = b - A*x using the linear problem. |
Definition at line 62 of file BelosStatusTestGenResNorm.hpp.
Belos::StatusTestGenResNorm< ScalarType, MV, OP >::StatusTestGenResNorm | ( | MagnitudeType | Tolerance, |
int | quorum = -1 , |
||
bool | showMaxResNormOnly = false |
||
) |
Constructor.
The constructor takes a single argument specifying the tolerance ( ). If none of the form definition methods are called, we use as the stopping criterion, where uses the least costly form of the 2-norm of residual available from the iterative method and is the corresponding norm of the initial residual. The least costly form of the 2-norm depends on the chosen iterative method. Most Krylov methods produce the preconditioned residual std::vector in a form that would be exact in infinite precision arithmetic. This std::vector may be different from the true residual either because left preconditioning was used, or because round-off error has introduced significant error, or both.
You can also state the number of vectors that must pass the convergence criteria before the status test passes by using the quorum
argument.
Definition at line 355 of file BelosStatusTestGenResNorm.hpp.
|
virtual |
Destructor.
Definition at line 378 of file BelosStatusTestGenResNorm.hpp.
int Belos::StatusTestGenResNorm< ScalarType, MV, OP >::defineResForm | ( | ResType | TypeOfResidual, |
NormType | TypeOfNorm | ||
) |
Define form of the residual, its norm and optional weighting std::vector.
This method defines the form of . We specify:
Definition at line 395 of file BelosStatusTestGenResNorm.hpp.
|
virtual |
Define form of the scaling, its norm, its optional weighting std::vector, or, alternatively, define an explicit value.
This method defines the form of how the residual is scaled (if at all). It operates in two modes:
User-provided scaling value:
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 408 of file BelosStatusTestGenResNorm.hpp.
|
inline |
Definition at line 127 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Set the value of the tolerance.
We allow the tolerance to be reset for cases where, in the process of testing the residual, we find that the initial tolerance was too tight or too lax.
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 133 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Sets the number of residuals that must pass the convergence test before Passed is returned.
quorum=-1
then all residuals must pass the convergence test before Passed is returned. Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 137 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Set whether the only maximum residual norm is displayed when the print() method is called.
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 140 of file BelosStatusTestGenResNorm.hpp.
|
virtual |
Check convergence status: Passed, Failed, or Undefined.
This method checks to see if the convergence criteria are met. Depending on how the residual test is constructed this method will return the appropriate status type.
Implements Belos::StatusTest< ScalarType, MV, OP >.
Definition at line 423 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Return the result of the most recent CheckStatus call.
Implements Belos::StatusTest< ScalarType, MV, OP >.
Definition at line 156 of file BelosStatusTestGenResNorm.hpp.
|
virtual |
Resets the internal configuration to the initial state.
Implements Belos::StatusTest< ScalarType, MV, OP >.
Definition at line 382 of file BelosStatusTestGenResNorm.hpp.
|
virtual |
Output formatted description of stopping test to output stream.
Implements Belos::StatusTest< ScalarType, MV, OP >.
Definition at line 555 of file BelosStatusTestGenResNorm.hpp.
|
virtual |
Print message for each status specific to this stopping test.
Reimplemented from Belos::StatusTest< ScalarType, MV, OP >.
Definition at line 587 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Returns the current solution estimate that was computed for the most recent residual test.
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 183 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Returns the number of residuals that must pass the convergence test before Passed is returned.
quorum=-1
then all residuals must pass the convergence test before Passed is returned. Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 187 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Returns whether the only maximum residual norm is displayed when the print() method is called.
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 190 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Returns the std::vector containing the indices of the residuals that passed the test.
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 193 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Returns the value of the tolerance, , set in the constructor.
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 196 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Returns the test value, , computed in most recent call to CheckStatus.
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 199 of file BelosStatusTestGenResNorm.hpp.
|
inline |
Returns the residual norm value, , computed in most recent call to CheckStatus.
Definition at line 202 of file BelosStatusTestGenResNorm.hpp.
|
inline |
Returns the scaled norm value, .
Definition at line 205 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Returns a boolean indicating a loss of accuracy has been detected in computing the residual.
Implements Belos::StatusTestResNorm< ScalarType, MV, OP >.
Definition at line 209 of file BelosStatusTestGenResNorm.hpp.
StatusType Belos::StatusTestGenResNorm< ScalarType, MV, OP >::firstCallCheckStatusSetup | ( | Iteration< ScalarType, MV, OP > * | iSolver | ) |
Call to setup initial scaling std::vector.
After this function is called getScaledNormValue()
can be called to get the scaling std::vector.
Definition at line 607 of file BelosStatusTestGenResNorm.hpp.
|
inlinevirtual |
Method to return description of the maximum iteration status test.
Reimplemented from Teuchos::Describable.
Definition at line 229 of file BelosStatusTestGenResNorm.hpp.
|
inlineprivate |
Description of current residual form.
Definition at line 245 of file BelosStatusTestGenResNorm.hpp.
|
private |
Tolerance used to determine convergence.
Definition at line 284 of file BelosStatusTestGenResNorm.hpp.
|
private |
Number of residuals that must pass the convergence test before Passed is returned.
Definition at line 287 of file BelosStatusTestGenResNorm.hpp.
|
private |
Determines if the entries for all of the residuals are shown or just the max.
Definition at line 290 of file BelosStatusTestGenResNorm.hpp.
|
private |
Type of residual to use (explicit or implicit)
Definition at line 293 of file BelosStatusTestGenResNorm.hpp.
|
private |
Type of norm to use on residual (OneNorm, TwoNorm, or InfNorm).
Definition at line 296 of file BelosStatusTestGenResNorm.hpp.
|
private |
Type of scaling to use (Norm of RHS, Norm of Initial Residual, None or User provided)
Definition at line 299 of file BelosStatusTestGenResNorm.hpp.
|
private |
Type of norm to use on the scaling (OneNorm, TwoNorm, or InfNorm)
Definition at line 302 of file BelosStatusTestGenResNorm.hpp.
|
private |
Scaling value.
Definition at line 305 of file BelosStatusTestGenResNorm.hpp.
|
private |
Scaling std::vector.
Definition at line 308 of file BelosStatusTestGenResNorm.hpp.
|
private |
Residual norm std::vector.
Definition at line 311 of file BelosStatusTestGenResNorm.hpp.
|
private |
Test std::vector = resvector_ / scalevector_.
Definition at line 314 of file BelosStatusTestGenResNorm.hpp.
|
private |
Vector containing the indices for the vectors that passed the test.
Definition at line 317 of file BelosStatusTestGenResNorm.hpp.
|
private |
Most recent solution vector used by this status test.
Definition at line 320 of file BelosStatusTestGenResNorm.hpp.
|
private |
Status.
Definition at line 323 of file BelosStatusTestGenResNorm.hpp.
|
private |
The current blocksize of the linear system being solved.
Definition at line 326 of file BelosStatusTestGenResNorm.hpp.
|
private |
The current number of right-hand sides being solved for.
Definition at line 329 of file BelosStatusTestGenResNorm.hpp.
|
private |
The indices of the current number of right-hand sides being solved for.
Definition at line 332 of file BelosStatusTestGenResNorm.hpp.
|
private |
The current number of linear systems that have been loaded into the linear problem.
Definition at line 335 of file BelosStatusTestGenResNorm.hpp.
|
private |
The total number of right-hand sides being solved for.
Definition at line 338 of file BelosStatusTestGenResNorm.hpp.
|
private |
Is this the first time CheckStatus is called?
Definition at line 341 of file BelosStatusTestGenResNorm.hpp.
|
private |
Is this the first time DefineResForm is called?
Definition at line 344 of file BelosStatusTestGenResNorm.hpp.
|
private |
Is this the first time DefineScaleForm is called?
Definition at line 347 of file BelosStatusTestGenResNorm.hpp.