17 #ifndef __deal2__pointer_matrix_h 18 #define __deal2__pointer_matrix_h 20 #include <deal.II/base/subscriptor.h> 21 #include <deal.II/base/smartpointer.h> 22 #include <deal.II/lac/vector.h> 23 #include <deal.II/lac/vector_memory.h> 52 template<
class VECTOR>
84 virtual void clear () = 0;
102 bool operator < (const PointerMatrixBase<VECTOR> &)
const;
108 bool operator <= (const PointerMatrixBase<VECTOR> &)
const;
126 virtual void vmult (VECTOR &dst,
127 const VECTOR &src)
const = 0;
132 virtual void Tvmult (VECTOR &dst,
133 const VECTOR &src)
const = 0;
140 const VECTOR &src)
const = 0;
147 const VECTOR &src)
const = 0;
153 virtual const void *
get()
const = 0;
166 template<
class MATRIX,
class VECTOR>
202 virtual void clear();
221 virtual void vmult (VECTOR &dst,
222 const VECTOR &src)
const;
227 virtual void Tvmult (VECTOR &dst,
228 const VECTOR &src)
const;
235 const VECTOR &src)
const;
242 const VECTOR &src)
const;
249 virtual const void *
get()
const;
273 template<
class MATRIX,
class VECTOR>
317 virtual void clear();
343 virtual void vmult (VECTOR &dst,
344 const VECTOR &src)
const;
349 virtual void Tvmult (VECTOR &dst,
350 const VECTOR &src)
const;
357 const VECTOR &src)
const;
364 const VECTOR &src)
const;
371 virtual const void *
get()
const;
403 template <
typename number>
439 virtual void clear();
517 virtual const void *
get()
const;
546 template <
class VECTOR,
class MATRIX>
560 template <
typename numberv>
574 template <
typename numberv,
typename numberm>
588 template <
typename numberv,
typename numberm>
602 template <
typename numberv,
typename numberm>
616 template <
class VECTOR,
typename numberm>
630 template <
typename numberv,
typename numberm>
644 template <
class VECTOR,
typename numberm>
658 template <
typename numberv,
typename numberm>
672 template <
typename numberv,
typename numberm>
684 template<
class VECTOR>
691 template<
class VECTOR>
696 return (
get() == other.
get());
701 template<
class VECTOR>
706 return (
get() != other.
get());
711 template<
class VECTOR>
716 return (
get() < other.
get());
721 template<
class VECTOR>
726 return (
get() <= other.
get());
731 template<
class VECTOR>
736 return (
get() > other.
get());
741 template<
class VECTOR>
746 return (
get() >= other.
get());
753 template<
class MATRIX,
class VECTOR>
755 : m(M, typeid(*this).name())
759 template<
class MATRIX,
class VECTOR>
765 template<
class MATRIX,
class VECTOR>
773 template<
class MATRIX,
class VECTOR>
781 template<
class MATRIX,
class VECTOR>
790 template<
class MATRIX,
class VECTOR>
799 template<
class MATRIX,
class VECTOR>
802 const VECTOR &src)
const 809 template<
class MATRIX,
class VECTOR>
812 const VECTOR &src)
const 819 template<
class MATRIX,
class VECTOR>
822 const VECTOR &src)
const 829 template<
class MATRIX,
class VECTOR>
832 const VECTOR &src)
const 839 template<
class MATRIX,
class VECTOR>
850 template<
class MATRIX,
class VECTOR>
854 : mem(mem, typeid(*this).name()),
855 m(M, typeid(*this).name())
861 template<
class MATRIX,
class VECTOR>
872 template<
class MATRIX,
class VECTOR>
884 template<
class MATRIX,
class VECTOR>
892 template<
class MATRIX,
class VECTOR>
901 template<
class MATRIX,
class VECTOR>
911 template<
class MATRIX,
class VECTOR>
920 template<
class MATRIX,
class VECTOR>
923 const VECTOR &src)
const 933 template<
class MATRIX,
class VECTOR>
936 const VECTOR &src)
const 946 template<
class MATRIX,
class VECTOR>
949 const VECTOR &src)
const 955 VECTOR *v =
mem->alloc();
963 template<
class MATRIX,
class VECTOR>
966 const VECTOR &src)
const 972 VECTOR *v =
mem->alloc();
980 template<
class MATRIX,
class VECTOR>
991 template<
typename number>
993 :
m(M, typeid(*this).name())
997 template<
typename number>
1003 template<
typename number>
1011 template<
typename number>
1019 template<
typename number>
1028 template<
typename number>
1037 template<
typename number>
1050 template<
typename number>
1059 dst.
equ (src(0), *
m);
1063 template<
typename number>
1076 template<
typename number>
1085 dst.
add (src(0), *
m);
1089 template<
typename number>
1098 DEAL_II_NAMESPACE_CLOSE
SmartPointer< const Vector< number >, PointerMatrixVector< number > > m
virtual void vmult(Vector< number > &dst, const Vector< number > &src) const
PointerMatrixBase< VECTOR > * new_pointer_matrix_base(const BlockSparseMatrixEZ< numberm > &matrix, const VECTOR &, const char *name="PointerMatrix")
PointerMatrixBase< VECTOR > * new_pointer_matrix_base(MATRIX &matrix, const VECTOR &, const char *name="PointerMatrixAux")
void Tvmult(VECTOR &u, const VECTOR &v) const
virtual const void * get() const =0
PointerMatrixBase< BlockVector< numberv > > * new_pointer_matrix_base(const BlockMatrixArray< numberm > &matrix, const BlockVector< numberv > &, const char *name="PointerMatrix")
const PointerMatrixAux & operator=(const MATRIX *M)
virtual const void * get() const
void vmult(VECTOR &u, const VECTOR &v) const
PointerMatrixAux(VectorMemory< VECTOR > *mem=0, const MATRIX *M=0)
PointerMatrixBase< Vector< numberv > > * new_pointer_matrix_base(const FullMatrix< numberm > &matrix, const Vector< numberv > &, const char *name="PointerMatrix")
bool operator!=(const PointerMatrixBase< VECTOR > &) const
Subscriptor & operator=(const Subscriptor &)
PointerMatrixBase< Vector< numberv > > * new_pointer_matrix_base(const IdentityMatrix &matrix, const Vector< numberv > &, const char *name="PointerMatrix")
void equ(const Number a, const Vector< Number > &u)
VECTOR::value_type value_type
virtual void Tvmult(Vector< number > &dst, const Vector< number > &src) const
virtual const void * get() const
bool operator>(const PointerMatrixBase< VECTOR > &) const
PointerMatrixVector(const Vector< number > *M=0)
PointerMatrixBase< Vector< numberv > > * new_pointer_matrix_base(const SparseMatrixEZ< numberm > &matrix, const Vector< numberv > &, const char *name="PointerMatrix")
virtual void Tvmult_add(VECTOR &dst, const VECTOR &src) const
void set_memory(VectorMemory< VECTOR > *mem)
void add(const std::vector< size_type > &indices, const std::vector< OtherNumber > &values)
virtual const void * get() const
virtual ~PointerMatrixBase()
#define Assert(cond, exc)
bool operator<=(const PointerMatrixBase< VECTOR > &) const
const PointerMatrix & operator=(const MATRIX *M)
virtual void vmult(VECTOR &dst, const VECTOR &src) const
PointerMatrix(const MATRIX *M=0)
virtual void vmult_add(VECTOR &dst, const VECTOR &src) const
virtual void vmult_add(VECTOR &dst, const VECTOR &src) const
void Tvmult_add(VECTOR &u, const VECTOR &v) const
virtual void vmult(VECTOR &dst, const VECTOR &src) const =0
virtual void vmult_add(Vector< number > &dst, const Vector< number > &src) const
PointerMatrixBase< Vector< numberv > > * new_pointer_matrix_base(const LAPACKFullMatrix< numberm > &matrix, const Vector< numberv > &, const char *name="PointerMatrix")
virtual void Tvmult_add(Vector< number > &dst, const Vector< number > &src) const
SmartPointer< VectorMemory< VECTOR >, PointerMatrixAux< MATRIX, VECTOR > > mem
virtual void Tvmult(VECTOR &dst, const VECTOR &src) const
const PointerMatrixVector & operator=(const Vector< number > *M)
void vmult_add(VECTOR &u, const VECTOR &v) const
SmartPointer< const MATRIX, PointerMatrix< MATRIX, VECTOR > > m
PointerMatrixBase< Vector< numberv > > * new_pointer_matrix_base(const SparseMatrix< numberm > &matrix, const Vector< numberv > &, const char *name="PointerMatrix")
bool operator==(const PointerMatrixBase< VECTOR > &) const
virtual void vmult_add(VECTOR &dst, const VECTOR &src) const =0
virtual void vmult(VECTOR &dst, const VECTOR &src) const
virtual void Tvmult(VECTOR &dst, const VECTOR &src) const =0
::ExceptionBase & ExcNotInitialized()
::ExceptionBase & ExcDimensionMismatch(std::size_t arg1, std::size_t arg2)
PointerMatrixBase< Vector< numberv > > * new_pointer_matrix_base(const TridiagonalMatrix< numberm > &matrix, const Vector< numberv > &, const char *name="PointerMatrix")
GrowingVectorMemory< VECTOR > my_memory
bool operator<(const PointerMatrixBase< VECTOR > &) const
virtual void Tvmult_add(VECTOR &dst, const VECTOR &src) const
virtual void Tvmult(VECTOR &dst, const VECTOR &src) const
PointerMatrixBase< VECTOR > * new_pointer_matrix_base(const BlockSparseMatrix< numberm > &matrix, const VECTOR &, const char *name="PointerMatrix")
virtual void Tvmult_add(VECTOR &dst, const VECTOR &src) const =0
bool operator>=(const PointerMatrixBase< VECTOR > &) const
SmartPointer< const MATRIX, PointerMatrixAux< MATRIX, VECTOR > > m