Belos Version of the Day
Thrown if GmresBase's current candidate "basis" isn't a basis. More...
|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.
BelosError, which is an std::logic_error.
|Belos::GmresRejectsCandidateBasis::GmresRejectsCandidateBasis||(||const std::string &||what_arg||)||