Reference documentation for deal.II version 8.1.0
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ProductSparseMatrix< number, vector_number > Class Template Reference

#include <matrix_lib.h>

Inheritance diagram for ProductSparseMatrix< number, vector_number >:
[legend]

Public Types

typedef SparseMatrix< number > MatrixType
 
typedef Vector< vector_number > VectorType
 
- Public Types inherited from PointerMatrixBase< Vector< vector_number > >
typedef Vector< vector_number >::value_type value_type
 

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
 
- Public Member Functions inherited from PointerMatrixBase< Vector< vector_number > >
virtual ~PointerMatrixBase ()
 
bool operator== (const PointerMatrixBase< Vector< vector_number > > &) const
 
bool operator!= (const PointerMatrixBase< Vector< vector_number > > &) const
 
bool operator< (const PointerMatrixBase< Vector< vector_number > > &) const
 
bool operator<= (const PointerMatrixBase< Vector< vector_number > > &) const
 
bool operator> (const PointerMatrixBase< Vector< vector_number > > &) const
 
bool operator>= (const PointerMatrixBase< Vector< vector_number > > &) const
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
void subscribe (const char *identifier=0) const
 
void unsubscribe (const char *identifier=0) const
 
unsigned int n_subscriptions () const
 
void list_subscribers () const
 
 DeclException3 (ExcInUse, int, char *, std::string &,<< "Object of class "<< arg2<< " is still used by "<< arg1<< " other objects.\n"<< "(Additional information: "<< arg3<< ")\n"<< "Note the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "more information on what this error means.")
 
 DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier \""<< arg2<< "\" did subscribe to this object of class "<< arg1)
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Member Functions

virtual const void * get () const
 

Private Attributes

SmartPointer< const MatrixType, ProductSparseMatrix< number, vector_number > > m1
 
SmartPointer< const MatrixType, ProductSparseMatrix< number, vector_number > > m2
 
SmartPointer< VectorMemory< VectorType >, ProductSparseMatrix< number, vector_number > > 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

Definition at line 229 of file matrix_lib.h.

Member Typedef Documentation

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

Define the type of matrices used.

Definition at line 235 of file matrix_lib.h.

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.

Definition at line 241 of file matrix_lib.h.

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 >::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.

Implements PointerMatrixBase< Vector< vector_number > >.

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.

Implements PointerMatrixBase< Vector< vector_number > >.

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

Implements PointerMatrixBase< Vector< vector_number > >.

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.

Implements PointerMatrixBase< Vector< vector_number > >.

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

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> > ProductSparseMatrix< number, vector_number >::m1
private

The left matrix of the product.

Definition at line 304 of file matrix_lib.h.

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

The right matrix of the product.

Definition at line 309 of file matrix_lib.h.

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

Memory for auxiliary vector.

Definition at line 314 of file matrix_lib.h.


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