24#include "arccore/alina/AlinaUtils.h"
25#include "arccore/alina/RelaxationRuntime.h"
30namespace Arcane::Alina
36std::ostream& operator<<(std::ostream& os, eRelaxationType r)
39 case eRelaxationType::gauss_seidel:
40 return os <<
"gauss_seidel";
41 case eRelaxationType::ilu0:
43 case eRelaxationType::iluk:
45 case eRelaxationType::ilup:
47 case eRelaxationType::ilut:
49 case eRelaxationType::damped_jacobi:
50 return os <<
"damped_jacobi";
51 case eRelaxationType::spai0:
53 case eRelaxationType::spai1:
55 case eRelaxationType::chebyshev:
56 return os <<
"chebyshev";
65std::istream& operator>>(std::istream& in, eRelaxationType& r)
70 if (val ==
"gauss_seidel")
71 r = eRelaxationType::gauss_seidel;
72 else if (val ==
"ilu0")
73 r = eRelaxationType::ilu0;
74 else if (val ==
"iluk")
75 r = eRelaxationType::iluk;
76 else if (val ==
"ilup")
77 r = eRelaxationType::ilup;
78 else if (val ==
"ilut")
79 r = eRelaxationType::ilut;
80 else if (val ==
"damped_jacobi")
81 r = eRelaxationType::damped_jacobi;
82 else if (val ==
"spai0")
83 r = eRelaxationType::spai0;
84 else if (val ==
"spai1")
85 r = eRelaxationType::spai1;
86 else if (val ==
"chebyshev")
87 r = eRelaxationType::chebyshev;
89 throw std::invalid_argument(
"Invalid relaxation value. Valid choices are:"
90 "gauss_seidel, ilu0, iluk, ilup, ilut, damped_jacobi, spai0, spai1, chebyshev.");