16 #ifndef dealii__precondition_selector_h 17 #define dealii__precondition_selector_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/base/smartpointer.h> 24 DEAL_II_NAMESPACE_OPEN
26 template <
class number>
class Vector;
93 template <
typename MatrixType = SparseMatrix<
double>,
94 typename VectorType = ::Vector<
double> >
108 const typename VectorType::value_type &
omega=1.);
125 size_type
m ()
const;
131 size_type
n ()
const;
137 virtual void vmult (VectorType &dst,
const VectorType &src)
const;
143 virtual void Tvmult (VectorType &dst,
const VectorType &src)
const;
179 const typename VectorType::value_type
omega;
186 template <
typename MatrixType,
typename VectorType>
189 const typename VectorType::value_type &
omega) :
190 preconditioning(preconditioning),
194 template <
typename MatrixType,
typename VectorType>
202 template <
typename MatrixType,
typename VectorType>
209 template <
typename MatrixType,
typename VectorType>
213 Assert(
A!=0, ExcNoMatrixGivenToUse());
218 template <
typename MatrixType,
typename VectorType>
222 Assert(
A!=0, ExcNoMatrixGivenToUse());
228 template <
typename MatrixType,
typename VectorType>
230 const VectorType &src)
const 238 Assert(
A!=0, ExcNoMatrixGivenToUse());
242 A->precondition_Jacobi(dst,src,
omega);
246 A->precondition_SOR(dst,src,
omega);
250 A->precondition_SSOR(dst,src,
omega);
253 Assert(
false,ExcNotImplemented());
258 template <
typename MatrixType,
typename VectorType>
260 const VectorType &src)
const 268 Assert(
A!=0, ExcNoMatrixGivenToUse());
272 A->precondition_Jacobi(dst,src,
omega);
276 A->precondition_TSOR(dst,src,
omega);
280 A->precondition_SSOR(dst,src,
omega);
283 Assert(
false,ExcNotImplemented());
288 template <
typename MatrixType,
typename VectorType>
291 return "none|jacobi|sor|ssor";
295 DEAL_II_NAMESPACE_CLOSE
MatrixType::size_type size_type
void use_matrix(const MatrixType &M)
DeclException0(ExcNoMatrixGivenToUse)
const VectorType::value_type omega
#define Assert(cond, exc)
PreconditionSelector(const std::string &preconditioning, const typename VectorType::value_type &omega=1.)
static std::string get_precondition_names()
virtual void Tvmult(VectorType &dst, const VectorType &src) const
virtual void vmult(VectorType &dst, const VectorType &src) const
SmartPointer< const MatrixType, PreconditionSelector< MatrixType, VectorType > > A
virtual ~PreconditionSelector()
std::string preconditioning