BlockIndices Class Reference
[Data storage primitives]

List of all members.

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
BlockIndicesoperator= (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 intstart_indices

Related Functions

(Note that these are not member functions.)

void swap (BlockIndices &u, BlockIndices &v)


Detailed Description

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.

Author:
Wolfgang Bangerth, Guido Kanschat, 2000, 2007

Constructor & Destructor Documentation

BlockIndices::BlockIndices ( const unsigned int  n_blocks = 0  )  [inline]

Default constructor. Initialize for n_blocks blocks and set all block sizes to zero.

References start_indices.

BlockIndices::BlockIndices ( const std::vector< unsigned int > &  n  )  [inline]

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().


Member Function Documentation

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().

void BlockIndices::reinit ( const std::vector< unsigned int > &  n  )  [inline]

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

unsigned int BlockIndices::size (  )  const [inline]

unsigned int BlockIndices::total_size (  )  const [inline]

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().

unsigned int BlockIndices::block_size ( const unsigned int  i  )  const [inline]

The size of the ith block.

References Assert, n_blocks, and start_indices.

unsigned int BlockIndices::block_start ( const unsigned int  i  )  const [inline]

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().

unsigned int BlockIndices::memory_consumption (  )  const [inline]

Determine an estimate for the memory consumption (in bytes) of this object.

References start_indices.


Friends And Related Function Documentation

void swap ( BlockIndices u,
BlockIndices v 
) [related]

Global function swap which overloads the default implementation of the C++ standard library which uses a temporary object. The function simply exchanges the data of the two objects.

Author:
Wolfgang Bangerth, 2000

References swap().


Member Data Documentation

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().


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

deal.II documentation generated on Fri Nov 21 07:12:50 2008 by doxygen 1.5.6