Reference documentation for deal.II version 9.1.1
BlockSparseMatrixEZ< Number > Class Template Reference

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

Inheritance diagram for BlockSparseMatrixEZ< Number >:
[legend]

## Public Types

using size_type = types::global_dof_index

## Public Member Functions

BlockSparseMatrixEZ ()=default

BlockSparseMatrixEZ (const unsigned int block_rows, const unsigned int block_cols)

BlockSparseMatrixEZ (const BlockSparseMatrixEZ< Number > &)

BlockSparseMatrixEZoperator= (const BlockSparseMatrixEZ< Number > &)

BlockSparseMatrixEZoperator= (const double d)

void clear ()

void reinit (const unsigned int n_block_rows, const unsigned int n_block_cols)

void collect_sizes ()

SparseMatrixEZ< Number > & block (const unsigned int row, const unsigned int column)

const SparseMatrixEZ< Number > & block (const unsigned int row, const unsigned int column) const

unsigned int n_block_rows () const

unsigned int n_block_cols () const

bool empty () const

size_type m () const

size_type n () const

void set (const size_type i, const size_type j, const Number value)

void add (const size_type i, const size_type j, const Number value)

void vmult (BlockVector< somenumber > &dst, const BlockVector< somenumber > &src) const

void Tvmult (BlockVector< somenumber > &dst, const BlockVector< somenumber > &src) const

template<class StreamType >
void print_statistics (StreamType &s, bool full=false)

Public Member Functions inherited from Subscriptor
Subscriptor ()

Subscriptor (const Subscriptor &)

Subscriptor (Subscriptor &&) noexcept

virtual ~Subscriptor ()

Subscriptoroperator= (const Subscriptor &)

Subscriptoroperator= (Subscriptor &&) noexcept

void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const

void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const

unsigned int n_subscriptions () const

template<typename StreamType >
void list_subscribers (StreamType &stream) const

void list_subscribers () const

template<class Archive >
void serialize (Archive &ar, const unsigned int version)

## Private Attributes

BlockIndices row_indices

BlockIndices column_indices

Table< 2, SparseMatrixEZ< Number > > blocks

Static Public Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)

static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)

## Detailed Description

### template<typename Number> class BlockSparseMatrixEZ< Number >

A block matrix consisting of blocks of type SparseMatrixEZ.

Like the other Block-objects, this matrix can be used like a SparseMatrixEZ, when it comes to access to entries. Then, there are functions for the multiplication with BlockVector and access to the individual blocks.

Block (linear algebra)

Definition at line 1869 of file affine_constraints.h.

## ◆ size_type

template<typename Number>
 using BlockSparseMatrixEZ< Number >::size_type = types::global_dof_index

Declare type for container size.

Definition at line 64 of file block_sparse_matrix_ez.h.

## ◆ BlockSparseMatrixEZ() [1/3]

template<typename Number>
 BlockSparseMatrixEZ< Number >::BlockSparseMatrixEZ ( )
default

Default constructor. The result is an empty object with zero dimensions.

## ◆ BlockSparseMatrixEZ() [2/3]

template<typename Number>
 BlockSparseMatrixEZ< Number >::BlockSparseMatrixEZ ( const unsigned int block_rows, const unsigned int block_cols )

Constructor setting up an object with given number of block rows and columns. The blocks themselves still have zero dimension.

## ◆ BlockSparseMatrixEZ() [3/3]

template<typename Number>
 BlockSparseMatrixEZ< Number >::BlockSparseMatrixEZ ( const BlockSparseMatrixEZ< Number > & )

Copy constructor. This is needed for some container classes. It creates an object of the same number of block rows and columns. Since it calls the copy constructor of SparseMatrixEZ, the block s must be empty.

## ◆ operator=() [1/2]

template<typename Number>
 BlockSparseMatrixEZ& BlockSparseMatrixEZ< Number >::operator= ( const BlockSparseMatrixEZ< Number > & )

Copy operator. Like the copy constructor, this may be called for objects with empty blocks only.

## ◆ operator=() [2/2]

template<typename Number>
 BlockSparseMatrixEZ& BlockSparseMatrixEZ< Number >::operator= ( const double d )

This operator assigns a scalar to a matrix. Since this does usually not make much sense (should we set all matrix entries to this value? Only the nonzero entries of the sparsity pattern?), this operation is only allowed if the actual value to be assigned is zero. This operator only exists to allow for the obvious notation matrix=0, which sets all elements of the matrix to zero, but keep the sparsity pattern previously used.

## ◆ clear()

template<typename Number>
 void BlockSparseMatrixEZ< Number >::clear ( )

Set matrix to zero dimensions and release memory.

## ◆ reinit()

template<typename Number>
 void BlockSparseMatrixEZ< Number >::reinit ( const unsigned int n_block_rows, const unsigned int n_block_cols )

Initialize to given block numbers. After this operation, the matrix will have the block dimensions provided. Each block will have zero dimensions and must be initialized subsequently. After setting the sizes of the blocks, collect_sizes() must be called to update internal data structures.

## ◆ collect_sizes()

template<typename Number>
 void BlockSparseMatrixEZ< Number >::collect_sizes ( )

This function collects the sizes of the sub-objects and stores them in internal arrays, in order to be able to relay global indices into the matrix to indices into the subobjects. You must call this function each time after you have changed the size of the sub-objects.

## ◆ block() [1/2]

template<typename Number >
 SparseMatrixEZ< Number > & BlockSparseMatrixEZ< Number >::block ( const unsigned int row, const unsigned int column )
