DUNE PDELab (git)

vector space out of a tensor product of fields. More...

#include <dune/common/fvector.hh>

Public Types

typedef value_type & reference
 The type used for references to the vector entry.
 
typedef const value_type & const_reference
 The type used for const references to the vector entry.
 
typedef Traits::derived_type derived_type
 type of derived vector class
 
typedef FieldTraits< value_type >::field_type field_type
 export the type representing the field
 
typedef Traits::value_type block_type
 export the type representing the components
 
typedef DenseIterator< DenseVector, value_type > Iterator
 Iterator class for sequential access.
 
typedef Iterator iterator
 typedef for stl compliant access
 
typedef DenseIterator< const DenseVector, const value_type > ConstIterator
 ConstIterator class for sequential access.
 
typedef ConstIterator const_iterator
 typedef for stl compliant access
 

Public Member Functions

constexpr FieldVector () noexcept
 Default constructor, making value-initialized vector with all components set to zero.
 
constexpr FieldVector (const K &k) noexcept(std::is_nothrow_copy_assignable_v< K >)
 Constructor making vector with identical coordinates.
 
constexpr FieldVector (const std::initializer_list< K > &l)
 Construct from a std::initializer_list.
 
template<class T , std::enable_if_t< IsFieldVectorSizeCorrect< T, dimension >::value, int > = 0, decltype(std::declval< K & >()=std::declval< const T & >()[0], bool{}) = true>
 FieldVector (const DenseVector< T > &x)
 Constructor from another dense vector if the elements are assignable to K.
 
template<class T , std::enable_if_t< std::is_assignable_v< K &, const T & >, int > = 0>
constexpr FieldVector (const FieldVector< T, SIZE > &x) noexcept(std::is_nothrow_assignable_v< K &, const T & >)
 Converting constructor from FieldVector with different element type.
 
template<class K1 , int SIZE1, std::enable_if_t<(SIZE1 !=SIZE), int > = 0>
 FieldVector (const FieldVector< K1, SIZE1 > &)=delete
 Converting constructor with FieldVector of different size (deleted)
 
 FieldVector (const FieldVector &)=default
 Copy constructor with default behavior.
 
template<class T , std::enable_if_t< IsFieldVectorSizeCorrect< T, dimension >::value, int > = 0, decltype(std::declval< K & >()=std::declval< const T & >()[0], bool{}) = true>
FieldVectoroperator= (const DenseVector< T > &x)
 Assignment from another dense vector.
 
template<class T , std::enable_if_t< std::is_assignable_v< K &, const T & >, int > = 0>
FieldVectoroperator= (const FieldVector< T, SIZE > &x) noexcept(std::is_nothrow_assignable_v< K &, const T & >)
 Converting assignment operator from FieldVector with different element type.
 
template<class K1 , int SIZE1, std::enable_if_t<(SIZE1 !=SIZE), int > = 0>
FieldVectoroperator= (const FieldVector< K1, SIZE1 > &)=delete
 Converting assignment operator with FieldVector of different size (deleted)
 
constexpr FieldVectoroperator= (const FieldVector &)=default
 Copy assignment operator with default behavior.
 
reference operator[] (size_type i)
 Return a reference to the ith element.
 
const_reference operator[] (size_type i) const
 Return a (const) reference to the ith element.
 
constexpr K * data () noexcept
 Return pointer to underlying array.
 
constexpr const K * data () const noexcept
 Return pointer to underlying array.
 
value_type & front ()
 return reference to first element
 
const value_type & front () const
 return reference to first element
 
value_type & back ()
 return reference to last element
 
const value_type & back () const
 return reference to last element
 
bool empty () const
 checks whether the container is empty
 
size_type size () const
 size method
 
Iterator begin ()
 begin iterator
 
ConstIterator begin () const
 begin ConstIterator
 
Iterator end ()
 end iterator
 
ConstIterator end () const
 end ConstIterator
 
Iterator beforeEnd ()
 
ConstIterator beforeEnd () const
 
Iterator beforeBegin ()
 
ConstIterator beforeBegin () const
 
Iterator find (size_type i)
 return iterator to given element or end()
 
