DUNE-FEM (unstable)

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>

Public Types

enum  
 Size of each block.
 
typedef ArrayType::value_type FieldType
 Type of the field the dofs lie in.
 
typedef ArrayType::iterator IteratorType
 Iterator to iterate over the dofs.
 
typedef ArrayType::const_iterator ConstIteratorType
 Constant iterator to iterate over the dofs.
 
typedef ArrayType::size_type SizeType
 Used for indexing the blocks, for example.
 
typedef FieldType value_type
 Typedef to make this class STL-compatible.
 
typedef SizeType size_type
 Typedef to make this class STL-compatible.
 
typedef SubVector< DofContainerType, StaticOffsetSubMapper< BlockSize > > DofBlockType
 Type of one (mutable) block.
 
typedef DofBlockType ConstDofBlockType
 Type of one constant block.
 
typedef Field DofType
 make consistent with discrete function
 

Public Member Functions

 SimpleBlockVector (ArrayType &array)
 Constructor.
 
const ThisType & operator= (const ThisType &other)
 Copy assignment operator.
 
ConstDofBlockType operator[] (const unsigned int i) const
 Constant access the i-th block.
 
DofBlockType operator[] (const unsigned int i)
 Access the i-th block.
 
ConstDofBlockPtrType blockPtr (const unsigned int i) const
 Constant access for the i-th block.
 
DofBlockPtrType blockPtr (const unsigned int i)
 Access the i-th block.
 
IteratorType begin ()
 Iterator pointing to the first dof.
 
ConstIteratorType begin () const
 Const-iterator pointing to the first dof.
 
IteratorType end ()
 Iterator pointing to the last dof.
 
ConstIteratorType end () const
 Const-iterator pointing to the last dof.
 
IteratorType beforeEnd ()
 Iterator pointing to last dof.
 
ConstIteratorType beforeEnd () const
 Iterator pointing to last dof.
 
IteratorType beforeBegin ()
 Iterator pointing to before the first dof.
 
ConstIteratorType beforeBegin () const
 Iterator pointing to before the first dof.
 
IteratorType find (const SizeType dof)
 Iterator pointing to a given dof (non blocked numbering)
 
ConstIteratorType find (const SizeType dof) const
 Iterator pointing to a given dof (non blocked numbering)
 
SizeType size () const
 Number of blocks.
 
SizeType numDofs () const
 Number of dofs in the block vector.
 
const ThisType & operator+= (const ThisType &other)
 Add another block vector to *this.
 
const ThisType & operator-= (const ThisType &other)
 Subtract another block vector from *this.
 
FieldType operator* (const ThisType &other) const
 Scalar product between *this and another block vector.
 
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.
 
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
 
void memMoveForward (const size_t length, const size_t oldStartIdx, const size_t newStartIdx)
 move memory blocks forward
 
void setMemoryFactor (const double memFactor)
 set memory overestimate factor, here does nothing
 

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 Function Documentation

◆ axpy()

template<class Imp , class Field >
void Dune::Fem::BlockVectorInterface< Imp, Field >::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

◆ copyContent()

template<class Imp , class Field >
void Dune::Fem::BlockVectorInterface< Imp, Field >::copyContent ( const size_t  newIndex,
const size_t  oldIndex 
)
inlineinherited

implements array[ newIndex ] = array[ oldIndex ]

◆ operator*=()

template<class Imp , class Field >
const ThisType & Dune::Fem::BlockVectorInterface< Imp, Field >::operator*= ( const FieldType &  scalar)
inlineinherited

Scale this block vector.

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

◆ usedMemorySize()

template<class Imp , class Field >
std::size_t Dune::Fem::BlockVectorInterface< Imp, Field >::usedMemorySize ( ) const
inlineinherited

return memory used by this block vector


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 27, 22:29, 2024)