24 namespace Preconditioners
26 template<
typename Scalar>
33 if (strcmp(type,
"sa") == 0) ML_Epetra::SetDefaults(
"SA", mlist);
34 else if (strcmp(type,
"nssa") == 0) ML_Epetra::SetDefaults(
"NSSA", mlist);
35 else if (strcmp(type,
"dd") == 0) ML_Epetra::SetDefaults(
"DD", mlist);
38 template<
typename Scalar>
47 template<
typename Scalar>
50 if (owner)
delete prec;
53 template<
typename Scalar>
56 mlist.set(name, value);
59 template<
typename Scalar>
62 mlist.set(name, value);
65 template<
typename Scalar>
68 mlist.set(name, value);
71 template<
typename Scalar>
74 mlist.set(name, value);
77 template<
typename Scalar>
81 assert(mt !=
nullptr);
83 if (prec)
delete prec;
84 prec =
new ML_Epetra::MultiLevelPreconditioner(*mat->mat, mlist,
false);
87 template<
typename Scalar>
90 assert(prec !=
nullptr);
91 prec->DestroyPreconditioner();
94 template<
typename Scalar>
97 assert(prec !=
nullptr);
98 prec->ComputePreconditioner();
101 template<
typename Scalar>
104 assert(prec !=
nullptr);
105 assert(prec->IsPreconditionerComputed());
106 prec->ReComputePreconditioner();
109 template<
typename Scalar>
112 assert(prec !=
nullptr);
116 template<
typename Scalar>
119 assert(prec !=
nullptr);
120 return prec->ApplyInverse(r, z);
123 template<
typename Scalar>
126 return mat->mat->Comm();
129 template<
typename Scalar>
132 return mat->mat->OperatorDomainMap();
135 template<
typename Scalar>
138 return mat->mat->OperatorRangeMap();
General (abstract) matrix representation in Hermes.
General namespace for the Hermes library.
virtual void destroy()
Destroy the preconditioner object.
virtual void create(Matrix< Scalar > *mat)
virtual void compute()
Compute the preconditioner.
Preconditioners built on ML.
virtual void recompute()
Cheaply recompute the preconditioner if matrix values have changed but not their non-zero structure...
MlPrecond(const char *type)
ML (Trilinos package) preconditioners interface.