ConstIterator find (size_type i) const
 return iterator to given element or end()
 
derived_typeoperator+= (const DenseVector< Other > &x)
 vector space addition
 
std::enable_if< std::is_convertible< ValueType, value_type >::value, derived_type >::type & operator+= (const ValueType &kk)
 vector space add scalar to all comps More...
 
derived_typeoperator-= (const DenseVector< Other > &x)
 vector space subtraction
 
std::enable_if< std::is_convertible< ValueType, value_type >::value, derived_type >::type & operator-= (const ValueType &kk)
 vector space subtract scalar from all comps More...
 
derived_type operator+ (const DenseVector< Other > &b) const
 Binary vector addition.
 
derived_type operator- (const DenseVector< Other > &b) const
 Binary vector subtraction.
 
derived_type operator- () const
 Vector negation.
 
std::enable_if< std::is_convertible< FieldType, field_type >::value, derived_type >::type & operator*= (const FieldType &kk)
 vector space multiplication with scalar More...
 
std::enable_if< std::is_convertible< FieldType, field_type >::value, derived_type >::type & operator/= (const FieldType &kk)
 vector space division by scalar More...
 
bool operator== (const DenseVector< Other > &x) const
 Binary vector comparison.
 
bool operator!= (const DenseVector< Other > &x) const
 Binary vector incomparison.
 
derived_typeaxpy (const field_type &a, const DenseVector< Other > &x)
 vector space axpy operation ( *this += a x )
 
PromotionTraits< field_type, typenameDenseVector< Other >::field_type >::PromotedType operator* (const DenseVector< Other > &x) const
 indefinite vector dot product \(\left (x^T \cdot y \right)\) which corresponds to Petsc's VecTDot More...
 
PromotionTraits< field_type, typenameDenseVector< Other >::field_type >::PromotedType dot (const DenseVector< Other > &x) const
 vector dot product \(\left (x^H \cdot y \right)\) which corresponds to Petsc's VecDot More...
 
FieldTraits< value_type >::real_type one_norm () const
 one norm (sum over absolute values of entries)
 
FieldTraits< value_type >::real_type one_norm_real () const
 simplified one norm (uses Manhattan norm for complex values)
 
FieldTraits< value_type >::real_type two_norm () const
 two norm sqrt(sum over squared values of entries)
 
FieldTraits< value_type >::real_type two_norm2 () const
 square of two norm (sum over squared values of entries), need for block recursion
 
FieldTraits< vt >::real_type infinity_norm () const
 infinity norm (maximum of absolute values of entries)
 
FieldTraits< vt >::real_type infinity_norm () const
 infinity norm (maximum of absolute values of entries)
 
FieldTraits< vt >::real_type infinity_norm_real () const
 simplified infinity norm (uses Manhattan norm for complex values)
 
FieldTraits< vt >::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
 

Static Public Member Functions

static constexpr size_type size () noexcept
 Obtain the number of elements stored in the vector.
 

Static Public Attributes

static constexpr int dimension = SIZE
 The size of this vector.
 
static constexpr int blocklevel
 The number of block levels we contain. This is the leaf, that is, 1.
 

Friends

template<class Scalar , std::enable_if_t< IsNumber< Scalar >::value, int > = 0>
constexpr auto operator* (const FieldVector &vector, Scalar scalar)
 Vector space multiplication with scalar.
 
template<class Scalar , std::enable_if_t< IsNumber< Scalar >::value, int > = 0>
constexpr auto operator* (Scalar scalar, const FieldVector &vector)
 Vector space multiplication with scalar.
 
template<class Scalar , std::enable_if_t< IsNumber< Scalar >::value, int > = 0>
constexpr auto operator/ (const FieldVector &vector, Scalar scalar)
 Vector space division by scalar.
 

Related Functions

(Note that these are not member functions.)

template<class K , int SIZE>
std::istream & operator>> (std::istream &in, FieldVector< K, SIZE > &v)
 Read a FieldVector from an input stream. More...
 
std::ostream & operator<< (std::ostream &s, const DenseVector< FieldVector< K, SIZE > > &v)
 Write a DenseVector to an output stream. More...
 

