5 : prec_mp(Teuchos::null)
11 template <
class Level>
15 Ifpack2::Factory factory;
17 prec_mp = factory.create(prectype_m, A.getConst());
18 prec_mp->setParameters(*params_mp);
19 prec_mp->initialize();
24 template <
class Level>
30 template <
class Level>
42 template <
class Level>
45 params_mp = Teuchos::parameterList();
52 params_mp->set(
"fact: ilut level-of-fill", 5.0);
53 params_mp->set(
"fact: drop tolerance", 0.0);
57 prectype_m =
"CHEBYSHEV";
58 params_mp->set(
"chebyshev: degree", 1);
62 params_mp->set(
"fact: iluk level-of-fill", 0);
63 params_mp->set(
"fact: relax value", 0.0);
64 params_mp->set(
"fact: absolute threshold", 0.0);
65 params_mp->set(
"fact: relative threshold", 1.0);
68 prectype_m =
"RELAXATION";
69 params_mp->set(
"relaxation: type",
"Jacobi");
70 params_mp->set(
"relaxation: sweeps", 12);
71 params_mp->set(
"relaxation: zero starting solution",
false);
72 params_mp->set(
"relaxation: damping factor", 6.0 / 7.0);
73 params_mp->set(
"relaxation: use l1",
true);
74 params_mp->set(
"relaxation: l1 eta", 1.5);
75 params_mp->set(
"relaxation: backward mode",
false);
76 params_mp->set(
"relaxation: fix tiny diagonal entries",
true);
77 params_mp->set(
"relaxation: min diagonal value", 1.0
e-5);
78 params_mp->set(
"relaxation: check diagonal entries",
true);
81 prectype_m =
"BLOCK_RELAXATION";
82 params_mp->set(
"relaxation: type",
"Jacobi");
83 params_mp->set(
"relaxation: sweeps", 12);
84 params_mp->set(
"relaxation: zero starting solution",
false);
85 params_mp->set(
"relaxation: damping factor", 6.0 / 7.0);
86 params_mp->set(
"relaxation: backward mode",
false);
88 params_mp->set(
"partitioner: type",
"linear");
89 params_mp->set(
"partitioner: overlap", 0);
90 params_mp->set(
"partitioner: local parts", 1);
94 prectype_m =
"RELAXATION";
95 params_mp->set(
"relaxation: type",
"Gauss-Seidel");
96 params_mp->set(
"relaxation: sweeps", 12);
97 params_mp->set(
"relaxation: zero starting solution",
false);
98 params_mp->set(
"relaxation: damping factor", 1.0);
99 params_mp->set(
"relaxation: use l1",
true);
100 params_mp->set(
"relaxation: l1 eta", 1.5);
101 params_mp->set(
"relaxation: backward mode",
false);
102 params_mp->set(
"relaxation: fix tiny diagonal entries",
true);
103 params_mp->set(
"relaxation: min diagonal value", 1.0
e-5);
104 params_mp->set(
"relaxation: check diagonal entries",
true);
107 prectype_m =
"BLOCK_RELAXATION";
108 params_mp->set(
"relaxation: type",
"Gauss-Seidel");
109 params_mp->set(
"relaxation: sweeps", 12);
110 params_mp->set(
"relaxation: zero starting solution",
false);
111 params_mp->set(
"relaxation: damping factor", 6.0 / 7.0);
112 params_mp->set(
"relaxation: backward mode",
false);
114 params_mp->set(
"partitioner: type",
"linear");
115 params_mp->set(
"partitioner: overlap", 0);
116 params_mp->set(
"partitioner: local parts", 1);
123 "This type of Ifpack2 preconditioner not supported.");
constexpr double e
The value of .
void init_m(Preconditioner prec)
The base class for all OPAL exceptions.
Ifpack2Preconditioner(Preconditioner prec)
Gauss-Seidel block relaxation.
Gauss-Seidel point relaxation.
Teuchos::RCP< amr::operator_t > get()
static void fillMap(map_t &map)
std::map< std::string, Preconditioner > map_t
void create(const Teuchos::RCP< amr::matrix_t > &A, Level *level_p=nullptr)