Reference documentation for deal.II version 8.4.1
Public Member Functions | Private Attributes | List of all members
BlockDiagonalMatrix< MatrixType > Class Template Reference

#include <deal.II/lac/block_matrix.h>

Inheritance diagram for BlockDiagonalMatrix< MatrixType >:
[legend]

Public Member Functions

 BlockDiagonalMatrix (const MatrixType &M, const unsigned int n_blocks)
 
template<typename number1 , typename number2 >
void vmult (BlockVector< number1 > &dst, const BlockVector< number2 > &src) const
 
template<typename number1 , typename number2 >
void Tvmult (BlockVector< number1 > &dst, const BlockVector< number2 > &src) 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\n"<< "(Additional information: "<< arg3<< ")\n\n"<< "See the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "a lot more information on what this error means and "<< "how to fix programs in which it happens.")
 
 DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier <"<< arg2<< "> subscribes to this object of class "<< arg1<< ". Consequently, it cannot be unsubscribed.")
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

unsigned int num_blocks
 
SmartPointer< const MatrixType, BlockDiagonalMatrix< MatrixType > > matrix
 

Detailed Description

template<typename MatrixType>
class BlockDiagonalMatrix< MatrixType >

A matrix with several copies of the same block on the diagonal.

This matrix implements an m by m block matrix. Each diagonal block consists of the same (non-block) matrix, while off-diagonal blocks are void.

One special application is a one by one block matrix, allowing to apply the vmult of the original matrix (or preconditioner) to a block vector.

Deprecated:
If deal.II was configured with C++11 support, use the LinearOperator class instead, see the module on linear operators for further details.
See also
Block (linear algebra)
Author
Guido Kanschat, 2000

Definition at line 51 of file block_matrix.h.

Constructor & Destructor Documentation

template<typename MatrixType >
BlockDiagonalMatrix< MatrixType >::BlockDiagonalMatrix ( const MatrixType &  M,
const unsigned int  n_blocks 
)

Constructor for an n_blocks by n_blocks matrix with diagonal blocks M.

Definition at line 90 of file block_matrix.h.

Member Function Documentation

template<typename MatrixType >
template<typename number1 , typename number2 >
void BlockDiagonalMatrix< MatrixType >::vmult ( BlockVector< number1 > &  dst,
const BlockVector< number2 > &  src 
) const

Matrix-vector-multiplication.

Definition at line 101 of file block_matrix.h.

template<typename MatrixType >
template<typename number1 , typename number2 >
void BlockDiagonalMatrix< MatrixType >::Tvmult ( BlockVector< number1 > &  dst,
const BlockVector< number2 > &  src 
) const

Transposed matrix-vector-multiplication.

Definition at line 117 of file block_matrix.h.

Member Data Documentation

template<typename MatrixType >
unsigned int BlockDiagonalMatrix< MatrixType >::num_blocks
private

Number of blocks.

Definition at line 78 of file block_matrix.h.

template<typename MatrixType >
SmartPointer<const MatrixType,BlockDiagonalMatrix<MatrixType> > BlockDiagonalMatrix< MatrixType >::matrix
private

Diagonal entry.

Definition at line 83 of file block_matrix.h.


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