Public Member Functions | |
BlockIndices (const unsigned int n_blocks=0) | |
BlockIndices (const std::vector< unsigned int > &n) | |
void | reinit (const unsigned int n_blocks, const unsigned int n_elements_per_block) |
void | reinit (const std::vector< unsigned int > &n) |
std::pair< unsigned int, unsigned int > | global_to_local (const unsigned int i) const |
unsigned int | local_to_global (const unsigned int block, const unsigned int index) const |
unsigned int | size () const |
unsigned int | total_size () const |
unsigned int | block_size (const unsigned int i) const |
unsigned int | block_start (const unsigned int i) const |
BlockIndices & | operator= (const BlockIndices &b) |
bool | operator== (const BlockIndices &b) const |
void | swap (BlockIndices &b) |
unsigned int | memory_consumption () const |
Private Attributes | |
unsigned int | n_blocks |
std::vector< unsigned int > | start_indices |
Related Functions | |
(Note that these are not member functions.) | |
void | swap (BlockIndices &u, BlockIndices &v) |
Class that manages the conversion of global indices into a block vector or matrix to the local indices within this block. This is required when you address a global element in a block vector and want to know which element within which block this is. It is also useful if a matrix is composed of several blocks, where you have to translate global row and column indices to local ones.
Default constructor. Initialize for n_blocks
blocks and set all block sizes to zero.
References start_indices.
Constructor. Initialize the number of entries in each block i
as n[i]
. The number of blocks will be the size of the vector
References reinit().
void BlockIndices::reinit | ( | const unsigned int | n_blocks, | |
const unsigned int | n_elements_per_block | |||
) | [inline] |
Reinitialize the number of blocks and assign each block the same number of elements.
Referenced by BlockIndices(), PETScWrappers::MPI::BlockVector::reinit(), and PETScWrappers::BlockVector::reinit().
Reinitialize the number of indices within each block from the given argument. The number of blocks will be adjusted to the size of n
and the size of block i
is set to n[i]
.
References n_blocks, and start_indices.
std::pair< unsigned int, unsigned int > BlockIndices::global_to_local | ( | const unsigned int | i | ) | const [inline] |
Return the block and the index within that block for the global index i
. The first element of the pair is the block, the second the index within it.
References Assert, n_blocks, start_indices, and total_size().
Referenced by BlockSparsityPatternBase< SparsityPatternBase >::add(), BlockSparseMatrixEZ< Number >::add(), BlockSparsityPatternBase< SparsityPatternBase >::add_entries(), BlockSparsityPatternBase< SparsityPatternBase >::exists(), BlockSparsityPatternBase< SparsityPatternBase >::row_length(), and BlockSparseMatrixEZ< Number >::set().
unsigned int BlockIndices::local_to_global | ( | const unsigned int | block, | |
const unsigned int | index | |||
) | const [inline] |
Return the global index of index
in block block
.
References Assert, n_blocks, and start_indices.
Number of blocks in index field.
References n_blocks.
Referenced by PETScWrappers::BlockVector::BlockVector(), BlockSparseMatrixEZ< Number >::n_block_cols(), and BlockSparseMatrixEZ< Number >::n_block_rows().
Return the total number of indices accumulated over all blocks, that is, the dimension of the vector space of the block vector.
References n_blocks, and start_indices.
Referenced by global_to_local(), BlockSparseMatrixEZ< Number >::n_cols(), and BlockSparseMatrixEZ< Number >::n_rows().
The size of the ith
block.
References Assert, n_blocks, and start_indices.
The start index of the ith block.
References Assert, n_blocks, and start_indices.
BlockIndices & BlockIndices::operator= | ( | const BlockIndices & | b | ) | [inline] |
Copy operator.
References n_blocks, and start_indices.
bool BlockIndices::operator== | ( | const BlockIndices & | b | ) | const [inline] |
Compare whether two objects are the same, i.e. whether the starting indices of all blocks are equal.
References n_blocks, and start_indices.
void BlockIndices::swap | ( | BlockIndices & | b | ) | [inline] |
Swap the contents of these two objects.
References Assert, n_blocks, start_indices, and swap().
Referenced by swap().
Determine an estimate for the memory consumption (in bytes) of this object.
References start_indices.
unsigned int BlockIndices::n_blocks [private] |
Number of blocks. While this value could be obtained through start_indices.size()-1
, we cache this value for faster access.
Referenced by block_size(), block_start(), global_to_local(), local_to_global(), operator=(), operator==(), reinit(), size(), swap(), and total_size().
std::vector<unsigned int> BlockIndices::start_indices [private] |
Global starting index of each vector. The last and redundant value is the total number of entries.
Referenced by block_size(), block_start(), BlockIndices(), global_to_local(), local_to_global(), memory_consumption(), operator=(), operator==(), reinit(), swap(), and total_size().