Belos Version of the Day
Candidate "basis" isn't a basis. More...
|GmresRejectsCandidateBasis (const std::string &what_arg)|
Candidate "basis" isn't a basis.
Thrown by GmresBase::advance(), when it rejects 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) from extendBasis(), they are not full rank. In the case of standard GMRES, this means the candidate basis vector has 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 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.
|Belos::GmresRejectsCandidateBasis::GmresRejectsCandidateBasis||(||const std::string &||what_arg||)||