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.