dune-fem  2.8-git
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Dune::Fem::SimpleBlockVector< Container, BlockSize > Class Template Reference

This is the reference implementation of a block vector as it is expected as the second template parameter to Dune::Fem::BlockVectorDiscreteFunction. More...

#include <dune/fem/function/blockvectors/defaultblockvectors.hh>

Inheritance diagram for Dune::Fem::SimpleBlockVector< Container, BlockSize >:
Inheritance graph

Classes

struct  ContainerAccess
 
struct  ContainerAccess< Dune::DynamicVector< K > >
 

Public Types

enum  { blockSize = BlockSize }
 Size of each block. More...
 
typedef ArrayType DofContainerType
 
typedef ArrayType::value_type FieldType
 Type of the field the dofs lie in. More...
 
typedef ArrayType::iterator IteratorType
 Iterator to iterate over the dofs. More...
 
typedef ArrayType::const_iterator ConstIteratorType
 Constant iterator to iterate over the dofs. More...
 
typedef ArrayType::size_type SizeType
 Used for indexing the blocks, for example. More...
 
typedef FieldType value_type
 Typedef to make this class STL-compatible. More...
 
typedef SizeType size_type
 Typedef to make this class STL-compatible. More...
 
typedef SubVector< DofContainerType, StaticOffsetSubMapper< BlockSize > > DofBlockType
 Type of one (mutable) block. More...
 
typedef DofBlockType ConstDofBlockType
 Type of one constant block. More...
 
typedef Fem::Envelope< DofBlockType > DofBlockPtrType
 
typedef Fem::Envelope< ConstDofBlockType > ConstDofBlockPtrType
 
typedef Hybrid::IndexRange< int, blockSize > BlockIndices
 

Public Member Functions

 SimpleBlockVector (ArrayType &array)
 Constructor. More...
 
const ThisType & operator= (const ThisType &other)
 Copy assignment operator. More...
 
ConstDofBlockType operator[] (const unsigned int i) const
 Constant access the i-th block. More...
 
DofBlockType operator[] (const unsigned int i)
 Access the i-th block. More...
 
ConstDofBlockPtrType blockPtr (const unsigned int i) const
 Constant access for the i-th block. More...
 
DofBlockPtrType blockPtr (const unsigned int i)
 Access the i-th block. More...
 
IteratorType begin ()
 Iterator pointing to the first dof. More...
 
ConstIteratorType begin () const
 Const-iterator pointing to the first dof. More...
 
IteratorType end ()
 Iterator pointing to the last dof. More...
 
ConstIteratorType end () const
 Const-iterator pointing to the last dof. More...
 
SizeType size () const
 Number of blocks. More...
 
SizeType numDofs () const
 Number of dofs in the block vector. More...
 
FieldType * data ()
 
const FieldType * data () const
 
const ArrayType & array () const
 
ArrayType & array ()
 
const ThisType & operator+= (const ThisType &other)
 Add another block vector to *this. More...
 
const ThisType & operator-= (const ThisType &other)
 Subtract another block vector from *this. More...
 
FieldType operator* (const ThisType &other) const
 Scalar product between *this and another block vector. More...
 
const ThisType & operator*= (const FieldType &scalar)
 Scale this block vector. More...
 
void axpy (const FieldType &scalar, const ThisType &other)
 Add a scalar multiple of another block vector to this block vector. More...
 
void clear ()
 Clear this block vector, i.e. set each dof to 0. More...
 
std::size_t usedMemorySize () const
 
void copyContent (const size_t newIndex, const size_t oldIndex)
 
void memMoveBackward (const size_t length, const size_t oldStartIdx, const size_t newStartIdx)
 move memory blocks backwards More...
 
void memMoveForward (const size_t length, const size_t oldStartIdx, const size_t newStartIdx)
 move memory blocks forward More...
 
void setMemoryFactor (const double memFactor)
 set memory overestimate factor, here does nothing More...
 

Protected Member Functions

void assign (const ThisType &other)
 
ThisType & asImp ()
 
const ThisType & asImp () const
 

Protected Attributes

ArrayType & array_
 
CounterType sequence_
 

Detailed Description

template<class Container, int BlockSize>
class Dune::Fem::SimpleBlockVector< Container, BlockSize >

This is the reference implementation of a block vector as it is expected as the second template parameter to Dune::Fem::BlockVectorDiscreteFunction.

