16 #ifndef dealii__matrix_lib_h 17 #define dealii__matrix_lib_h 19 #include <deal.II/base/subscriptor.h> 20 #include <deal.II/lac/vector_memory.h> 21 #include <deal.II/lac/pointer_matrix.h> 22 #include <deal.II/lac/solver_richardson.h> 24 DEAL_II_NAMESPACE_OPEN
26 template<
typename number>
class Vector;
54 template<
typename VectorType>
74 template <
typename MatrixType1,
typename MatrixType2>
76 const MatrixType2 &
m2,
87 template <
typename MatrixType1,
typename MatrixType2>
88 void reinit (
const MatrixType1 &
m1,
const MatrixType2 &
m2);
93 template <
typename MatrixType1,
typename MatrixType2>
95 const MatrixType2 &
m2,
104 virtual void vmult (VectorType &w,
105 const VectorType &v)
const;
111 virtual void Tvmult (VectorType &w,
112 const VectorType &v)
const;
118 const VectorType &v)
const;
125 const VectorType &v)
const;
158 template<
typename VectorType>
169 template <
typename MatrixType>
181 template <
typename MatrixType>
193 void vmult (VectorType &w,
194 const VectorType &v)
const;
199 void Tvmult (VectorType &w,
200 const VectorType &v)
const;
232 template<
typename number,
typename vector_number>
343 template <
typename number>
349 template <
typename number>
355 template <
typename number>
362 template <
typename number>
370 template <
typename number>
378 template <
typename number>
386 template <
typename VectorType>
387 void Tvmult(VectorType &,
const VectorType &)
const;
392 template <
typename VectorType>
393 void Tvmult_add(VectorType &,
const VectorType &)
const;
439 template<
typename VectorType>
458 template <
typename MatrixType,
typename PreconditionerType>
460 const PreconditionerType &);
469 void vmult (VectorType &,
const VectorType &)
const;
474 void vmult_add (VectorType &,
const VectorType &)
const;
479 void Tvmult (VectorType &,
const VectorType &)
const;
484 void Tvmult_add (VectorType &,
const VectorType &)
const;
515 template<
typename VectorType>
525 template<
typename VectorType>
526 template<
typename MatrixType>
536 template<
typename VectorType>
537 template<
typename MatrixType>
549 template<
typename VectorType>
560 template<
typename VectorType>
568 template<
typename VectorType>
578 template<
typename VectorType>
590 template<
typename VectorType>
592 : m1(0), m2(0), mem(0)
596 template<
typename VectorType>
598 : m1(0), m2(0), mem(&m)
602 template<
typename VectorType>
603 template<
typename MatrixType1,
typename MatrixType2>
605 const MatrixType2 &mat2,
614 template<
typename VectorType>
615 template<
typename MatrixType1,
typename MatrixType2>
626 template<
typename VectorType>
627 template<
typename MatrixType1,
typename MatrixType2>
630 const MatrixType2 &mat2,
641 template<
typename VectorType>
649 template<
typename VectorType>
660 template<
typename VectorType>
668 VectorType *v = mem->alloc();
676 template<
typename VectorType>
684 VectorType *v = mem->alloc();
687 m1->vmult_add (dst, *v);
692 template<
typename VectorType>
700 VectorType *v = mem->alloc();
702 m1->Tvmult (*v, src);
703 m2->Tvmult (dst, *v);
708 template<
typename VectorType>
716 VectorType *v = mem->alloc();
718 m1->Tvmult (*v, src);
719 m2->Tvmult_add (dst, *v);
727 template <
typename VectorType>
735 template <
typename VectorType>
744 template <
typename VectorType>
745 template <
typename MatrixType,
typename PreconditionerType>
748 const PreconditionerType &p)
753 if (precondition != 0)
759 DEAL_II_NAMESPACE_CLOSE
SolverRichardson< VectorType > solver
void Tvmult_add(VectorType &, const VectorType &) const
const types::global_dof_index invalid_size_type
MeanValueFilter(const size_type component=numbers::invalid_size_type)
PointerMatrixBase< VectorType > * m
void vmult(VectorType &, const VectorType &) const
void Tvmult_add(VectorType &, const VectorType &) const
virtual void Tvmult(VectorType &w, const VectorType &v) const
InverseMatrixRichardson(SolverControl &control, VectorMemory< VectorType > &mem)
virtual void vmult(VectorType &w, const VectorType &v) const
void initialize(const MatrixType &, const PreconditionerType &)
void initialize(const MatrixType1 &m1, const MatrixType2 &m2, VectorMemory< VectorType > &mem)
~InverseMatrixRichardson()
void vmult(VectorType &w, const VectorType &v) const
void vmult(Vector< number > &dst, const Vector< number > &src) const
static ::ExceptionBase & ExcNotInitialized()
PointerMatrixBase< VectorType > * matrix
PointerMatrixBase< VectorType > * m1
virtual void Tvmult(VectorType &w, const VectorType &v) const
SmartPointer< VectorMemory< VectorType >, ProductSparseMatrix< number, vector_number > > mem
void vmult_add(Vector< number > &dst, const Vector< number > &src) const
virtual void vmult_add(VectorType &w, const VectorType &v) const
void initialize(const MatrixType &M, const double factor)
PointerMatrixBase< VectorType > * new_pointer_matrix_base(MatrixType &matrix, const VectorType &, const char *name="PointerMatrixAux")
virtual void Tvmult_add(VectorType &w, const VectorType &v) const
virtual void vmult(VectorType &w, const VectorType &v) const
void Tvmult(VectorType &, const VectorType &) const
void vmult_add(VectorType &, const VectorType &) const
unsigned int global_dof_index
Vector< vector_number > VectorType
SmartPointer< const MatrixType, ProductSparseMatrix< number, vector_number > > m1
#define Assert(cond, exc)
void filter(Vector< number > &v) const
PointerMatrixBase< VectorType > * m2
SparseMatrix< number > MatrixType
SolverControl & control() const
VectorMemory< VectorType > & mem
SmartPointer< const MatrixType, ProductSparseMatrix< number, vector_number > > m2
types::global_dof_index size_type
void reinit(const MatrixType1 &m1, const MatrixType2 &m2)
virtual void Tvmult_add(VectorType &w, const VectorType &v) const
static ::ExceptionBase & ExcNotImplemented()
PointerMatrixBase< VectorType > * precondition
void Tvmult(VectorType &, const VectorType &) const
virtual void vmult_add(VectorType &w, const VectorType &v) const
void Tvmult(VectorType &w, const VectorType &v) const
const size_type component
SmartPointer< VectorMemory< VectorType >, ProductMatrix< VectorType > > mem