inline

Access the block with the given coordinates.

Definition at line 288 of file block_sparse_matrix_ez.h.

## ◆ block() [2/2]

template<typename Number >
 const SparseMatrixEZ< Number > & BlockSparseMatrixEZ< Number >::block ( const unsigned int row, const unsigned int column ) const
inline

Access the block with the given coordinates. Version for constant objects.

Definition at line 301 of file block_sparse_matrix_ez.h.

## ◆ n_block_rows()

template<typename Number >
 unsigned int BlockSparseMatrixEZ< Number >::n_block_rows ( ) const
inline

Return the number of blocks in a column.

Definition at line 270 of file block_sparse_matrix_ez.h.

## ◆ n_block_cols()

template<typename Number >
 unsigned int BlockSparseMatrixEZ< Number >::n_block_cols ( ) const
inline

Return the number of blocks in a row.

Definition at line 279 of file block_sparse_matrix_ez.h.

## ◆ empty()

template<typename Number>
 bool BlockSparseMatrixEZ< Number >::empty ( ) const

Return whether the object is empty. It is empty if no memory is allocated, which is the same as that both dimensions are zero. This function is just the concatenation of the respective call to all sub- matrices.

## ◆ m()

template<typename Number >
 BlockSparseMatrixEZ< Number >::size_type BlockSparseMatrixEZ< Number >::m ( ) const
inline

Return number of rows of this matrix, which equals the dimension of the codomain (or range) space. It is the sum of the number of rows over the sub-matrix blocks of this matrix. Recall that the matrix is of size m() times n().

Definition at line 314 of file block_sparse_matrix_ez.h.

## ◆ n()

template<typename Number >
 BlockSparseMatrixEZ< Number >::size_type BlockSparseMatrixEZ< Number >::n ( ) const
inline

Return number of columns of this matrix, which equals the dimension of the domain space. It is the sum of the number of columns over the sub- matrix blocks of this matrix. Recall that the matrix is of size m() times n().

Definition at line 323 of file block_sparse_matrix_ez.h.

## ◆ set()

template<typename Number >
 void BlockSparseMatrixEZ< Number >::set ( const size_type i, const size_type j, const Number value )
inline

Set the element (i,j) to value. Throws an error if the entry does not exist or if value is not a finite number. Still, it is allowed to store zero values in non-existent fields.

Definition at line 332 of file block_sparse_matrix_ez.h.

template<typename Number >
 void BlockSparseMatrixEZ< Number >::add ( const size_type i, const size_type j, const Number value )
inline

Add value to the element (i,j). Throws an error if the entry does not exist or if value is not a finite number. Still, it is allowed to store zero values in non-existent fields.

Definition at line 350 of file block_sparse_matrix_ez.h.

## ◆ vmult()

template<typename Number >
 void BlockSparseMatrixEZ< Number >::vmult ( BlockVector< somenumber > & dst, const BlockVector< somenumber > & src ) const

Matrix-vector multiplication: let $$dst = M*src$$ with $$M$$ being this matrix.

Definition at line 368 of file block_sparse_matrix_ez.h.

## ◆ Tvmult()

template<typename Number >
 void BlockSparseMatrixEZ< Number >::Tvmult ( BlockVector< somenumber > & dst, const BlockVector< somenumber > & src ) const

Matrix-vector multiplication: let $$dst = M^T*src$$ with $$M$$ being this matrix. This function does the same as vmult() but takes the transposed matrix.

Definition at line 406 of file block_sparse_matrix_ez.h.

template<typename Number >
 void BlockSparseMatrixEZ< Number >::vmult_add ( BlockVector< somenumber > & dst, const BlockVector< somenumber > & src ) const

Adding Matrix-vector multiplication. Add $$M*src$$ on $$dst$$ with $$M$$ being this matrix.

Definition at line 388 of file block_sparse_matrix_ez.h.

template<typename Number >
 void BlockSparseMatrixEZ< Number >::Tvmult_add ( BlockVector< somenumber > & dst, const BlockVector< somenumber > & src ) const

Adding Matrix-vector multiplication. Add $$M^T*src$$ to $$dst$$ with $$M$$ being this matrix. This function does the same as vmult_add() but takes the transposed matrix.

Definition at line 426 of file block_sparse_matrix_ez.h.

## ◆ print_statistics()

template<typename number >
template<class StreamType >
 void BlockSparseMatrixEZ< number >::print_statistics ( StreamType & s, bool full = false )
inline

Print statistics. If full is true, prints a histogram of all existing row lengths and allocated row lengths. Otherwise, just the relation of allocated and used entries is shown.

Definition at line 444 of file block_sparse_matrix_ez.h.

## ◆ row_indices

template<typename Number>
 BlockIndices BlockSparseMatrixEZ< Number >::row_indices
private

Object storing and managing the transformation of row indices to indices of the sub-objects.

Definition at line 250 of file block_sparse_matrix_ez.h.

## ◆ column_indices

template<typename Number>
 BlockIndices BlockSparseMatrixEZ< Number >::column_indices
private

Object storing and managing the transformation of column indices to indices of the sub-objects.

Definition at line 256 of file block_sparse_matrix_ez.h.

## ◆ blocks

template<typename Number>
 Table<2, SparseMatrixEZ > BlockSparseMatrixEZ< Number >::blocks
private

The actual matrices

Definition at line 261 of file block_sparse_matrix_ez.h.

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