Template Parameters
ImpImplementation
FieldField type of all dofs
ContainerContainer type
BlockSizeSize of the blocks
FieldField type of all dofs
BlockSizeSize of the blocks

Member Typedef Documentation

◆ BlockIndices

template<class Container , int BlockSize>
typedef Hybrid::IndexRange< int, blockSize > Dune::Fem::SimpleBlockVector< Container, BlockSize >::BlockIndices

◆ ConstDofBlockPtrType

template<class Container , int BlockSize>
typedef Fem::Envelope< ConstDofBlockType > Dune::Fem::SimpleBlockVector< Container, BlockSize >::ConstDofBlockPtrType

◆ ConstDofBlockType

template<class Container , int BlockSize>
typedef DofBlockType Dune::Fem::SimpleBlockVector< Container, BlockSize >::ConstDofBlockType

Type of one constant block.

◆ ConstIteratorType

template<class Container , int BlockSize>
typedef ArrayType::const_iterator Dune::Fem::SimpleBlockVector< Container, BlockSize >::ConstIteratorType

Constant iterator to iterate over the dofs.

◆ DofBlockPtrType

template<class Container , int BlockSize>
typedef Fem::Envelope< DofBlockType > Dune::Fem::SimpleBlockVector< Container, BlockSize >::DofBlockPtrType

◆ DofBlockType

template<class Container , int BlockSize>
typedef SubVector< DofContainerType, StaticOffsetSubMapper< BlockSize > > Dune::Fem::SimpleBlockVector< Container, BlockSize >::DofBlockType

Type of one (mutable) block.

◆ DofContainerType

template<class Container , int BlockSize>
typedef ArrayType Dune::Fem::SimpleBlockVector< Container, BlockSize >::DofContainerType

◆ FieldType

template<class Container , int BlockSize>
typedef ArrayType::value_type Dune::Fem::SimpleBlockVector< Container, BlockSize >::FieldType

Type of the field the dofs lie in.

◆ IteratorType

template<class Container , int BlockSize>
typedef ArrayType::iterator Dune::Fem::SimpleBlockVector< Container, BlockSize >::IteratorType

Iterator to iterate over the dofs.

◆ size_type

template<class Container , int BlockSize>
typedef SizeType Dune::Fem::SimpleBlockVector< Container, BlockSize >::size_type

Typedef to make this class STL-compatible.

◆ SizeType

template<class Container , int BlockSize>
typedef ArrayType::size_type Dune::Fem::SimpleBlockVector< Container, BlockSize >::SizeType

Used for indexing the blocks, for example.

◆ value_type

template<class Container , int BlockSize>
typedef FieldType Dune::Fem::SimpleBlockVector< Container, BlockSize >::value_type

Typedef to make this class STL-compatible.

Member Enumeration Documentation

◆ anonymous enum

template<class Container , int BlockSize>
anonymous enum

Size of each block.

Enumerator
blockSize 

Constructor & Destructor Documentation

◆ SimpleBlockVector()

template<class Container , int BlockSize>
Dune::Fem::SimpleBlockVector< Container, BlockSize >::SimpleBlockVector ( ArrayType &  array)
inlineexplicit

Constructor.

Member Function Documentation

◆ array() [1/2]

template<class Container , int BlockSize>
ArrayType& Dune::Fem::SimpleBlockVector< Container, BlockSize >::array ( )
inline

◆ array() [2/2]

template<class Container , int BlockSize>
const ArrayType& Dune::Fem::SimpleBlockVector< Container, BlockSize >::array ( ) const
inline

◆ asImp() [1/2]

ThisType& Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::asImp ( )
inlineprotectedinherited

◆ asImp() [2/2]

const ThisType& Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::asImp ( ) const
inlineprotectedinherited

◆ assign()

void Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::assign ( const ThisType &  other)
inlineprotectedinherited

◆ axpy()

void Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::axpy ( const FieldType &  scalar,
const ThisType &  other 
)
inlineinherited

Add a scalar multiple of another block vector to this block vector.

Semantic in pseudocode: " *this = *this + scalar*v "

Parameters
[in]scalarScalar factor by which v is multiplied before it is added to *this
[in]otherThe other block vector

◆ begin() [1/2]

template<class Container , int BlockSize>
IteratorType Dune::Fem::SimpleBlockVector< Container, BlockSize >::begin ( )
inline

Iterator pointing to the first dof.

◆ begin() [2/2]

