typedef enum {/* converged */
KSP_CONVERGED_RTOL_NORMAL = 1,
KSP_CONVERGED_ATOL_NORMAL = 9,
KSP_CONVERGED_RTOL = 2,
KSP_CONVERGED_ATOL = 3,
KSP_CONVERGED_ITS = 4,
KSP_CONVERGED_CG_NEG_CURVE = 5,
KSP_CONVERGED_CG_CONSTRAINED = 6,
KSP_CONVERGED_STEP_LENGTH = 7,
KSP_CONVERGED_HAPPY_BREAKDOWN = 8,
/* diverged */
KSP_DIVERGED_NULL = -2,
KSP_DIVERGED_ITS = -3,
KSP_DIVERGED_DTOL = -4,
KSP_DIVERGED_BREAKDOWN = -5,
KSP_DIVERGED_BREAKDOWN_BICG = -6,
KSP_DIVERGED_NONSYMMETRIC = -7,
KSP_DIVERGED_INDEFINITE_PC = -8,
KSP_DIVERGED_NANORINF = -9,
KSP_DIVERGED_INDEFINITE_MAT = -10,
KSP_DIVERGED_PCSETUP_FAILED = -11,
KSP_CONVERGED_ITERATING = 0} KSPConvergedReason;
The string versions of these are KSPConvergedReasons; if you change any of the values here also change them that array of names.