Dune Core Modules (2.5.2)

A vector of blocks with memory management. More...

#include <dune/istl/bvector.hh>

Public Types

enum  { blocklevel = B::blocklevel+1 }
 increment block level counter More...
 
typedef B::field_type field_type
 export the type representing the field
 
typedef B block_type
 export the type representing the components
 
typedef A allocator_type
 export the allocator type
 
typedef A::size_type size_type
 The type for the index access.
 
typedef block_vector_unmanaged< B, A >::Iterator Iterator
 make iterators available as types
 
typedef block_vector_unmanaged< B, A >::ConstIterator ConstIterator
 make iterators available as types
 
typedef B value_type
 for STL compatibility
 
typedef B & reference
 Type used for references.
 
typedef const B & const_reference
 Type used for const references.
 
typedef B member_type
 export the type representing the components
 
typedef RealIterator< B > iterator
 iterator type for sequential access
 
typedef RealIterator< const B > const_iterator
 iterator class for sequential access
 

Public Member Functions

 BlockVector ()
 makes empty vector
 
 BlockVector (size_type _n)
 make vector with _n components
 
 BlockVector (std::initializer_list< B > const &l)
 Construct from a std::initializer_list.
 
template<typename S >
 BlockVector (size_type _n, S _capacity)
 Make vector with _n components but preallocating capacity components. More...
 
void reserve (size_type capacity, bool copyOldValues=true)
 Reserve space. More...
 
size_type capacity () const
 Get the capacity of the vector. More...
 
void resize (size_type size, bool copyOldValues=true)
 Resize the vector. More...
 
 BlockVector (const BlockVector &a)
 copy constructor
 
 ~BlockVector ()
 free dynamic memory
 
BlockVectoroperator= (const BlockVector &a)
 assignment
 
BlockVectoroperator= (const field_type &k)
 assign from scalar
 
template<class OtherAlloc >
BlockVectoroperator= (const BlockVectorWindow< B, OtherAlloc > &other)
 Assignment from BlockVectorWindow.
 
block_vector_unmanagedoperator+= (const block_vector_unmanaged &y)
 vector space addition
 
block_vector_unmanagedoperator-= (const block_vector_unmanaged &y)
 vector space subtraction
 
block_vector_unmanagedoperator*= (const field_type &k)
 vector space multiplication with scalar
 
block_vector_unmanagedoperator/= (const field_type &k)
 vector space division by scalar
 
block_vector_unmanagedaxpy (const field_type &a, const block_vector_unmanaged &y)
 vector space axpy operation
 
PromotionTraits< field_type, typename OtherB::field_type >::PromotedType operator* (const block_vector_unmanaged< OtherB, OtherA > &y) const
 indefinite vector dot product \(\left (x^T \cdot y \right)\) which corresponds to Petsc's VecTDot More...
 
PromotionTraits< field_type, typename OtherB::field_type >::PromotedType dot (const block_vector_unmanaged< OtherB, OtherA > &y) const
 vector dot product \(\left (x^H \cdot y \right)\) which corresponds to Petsc's VecDot More...
 
FieldTraits< field_type >::real_type one_norm () const
 one norm (sum over absolute values of entries)
 
FieldTraits< field_type >::real_type one_norm_real () const
 simplified one norm (uses Manhattan norm for complex values)
 
FieldTraits< field_type >::real_type two_norm () const
 two norm sqrt(sum over squared values of entries)
 
FieldTraits< field_type >::real_type two_norm2 () const
 Square of the two-norm (the sum over the squared values of the entries)
 
FieldTraits< ft >::real_type infinity_norm () const
 infinity norm (maximum of absolute values of entries)
 
FieldTraits< ft >::real_type infinity_norm () const
 infinity norm (maximum of absolute values of entries)
 
FieldTraits< ft >::real_type infinity_norm_real () const
 simplified infinity norm (uses Manhattan norm for complex values)
 
FieldTraits< ft >::real_type infinity_norm_real () const
 simplified infinity norm (uses Manhattan norm for complex values)
 
size_type N () const
 number of blocks in the vector (are of size 1 here)
 
size_type dim () const
 dimension of the vector space
 
B & operator[] (size_type i)
 random access to blocks
 
const B & operator[] (size_type i) const
 same for read only access
 
iterator begin ()
 begin iterator
 
const_iterator begin () const
 begin const_iterator
 
iterator end ()
 end iterator
 
const_iterator end () const
 end const_iterator
 
iterator beforeEnd ()
 
const_iterator beforeEnd () const
 
iterator beforeBegin ()
 
const_iterator beforeBegin () const
 
iterator find (size_type i)
 random access returning iterator (end if not contained)
 
const_iterator find (size_type i) const
 random access returning iterator (end if not contained)
 
size_type size () const
 number of blocks in the array (are of size 1 here)
 