template<class Container , int BlockSize>
ConstIteratorType Dune::Fem::SimpleBlockVector< Container, BlockSize >::begin ( ) const
inline

Const-iterator pointing to the first dof.

◆ blockPtr() [1/2]

template<class Container , int BlockSize>
DofBlockPtrType Dune::Fem::SimpleBlockVector< Container, BlockSize >::blockPtr ( const unsigned int  i)
inline

Access the i-th block.

◆ blockPtr() [2/2]

template<class Container , int BlockSize>
ConstDofBlockPtrType Dune::Fem::SimpleBlockVector< Container, BlockSize >::blockPtr ( const unsigned int  i) const
inline

Constant access for the i-th block.

◆ clear()

void Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::clear ( )
inlineinherited

Clear this block vector, i.e. set each dof to 0.

◆ copyContent()

void Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::copyContent ( const size_t  newIndex,
const size_t  oldIndex 
)
inlineinherited

implements array[ newIndex ] = array[ oldIndex ]

◆ data() [1/2]

template<class Container , int BlockSize>
FieldType* Dune::Fem::SimpleBlockVector< Container, BlockSize >::data ( )
inline

◆ data() [2/2]

template<class Container , int BlockSize>
const FieldType* Dune::Fem::SimpleBlockVector< Container, BlockSize >::data ( ) const
inline

◆ end() [1/2]

template<class Container , int BlockSize>
IteratorType Dune::Fem::SimpleBlockVector< Container, BlockSize >::end ( )
inline

Iterator pointing to the last dof.

◆ end() [2/2]

template<class Container , int BlockSize>
ConstIteratorType Dune::Fem::SimpleBlockVector< Container, BlockSize >::end ( ) const
inline

Const-iterator pointing to the last dof.

◆ memMoveBackward()

void Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::memMoveBackward ( const size_t  length,
const size_t  oldStartIdx,
const size_t  newStartIdx 
)
inlineinherited

move memory blocks backwards

◆ memMoveForward()

void Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::memMoveForward ( const size_t  length,
const size_t  oldStartIdx,
const size_t  newStartIdx 
)
inlineinherited

move memory blocks forward

◆ numDofs()

template<class Container , int BlockSize>
SizeType Dune::Fem::SimpleBlockVector< Container, BlockSize >::numDofs ( ) const
inline

Number of dofs in the block vector.

◆ operator*()

FieldType Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::operator* ( const ThisType &  other) const
inlineinherited

Scalar product between *this and another block vector.

◆ operator*=()

const ThisType& Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::operator*= ( const FieldType &  scalar)
inlineinherited

Scale this block vector.

Parameters
[in]scalarFactor for the scaling
Returns
Constant reference to *this

◆ operator+=()

const ThisType& Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::operator+= ( const ThisType &  other)
inlineinherited

Add another block vector to *this.

◆ operator-=()

const ThisType& Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::operator-= ( const ThisType &  other)
inlineinherited

Subtract another block vector from *this.

◆ operator=()

template<class Container , int BlockSize>
const ThisType& Dune::Fem::SimpleBlockVector< Container, BlockSize >::operator= ( const ThisType &  other)
inline

Copy assignment operator.

◆ operator[]() [1/2]

template<class Container , int BlockSize>
DofBlockType Dune::Fem::SimpleBlockVector< Container, BlockSize >::operator[] ( const unsigned int  i)
inline

Access the i-th block.

◆ operator[]() [2/2]

template<class Container , int BlockSize>
ConstDofBlockType Dune::Fem::SimpleBlockVector< Container, BlockSize >::operator[] ( const unsigned int  i) const
inline

Constant access the i-th block.

◆ setMemoryFactor()

void Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::setMemoryFactor ( const double  memFactor)
inlineinherited

set memory overestimate factor, here does nothing

◆ size()

template<class Container , int BlockSize>
SizeType Dune::Fem::SimpleBlockVector< Container, BlockSize >::size ( ) const
inline

Number of blocks.

◆ usedMemorySize()

std::size_t Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::usedMemorySize ( ) const
inlineinherited

return memory used by this block vector

Member Data Documentation

◆ array_

template<class Container , int BlockSize>
ArrayType& Dune::Fem::SimpleBlockVector< Container, BlockSize >::array_
protected

◆ sequence_

CounterType Dune::Fem::BlockVectorInterface< SimpleBlockVector< Container, BlockSize > , Container::value_type >::sequence_
mutableprotectedinherited

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