Chi-Tech
chi_physics_utils.cc
Go to the documentation of this file.
2
3#include <sstream>
4
5//###################################################################
6/**Gets the string value of a converged reason.*/
7std::string chi_physics::GetPETScConvergedReasonstring(KSPConvergedReason reason)
8{
9 std::stringstream ostr;
10 switch (reason)
11 {
12 case KSP_CONVERGED_RTOL_NORMAL :
13 ostr << "KSP_CONVERGED_RTOL_NORMAL";
14 break;
15 case KSP_CONVERGED_ATOL_NORMAL :
16 ostr << "KSP_CONVERGED_ATOL_NORMAL";
17 break;
18 case KSP_CONVERGED_RTOL :
19 ostr << "KSP_CONVERGED_RTOL";
20 break;
21 case KSP_CONVERGED_ATOL :
22 ostr << "KSP_CONVERGED_ATOL";
23 break;
24 case KSP_CONVERGED_ITS :
25 ostr << "KSP_CONVERGED_ITS";
26 break;
27 case KSP_CONVERGED_CG_NEG_CURVE :
28 ostr << "KSP_CONVERGED_CG_NEG_CURVE";
29 break;
30 case KSP_CONVERGED_CG_CONSTRAINED :
31 ostr << "KSP_CONVERGED_CG_CONSTRAINED";
32 break;
33 case KSP_CONVERGED_STEP_LENGTH :
34 ostr << "KSP_CONVERGED_STEP_LENGTH";
35 break;
36 case KSP_CONVERGED_HAPPY_BREAKDOWN :
37 ostr << "KSP_CONVERGED_HAPPY_BREAKDOWN";
38 break;
39 /* diverged */
40 case KSP_DIVERGED_NULL :
41 ostr << "KSP_DIVERGED_NULL";
42 break;
43 case KSP_DIVERGED_ITS :
44 ostr << "KSP_DIVERGED_ITS";
45 break;
46 case KSP_DIVERGED_DTOL :
47 ostr << "KSP_DIVERGED_DTOL";
48 break;
49 case KSP_DIVERGED_BREAKDOWN :
50 ostr << "KSP_DIVERGED_BREAKDOWN";
51 break;
52 case KSP_DIVERGED_BREAKDOWN_BICG :
53 ostr << "KSP_DIVERGED_BREAKDOWN_BICG";
54 break;
55 case KSP_DIVERGED_NONSYMMETRIC :
56 ostr << "KSP_DIVERGED_NONSYMMETRIC";
57 break;
58 case KSP_DIVERGED_INDEFINITE_PC :
59 ostr << "KSP_DIVERGED_INDEFINITE_PC";
60 break;
61 case KSP_DIVERGED_NANORINF :
62 ostr << "KSP_DIVERGED_NANORINF";
63 break;
64 case KSP_DIVERGED_INDEFINITE_MAT :
65 ostr << "KSP_DIVERGED_INDEFINITE_MAT";
66 break;
67
68 default:
69 ostr << "Unknown convergence reason.";
70 }
71
72 return ostr.str();
73}
std::string GetPETScConvergedReasonstring(KSPConvergedReason reason)