Detailed Description

template<class B, class A = std::allocator<B>>
class Dune::BlockVector< B, A >

A vector of blocks with memory management.

BlockVector adds memory management with ordinary copy semantics to the block_vector_unmanaged template.

Error checking: no error checking is provided normally.
Setting the compile time switch DUNE_ISTL_WITH_CHECKING
enables error checking.

Member Enumeration Documentation

◆ anonymous enum

template<class B , class A = std::allocator<B>>
anonymous enum

increment block level counter

Enumerator
blocklevel 

The number of blocklevel we contain.

Constructor & Destructor Documentation

◆ BlockVector()

template<class B , class A = std::allocator<B>>
template<typename S >
Dune::BlockVector< B, A >::BlockVector ( size_type  _n,
_capacity 
)
inline

Make vector with _n components but preallocating capacity components.

If _n > capacity then space for _n entries is allocated.

Note
This constructor is somewhat dangerous. People may be tempted to write something like
BlockVector<FieldVector<double,1> > my_vector(100,0);
expecting to obtain a vector of 100 doubles initialized with zero. However, the code calls this constructor which tacitly does something else!

References Dune::BlockVector< B, A >::capacity().

Member Function Documentation

◆ beforeBegin() [1/2]

iterator Dune::base_array_unmanaged< B, std::allocator< B > >::beforeBegin ( )
inlineinherited
Returns
an iterator that is positioned before the first entry of the vector.

◆ beforeBegin() [2/2]

const_iterator Dune::base_array_unmanaged< B, std::allocator< B > >::beforeBegin ( ) const
inlineinherited
Returns
an iterator that is positioned before the first entry of the vector.

◆ beforeEnd() [1/2]

iterator Dune::base_array_unmanaged< B, std::allocator< B > >::beforeEnd ( )
inlineinherited
Returns
an iterator that is positioned before the end iterator of the vector, i.e. at the last entry.

◆ beforeEnd() [2/2]

const_iterator Dune::base_array_unmanaged< B, std::allocator< B > >::beforeEnd ( ) const
inlineinherited
Returns
an iterator that is positioned before the end iterator of the vector. i.e. at the last element.

◆ capacity()

template<class B , class A = std::allocator<B>>
size_type Dune::BlockVector< B, A >::capacity ( ) const
inline

Get the capacity of the vector.

I. e. the maximum number of elements the vector can hold.

Returns
The capacity of the vector.

Referenced by Dune::BlockVector< B, A >::BlockVector(), and Dune::BlockVector< B, A >::reserve().

◆ dot()

PromotionTraits<field_type,typename OtherB::field_type>::PromotedType Dune::block_vector_unmanaged< B, std::allocator< B > >::dot ( const block_vector_unmanaged< OtherB, OtherA > &  y) const
inlineinherited

vector dot product \(\left (x^H \cdot y \right)\) which corresponds to Petsc's VecDot

http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecDot.html

Parameters
yother (compatible) vector
Returns

◆ operator*()

PromotionTraits<field_type,typename OtherB::field_type>::PromotedType Dune::block_vector_unmanaged< B, std::allocator< B > >::operator* ( const block_vector_unmanaged< OtherB, OtherA > &  y) const
inlineinherited

indefinite vector dot product \(\left (x^T \cdot y \right)\) which corresponds to Petsc's VecTDot

http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecTDot.html

Parameters
yother (compatible) vector
Returns

◆ reserve()

template<class B , class A = std::allocator<B>>
void Dune::BlockVector< B, A >::reserve ( size_type  capacity,
bool  copyOldValues = true 
)
inline

Reserve space.

After calling this method the vector can hold up to capacity values. If the specified capacity is smaller than the current capacity and bigger than the current size space will be freed.

If the template parameter copyOldValues is true the values will be copied. If it is false the old values are lost.

Parameters
capacityThe maximum number of elements the vector needs to hold.
copyOldValuesIf false no object will be copied and the data might be lost. Default value is true.

References Dune::BlockVector< B, A >::capacity().

Referenced by Dune::BlockVector< B, A >::resize().

◆ resize()

template<class B , class A = std::allocator<B>>
void Dune::BlockVector< B, A >::resize ( size_type  size,
bool  copyOldValues = true 
)
inline

Resize the vector.

After calling this method BlockVector::N() will return size If the capacity of the vector is smaller than the specified size then reserve(size) will be called.

If the template parameter copyOldValues is true the values will be copied if the capacity changes. If it is false the old values are lost.

Parameters
sizeThe new size of the vector.
copyOldValuesIf false no object will be copied and the data might be lost.

References Dune::BlockVector< B, A >::reserve(), and Dune::base_array_unmanaged< B, std::allocator< B > >::size().

Referenced by Dune::BlockVector< B, A >::operator=().


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.80.0 (Apr 26, 22:29, 2024)