Detailed Description

template<class K, int SIZE>
class Dune::FieldVector< K, SIZE >

vector space out of a tensor product of fields.

Template Parameters
Kthe field type (use float, double, complex, etc)
SIZEnumber of components.
Examples
recipe-blocking.cc, recipe-communication.cc, recipe-geometry-grid.cc, recipe-grid-function-operations.cc, recipe-integrating-grid-functions.cc, recipe-integration.cc, recipe-iterate-over-grid.cc, recipe-linear-system-assembly.cc, recipe-linear-system-solution-istl.cc, recipe-linear-system-solution-pdelab.cc, and recipe-operator-splitting.cc.

Member Function Documentation

◆ beforeBegin() [1/2]

Iterator Dune::DenseVector< FieldVector< K, SIZE > >::beforeBegin ( )
inlineinherited
Returns
an iterator that is positioned before the first entry of the vector.

◆ beforeBegin() [2/2]

ConstIterator Dune::DenseVector< FieldVector< K, SIZE > >::beforeBegin ( ) const
inlineinherited
Returns
an iterator that is positioned before the first entry of the vector.

◆ beforeEnd() [1/2]

Iterator Dune::DenseVector< FieldVector< K, SIZE > >::beforeEnd ( )
inlineinherited
Returns
an iterator that is positioned before the end iterator of the vector, i.e. at the last entry.

◆ beforeEnd() [2/2]

ConstIterator Dune::DenseVector< FieldVector< K, SIZE > >::beforeEnd ( ) const
inlineinherited
Returns
an iterator that is positioned before the end iterator of the vector. i.e. at the last element

◆ dot()

PromotionTraits< field_type, typenameDenseVector< Other >::field_type >::PromotedType Dune::DenseVector< FieldVector< K, SIZE > >::dot ( const DenseVector< Other > &  x) 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
xother vector
Returns

◆ operator*()

PromotionTraits< field_type, typenameDenseVector< Other >::field_type >::PromotedType Dune::DenseVector< FieldVector< K, SIZE > >::operator* ( const DenseVector< Other > &  x) 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
xother vector
Returns

◆ operator*=()

std::enable_if< std::is_convertible< FieldType, field_type >::value, derived_type >::type & Dune::DenseVector< FieldVector< K, SIZE > >::operator*= ( const FieldType &  kk)
inlineinherited

vector space multiplication with scalar

we use enable_if to avoid an ambiguity, if the function parameter can be converted to field_type implicitly. (see FS#1457)

The function is only enabled, if the parameter is directly convertible to field_type.

◆ operator+=()

std::enable_if< std::is_convertible< ValueType, value_type >::value, derived_type >::type & Dune::DenseVector< FieldVector< K, SIZE > >::operator+= ( const ValueType &  kk)
inlineinherited

vector space add scalar to all comps

we use enable_if to avoid an ambiguity, if the function parameter can be converted to value_type implicitly. (see FS#1457)

The function is only enabled, if the parameter is directly convertible to value_type.

◆ operator-=()

std::enable_if< std::is_convertible< ValueType, value_type >::value, derived_type >::type & Dune::DenseVector< FieldVector< K, SIZE > >::operator-= ( const ValueType &  kk)
inlineinherited

vector space subtract scalar from all comps

we use enable_if to avoid an ambiguity, if the function parameter can be converted to value_type implicitly. (see FS#1457)

The function is only enabled, if the parameter is directly convertible to value_type.

◆ operator/=()

std::enable_if< std::is_convertible< FieldType, field_type >::value, derived_type >::type & Dune::DenseVector< FieldVector< K, SIZE > >::operator/= ( const FieldType &  kk)
inlineinherited

vector space division by scalar

we use enable_if to avoid an ambiguity, if the function parameter can be converted to field_type implicitly. (see FS#1457)

The function is only enabled, if the parameter is directly convertible to field_type.

Friends And Related Function Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream &  s,
const DenseVector< FieldVector< K, SIZE > > &  v 
)
related

Write a DenseVector to an output stream.

Parameters
[in]sstd :: ostream to write to
[in]vDenseVector to write
Returns
the output stream (s)

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