#include <block_matrix.h>
Public Types | |
| typedef Vector< C >::size_type | size_type |
Public Member Functions | |
| BlockMatrix (const size_type n=0) | |
| default constructor, yields a zero (nxn)-block (each 1x1) matrix, empty per default | |
| BlockMatrix (const size_type block_rows, const size_type block_columns) | |
| constructor for (mxn) block (each 1x1) matrices, empty per default | |
| BlockMatrix (const BlockMatrix< C > &) | |
| copy constructor | |
| ~BlockMatrix () | |
| destructor (all subblocks will be deleted) | |
| MatrixBlock< C > * | clone () const |
| clone the block matrix (requirement from MatrixBlock) | |
| MatrixBlock< C > * | clone_transposed () const |
| transpose the block matrix (requirement from MatrixBlock) | |
| const size_type | row_dimension () const |
| (overall) row dimension | |
| const size_type | column_dimension () const |
| (overall) column dimension | |
| const size_type | block_rows () const |
| number of "block rows", i.e., blocks in column direction (vertical) | |
| const size_type | block_columns () const |
| number of "block columns", i.e., blocks in row direction (horizontal) | |
| const size_type | block_row_dimension (const size_type block_row) const |
| row dimension of a given block row | |
| const size_type | block_column_dimension (const size_type block_column) const |
| column dimension of a given block column | |
| const MatrixBlock< C > * | get_block (const size_type block_row, const size_type block_column) const |
| get a single matrix block | |
| void | set_block (const size_type row, const size_type column, MatrixBlock< C > *block) |
| void | resize_block_row (const size_type block_row, const size_type rows) |
| resize a row block (i.e., its number of rows) | |
| void | resize_block_column (const size_type block_row, const size_type columns) |
| resize a block column (i.e., its number of columns) | |
| bool | empty () const |
| return true if matrix is empty (cf. STL containers) | |
| void | apply (const Vector< C > &x, Vector< C > &Mx) const |
| void | apply_transposed (const Vector< C > &x, Vector< C > &Mtx) const |
| void | print (std::ostream &os, const unsigned int tabwidth=10, const unsigned int precision=3) const |
Protected Member Functions | |
| void | calculate_size () |
| (re)calculate overall row and column dimensions | |
Protected Attributes | |
| Array1D< MatrixBlock< C > * > | blocks |
| pointers to the blocks | |
| Array1D< size_type > | block_rows_rows |
| row dimensions of the block rows | |
| Array1D< size_type > | block_columns_columns |
| column dimensions of the block columns | |
| size_type | rowdim_ |
| (overall) row dimension | |
| size_type | coldim_ |
| (overall) column dimension | |
A class for block matrices with almost arbitrary subblocks.
| typedef Vector<C>::size_type MathTL::BlockMatrix< C >::size_type |
type of indexes and size type (cf. STL containers)
Reimplemented from MathTL::MatrixBlock< C >.
| void MathTL::BlockMatrix< C >::apply | ( | const Vector< C > & | x, |
| Vector< C > & | Mx | ||
| ) | const [virtual] |
matrix-vector multiplication Mx = (*this) * x; we assume that the vector Mx has the correct size and is not identical to x
Implements MathTL::MatrixBlock< C >.
| void MathTL::BlockMatrix< C >::apply_transposed | ( | const Vector< C > & | x, |
| Vector< C > & | Mtx | ||
| ) | const [virtual] |
transposed matrix-vector multiplication Mtx = (*this)^T * x; we assume that the vector Mtx has the correct size and is not identical to x
Implements MathTL::MatrixBlock< C >.
| void MathTL::BlockMatrix< C >::print | ( | std::ostream & | os, |
| const unsigned int | tabwidth = 10, |
||
| const unsigned int | precision = 3 |
||
| ) | const [virtual] |
stream output with user-defined tabwidth and precision (cf. deal.II)
Implements MathTL::MatrixBlock< C >.
| void MathTL::BlockMatrix< C >::set_block | ( | const size_type | row, |
| const size_type | column, | ||
| MatrixBlock< C > * | block | ||
| ) | [inline] |
Set a single matrix block. Note that the old block will be deleted, and ~BlockMatrix() will delete this block! Be sure to resize the corresponding row/column block properly before or after this call. (this is necessary to have zero row/column blocks without having to allocate them)
1.7.6.1