17 #ifndef __deal2__precondition_selector_h
18 #define __deal2__precondition_selector_h
21 #include <deal.II/base/config.h>
22 #include <deal.II/base/smartpointer.h>
25 DEAL_II_NAMESPACE_OPEN
27 template <
class number>
class Vector;
96 template <
class MATRIX = SparseMatrix<
double>,
97 class VECTOR = ::Vector<
double> >
108 const typename VECTOR::value_type &
omega=1.);
128 virtual void vmult (VECTOR &dst,
const VECTOR &src)
const;
166 const typename VECTOR::value_type
omega;
173 template <
class MATRIX,
class VECTOR>
176 const typename VECTOR::value_type &omega) :
177 preconditioning(preconditioning),
181 template <
class MATRIX,
class VECTOR>
189 template <
class MATRIX,
class VECTOR>
195 template <
class MATRIX,
class VECTOR>
197 const VECTOR &src)
const
199 if (preconditioning==
"none")
205 Assert(A!=0, ExcNoMatrixGivenToUse());
207 if (preconditioning==
"jacobi")
209 A->precondition_Jacobi(dst,src,omega);
211 else if (preconditioning==
"sor")
213 A->precondition_SOR(dst,src,omega);
215 else if (preconditioning==
"ssor")
217 A->precondition_SSOR(dst,src,omega);
225 template <
class MATRIX,
class VECTOR>
228 return "none|jacobi|sor|ssor";
232 DEAL_II_NAMESPACE_CLOSE
PreconditionSelector(const std::string &preconditioning, const typename VECTOR::value_type &omega=1.)
std::string preconditioning
SmartPointer< const MATRIX, PreconditionSelector< MATRIX, VECTOR > > A
static std::string get_precondition_names()
#define Assert(cond, exc)
DeclException0(ExcNoMatrixGivenToUse)
virtual ~PreconditionSelector()
void use_matrix(const MATRIX &M)
const VECTOR::value_type omega
virtual void vmult(VECTOR &dst, const VECTOR &src) const
::ExceptionBase & ExcNotImplemented()