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


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

deal.II documentation generated on Mon Nov 23 22:57:29 2009 by doxygen 1.6.1