ProductSparseMatrix< number, vector_number > Class Template Reference
[Derived matrices]

Inheritance diagram for ProductSparseMatrix< number, vector_number >:

Inheritance graph
[legend]

List of all members.

Public Types

typedef SparseMatrix< number > MatrixType
typedef Vector< vector_number > VectorType

Public Member Functions

 ProductSparseMatrix (const MatrixType &m1, const MatrixType &m2, VectorMemory< VectorType > &mem)
 ProductSparseMatrix ()
void initialize (const MatrixType &m1, const MatrixType &m2, VectorMemory< VectorType > &mem)
void clear ()
virtual void vmult (VectorType &w, const VectorType &v) const
virtual void Tvmult (VectorType &w, const VectorType &v) const
virtual void vmult_add (VectorType &w, const VectorType &v) const
virtual void Tvmult_add (VectorType &w, const VectorType &v) const

Private Member Functions

virtual const void * get () const

Private Attributes

SmartPointer< const MatrixTypem1
SmartPointer< const MatrixTypem2
SmartPointer< VectorMemory
< VectorType > > 
mem


Detailed Description

template<typename number, typename vector_number>
class ProductSparseMatrix< number, vector_number >

Poor man's matrix product of two sparse matrices. Stores two matrices m1 and m2 of arbitrary type SparseMatrix and implements matrix-vector multiplications for the product M1M2 by performing multiplication with both factors consecutively.

The documentation of ProductMatrix applies with exception that these matrices here may be rectangular.

Author:
Guido Kanschat, 2000, 2001, 2002, 2005

Member Typedef Documentation

template<typename number , typename vector_number >
typedef SparseMatrix<number> ProductSparseMatrix< number, vector_number >::MatrixType

Define the type of matrices used.

template<typename number , typename vector_number >
typedef Vector<vector_number> ProductSparseMatrix< number, vector_number >::VectorType

Define the type of vectors we plly this matrix to.


Constructor & Destructor Documentation

template<typename number , typename vector_number >
ProductSparseMatrix< number, vector_number >::ProductSparseMatrix ( const MatrixType m1,
const MatrixType m2,
VectorMemory< VectorType > &  mem 
)

Constructor. Additionally to the two constituting matrices, a memory pool for the auxiliary vector must be provided.

template<typename number , typename vector_number >
ProductSparseMatrix< number, vector_number >::ProductSparseMatrix (  ) 

Constructor leaving an unitialized matrix. initialize() must be called, before the matrix can be used.


Member Function Documentation

template<typename number , typename vector_number >
void ProductSparseMatrix< number, vector_number >::initialize ( const MatrixType m1,
const MatrixType m2,
VectorMemory< VectorType > &  mem 
)

template<typename number , typename vector_number >
void ProductSparseMatrix< number, vector_number >::clear (  )  [virtual]

Reset pointer and release the matrix pointed to.

Implements PointerMatrixBase< Vector< vector_number > >.

template<typename number , typename vector_number >
virtual void ProductSparseMatrix< number, vector_number >::vmult ( VectorType w,
const VectorType v 
) const [virtual]

Matrix-vector product w = m1 * m2 * v.

template<typename number , typename vector_number >
virtual void ProductSparseMatrix< number, vector_number >::Tvmult ( VectorType w,
const VectorType v 
) const [virtual]

Tranposed matrix-vector product w = m2T * m1T * v.

template<typename number , typename vector_number >
virtual void ProductSparseMatrix< number, vector_number >::vmult_add ( VectorType w,
const VectorType v 
) const [virtual]

Adding matrix-vector product w += m1 * m2 * v

template<typename number , typename vector_number >
virtual void ProductSparseMatrix< number, vector_number >::Tvmult_add ( VectorType w,
const VectorType v 
) const [virtual]

Adding, tranposed matrix-vector product w += m2T * m1T * v.

template<typename number , typename vector_number >
virtual const void* ProductSparseMatrix< number, vector_number >::get (  )  const [private, virtual]

Return some kind of identifier.

Implements PointerMatrixBase< Vector< vector_number > >.


Member Data Documentation

template<typename number , typename vector_number >
SmartPointer<const MatrixType> ProductSparseMatrix< number, vector_number >::m1 [private]

The left matrix of the product.

template<typename number , typename vector_number >
SmartPointer<const MatrixType> ProductSparseMatrix< number, vector_number >::m2 [private]

The right matrix of the product.

template<typename number , typename vector_number >
SmartPointer<VectorMemory<VectorType> > ProductSparseMatrix< number, vector_number >::mem [private]

Memory for auxiliary vector.


The documentation for this class was generated from the following file:

deal.II documentation generated on Sat Aug 15 16:52:14 2009 by doxygen 1.5.9