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> 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>
250 const MatrixType &
m2,
263 const MatrixType &
m2,
273 virtual void vmult (VectorType &w,
274 const VectorType &v)
const;
281 virtual void Tvmult (VectorType &w,
282 const VectorType &v)
const;
289 const VectorType &v)
const;
298 const VectorType &v)
const;
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>
528 m(new_pointer_matrix_base(mat, VECTOR())),
534 template<
class VECTOR>
535 template<
class MATRIX>
541 m = new_pointer_matrix_base(mat, VECTOR());
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>
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
const types::global_dof_index invalid_size_type
virtual const void * get() const
virtual void vmult(VECTOR &w, const VECTOR &v) const
PointerMatrixBase< VECTOR > * m
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
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)
PointerMatrixBase< VECTOR > * m2
SolverRichardson< VECTOR > solver
SparseMatrix< number > MatrixType
SmartPointer< VectorMemory< VECTOR >, ProductMatrix< VECTOR > > mem
SmartPointer< const MatrixType, ProductSparseMatrix< number, vector_number > > m2
types::global_dof_index size_type
void Tvmult(VECTOR &, const VECTOR &) const
void Tvmult_add(VECTOR &, const VECTOR &) const
void initialize(const MATRIX &, const PRECONDITION &)
PointerMatrixBase< VECTOR > * matrix
::ExceptionBase & ExcNotImplemented()
::ExceptionBase & ExcNotInitialized()
PointerMatrixBase< VECTOR > * m1
virtual void Tvmult(VECTOR &w, const VECTOR &v) const