|
Belos Version of the Day
|
Thrown if GmresBase's current candidate "basis" isn't a basis. More...
#include <BelosGmresBase.hpp>

Public Member Functions | |
| GmresRejectsCandidateBasis (const std::string &what_arg) | |
Thrown if GmresBase's current candidate "basis" isn't a basis.
This exception is thrown by GmresBase::advance(), if it rejected the computed candidate basis vector(s) due to (numerical) rank deficiency, and doesn't know how to recover.
This usually means that after orthogonalizing the candidate basis vector(s) returned by GmresBase::extendBasis(), the candidate vectors are not full rank. In the case of standard GMRES (flexible or not), this means the candidate basis vector has very small or zero norm. For CA-GMRES, the vectors might have nonzero norm, but are not full rank. CA-GMRES may choose to retry with a shorter candidate basis length, but if the candidate basis length is too short, it may opt to "give up." In that case, advance() throws this exception. Restarting with standard GMRES or even a different iterative method may be a good idea in that case.
Applications may choose to recover from or deal with this error in one or more of the following ways:
It might be good to verify that the matrix (and preconditioner) are nonzero.
may be nonsingular in exact arithmetic, but ill-conditioned in the given floating-point precision.) However, this exception must inherit from BelosError, which is an std::logic_error. Definition at line 186 of file BelosGmresBase.hpp.
| Belos::GmresRejectsCandidateBasis::GmresRejectsCandidateBasis | ( | const std::string & | what_arg | ) | [inline] |
Definition at line 188 of file BelosGmresBase.hpp.
1.7.4