17 #ifndef __deal2__matrix_lib_h
18 #define __deal2__matrix_lib_h
20 #include <deal.II/base/subscriptor.h>
21 #include <deal.II/lac/vector_memory.h>
22 #include <deal.II/lac/pointer_matrix.h>
23 #include <deal.II/lac/solver_richardson.h>
25 DEAL_II_NAMESPACE_OPEN
27 template<
typename number>
class Vector;
48 template<
class VECTOR>
73 template <
class MATRIX1,
class MATRIX2>
81 template <
class MATRIX1,
class MATRIX2>
82 void reinit(
const MATRIX1 &m1,
const MATRIX2 &m2);
87 template <
class MATRIX1,
class MATRIX2>
88 void initialize(
const MATRIX1 &m1,
const MATRIX2 &m2,
103 virtual void vmult (VECTOR &w,
104 const VECTOR &v)
const;
111 virtual void Tvmult (VECTOR &w,
112 const VECTOR &v)
const;
119 const VECTOR &v)
const;
128 const VECTOR &v)
const;
149 virtual const void *
get()
const;
161 template<
class VECTOR>
173 template <
class MATRIX>
184 template <
class MATRIX>
195 void vmult (VECTOR &w,
const VECTOR &v)
const;
201 void Tvmult (VECTOR &w,
const VECTOR &v)
const;
228 template<
typename number,
typename vector_number>
319 virtual const void *
get()
const;
348 template <
typename number>
354 template <
typename number>
361 template <
typename number>
369 template <
typename number>
378 template <
typename number>
387 template <
typename number>
395 template <
typename VECTOR>
396 void Tvmult(VECTOR &,
const VECTOR &)
const;
401 template <
typename VECTOR>
402 void Tvmult_add(VECTOR &,
const VECTOR &)
const;
430 template<
class VECTOR>
455 template <
class MATRIX,
class PRECONDITION>
457 const PRECONDITION &);
467 void vmult (VECTOR &,
const VECTOR &)
const;
472 void vmult_add (VECTOR &,
const VECTOR &)
const;
477 void Tvmult (VECTOR &,
const VECTOR &)
const;
482 void Tvmult_add (VECTOR &,
const VECTOR &)
const;
514 template<
class VECTOR>
523 template<
class VECTOR>
524 template<
class MATRIX>
534 template<
class VECTOR>
535 template<
class MATRIX>
547 template<
class VECTOR>
558 template<
class VECTOR>
566 template<
class VECTOR>
576 template<
class VECTOR>
588 template<
class VECTOR>
590 : m1(0), m2(0), mem(0)
594 template<
class VECTOR>
596 : m1(0), m2(0), mem(&m)
600 template<
class VECTOR>
601 template<
class MATRIX1,
class MATRIX2>
613 template<
class VECTOR>
614 template<
class MATRIX1,
class MATRIX2>
627 template<
class VECTOR>
628 template<
class MATRIX1,
class MATRIX2>
643 template<
class VECTOR>
651 template<
class VECTOR>
662 template<
class VECTOR>
670 VECTOR *v = mem->alloc();
678 template<
class VECTOR>
686 VECTOR *v = mem->alloc();
689 m1->vmult_add (dst, *v);
694 template<
class VECTOR>
702 VECTOR *v = mem->alloc();
704 m1->Tvmult (*v, src);
705 m2->Tvmult (dst, *v);
710 template<
class VECTOR>
718 VECTOR *v = mem->alloc();
720 m1->Tvmult (*v, src);
721 m2->Tvmult_add (dst, *v);
726 template<
class VECTOR>
736 template <
class VECTOR>
744 template <
class VECTOR>
753 template <
class VECTOR>
754 template <
class MATRIX,
class PRECONDITION>
761 if (precondition != 0)
767 DEAL_II_NAMESPACE_CLOSE
void vmult(VECTOR &, const VECTOR &) const
const types::global_dof_index invalid_size_type
virtual const void * get() const
PointerMatrixBase< VECTOR > * new_pointer_matrix_base(MATRIX &matrix, const VECTOR &, const char *name="PointerMatrixAux")
virtual void vmult(VectorType &w, const VectorType &v) const
void vmult(Vector< number > &dst, const Vector< number > &src) const
virtual void vmult(VECTOR &w, const VECTOR &v) const
PointerMatrixBase< VECTOR > * m
void filter(Vector< number > &v) const
virtual void Tvmult_add(VectorType &w, const VectorType &v) const
void reinit(const MATRIX1 &m1, const MATRIX2 &m2)
VectorMemory< VECTOR > & mem
void vmult(VECTOR &w, const VECTOR &v) const
SmartPointer< VectorMemory< VectorType >, ProductSparseMatrix< number, vector_number > > mem
MeanValueFilter(size_type component=numbers::invalid_size_type)
void Tvmult(VECTOR &w, const VECTOR &v) const
void initialize(const MATRIX &M, const double factor)
virtual void vmult_add(VECTOR &w, const VECTOR &v) const
virtual void Tvmult_add(VECTOR &w, const VECTOR &v) const
void initialize(const MATRIX1 &m1, const MATRIX2 &m2, VectorMemory< VECTOR > &mem)
PointerMatrixBase< VECTOR > * precondition
unsigned int global_dof_index
Vector< vector_number > VectorType
SmartPointer< const MatrixType, ProductSparseMatrix< number, vector_number > > m1
#define Assert(cond, exc)
void Tvmult_add(VECTOR &, const VECTOR &) const
~InverseMatrixRichardson()
PointerMatrixBase< VECTOR > * m2
SolverRichardson< VECTOR > solver
SparseMatrix< number > MatrixType
SmartPointer< VectorMemory< VECTOR >, ProductMatrix< VECTOR > > mem
SmartPointer< const MatrixType, ProductSparseMatrix< number, vector_number > > m2
virtual void Tvmult(VectorType &w, const VectorType &v) const
InverseMatrixRichardson(SolverControl &control, VectorMemory< VECTOR > &mem)
types::global_dof_index size_type
virtual void vmult_add(VectorType &w, const VectorType &v) const
void Tvmult(VECTOR &, const VECTOR &) const
void Tvmult_add(VECTOR &, const VECTOR &) const
void vmult_add(VECTOR &, const VECTOR &) const
void initialize(const MATRIX &, const PRECONDITION &)
SolverControl & control() const
PointerMatrixBase< VECTOR > * matrix
::ExceptionBase & ExcNotImplemented()
::ExceptionBase & ExcNotInitialized()
PointerMatrixBase< VECTOR > * m1
void vmult_add(Vector< number > &dst, const Vector< number > &src) const
virtual void Tvmult(VECTOR &w, const VECTOR &v) const
void Tvmult(VECTOR &, const VECTOR &) const