dune-istl 2.8.0
Public Types | Public Member Functions | Static Public Attributes | List of all members
Dune::ScaledIdentityMatrix< K, n > Class Template Reference

A multiple of the identity matrix of static size. More...

#include <dune/istl/scaledidmatrix.hh>

Public Types

enum  { rows = n , cols = n }
 export size More...
 
typedef K field_type
 export the type representing the field More...
 
typedef K block_type
 export the type representing the components More...
 
typedef std::size_t size_type
 The type used for the index access and size operations. More...
 
typedef DiagonalRowVector< K, n > row_type
 Each row is implemented by a field vector. More...
 
typedef row_type reference
 
typedef DiagonalRowVectorConst< K, n > const_row_type
 
typedef const_row_type const_reference
 
typedef ContainerWrapperIterator< const WrapperType, reference, referenceIterator
 Iterator class for sequential access. More...
 
typedef Iterator iterator
 typedef for stl compliant access More...
 
typedef Iterator RowIterator
 rename the iterators for easier access More...
 
typedef row_type::Iterator ColIterator
 rename the iterators for easier access More...
 
typedef ContainerWrapperIterator< const WrapperType, const_reference, const_referenceConstIterator
 Iterator class for sequential access. More...
 
typedef ConstIterator const_iterator
 typedef for stl compliant access More...
 
typedef ConstIterator ConstRowIterator
 rename the iterators for easier access More...
 
typedef const_row_type::ConstIterator ConstColIterator
 rename the iterators for easier access More...
 

Public Member Functions

 ScaledIdentityMatrix ()
 Default constructor. More...
 
 ScaledIdentityMatrix (const K &k)
 Constructor initializing the whole matrix with a scalar. More...
 
ScaledIdentityMatrixoperator= (const K &k)
 
bool identical (const ScaledIdentityMatrix< K, n > &other) const
 
Iterator begin ()
 begin iterator More...
 
Iterator end ()
 end iterator More...
 
Iterator beforeEnd ()
 
Iterator beforeBegin ()
 
ConstIterator begin () const
 begin iterator More...
 
ConstIterator end () const
 end iterator More...
 
ConstIterator beforeEnd () const
 
ConstIterator beforeBegin () const
 
ScaledIdentityMatrixoperator+= (const ScaledIdentityMatrix &y)
 vector space addition More...
 
ScaledIdentityMatrixoperator-= (const ScaledIdentityMatrix &y)
 vector space subtraction More...
 
ScaledIdentityMatrixoperator+= (const K &k)
 addition to the diagonal More...
 
ScaledIdentityMatrixoperator-= (const K &k)
 subtraction from the diagonal More...
 
ScaledIdentityMatrixoperator*= (const K &k)
 vector space multiplication with scalar More...
 
ScaledIdentityMatrixoperator/= (const K &k)
 vector space division by scalar More...
 
bool operator== (const ScaledIdentityMatrix &other) const
 comparison operator More...
 
bool operator!= (const ScaledIdentityMatrix &other) const
 incomparison operator More...
 
template<class X , class Y >
void mv (const X &x, Y &y) const
 y = A x More...
 
template<class X , class Y >
void mtv (const X &x, Y &y) const
 y = A^T x More...
 
template<class X , class Y >
void umv (const X &x, Y &y) const
 y += A x More...
 
template<class X , class Y >
void umtv (const X &x, Y &y) const
 y += A^T x More...
 
template<class X , class Y >
void umhv (const X &x, Y &y) const
 y += A^H x More...
 
template<class X , class Y >
void mmv (const X &x, Y &y) const
 y -= A x More...
 
template<class X , class Y >
void mmtv (const X &x, Y &y) const
 y -= A^T x More...
 
template<class X , class Y >
void mmhv (const X &x, Y &y) const
 y -= A^H x More...
 
template<class X , class Y >
void usmv (const K &alpha, const X &x, Y &y) const
 y += alpha A x More...
 
template<class X , class Y >
void usmtv (const K &alpha, const X &x, Y &y) const
 y += alpha A^T x More...
 
template<class X , class Y >
void usmhv (const K &alpha, const X &x, Y &y) const
 y += alpha A^H x More...
 
FieldTraits< field_type >::real_type frobenius_norm () const
 frobenius norm: sqrt(sum over squared values of entries) More...
 
FieldTraits< field_type >::real_type frobenius_norm2 () const
 square of frobenius norm, need for block recursion More...
 
FieldTraits< field_type >::real_type infinity_norm () const
 infinity norm (row sum norm, how to generalize for blocks?) More...
 
FieldTraits< field_type >::real_type infinity_norm_real () const
 simplified infinity norm (uses Manhattan norm for complex values) More...
 
template<class V >
void solve (V &x, const V &b) const
 Solve system A x = b. More...
 
void invert ()
 Compute inverse. More...
 
determinant () const
 calculates the determinant of this matrix More...
 
size_type N () const
 number of blocks in row direction More...
 
size_type M () const
 number of blocks in column direction More...
 
bool exists (size_type i, size_type j) const
 return true when (i,j) is in pattern More...
 
reference operator[] (size_type i)
 Return reference object as row replacement. More...
 
const_reference operator[] (size_type i) const
 Return const_reference object as row replacement. More...
 
const K & diagonal (size_type) const
 Get const reference to diagonal entry. More...
 
K & diagonal (size_type)
 Get reference to diagonal entry. More...
 
const K & scalar () const
 Get const reference to the scalar diagonal value. More...
 
K & scalar ()
 Get reference to the scalar diagonal value. More...
 

Static Public Attributes

static constexpr std::size_t blocklevel = 1
 We are at the leaf of the block recursion. More...
 

Detailed Description

template<class K, int n>
class Dune::ScaledIdentityMatrix< K, n >

A multiple of the identity matrix of static size.

Member Typedef Documentation

◆ block_type

template<class K , int n>
typedef K Dune::ScaledIdentityMatrix< K, n >::block_type

export the type representing the components

◆ ColIterator

template<class K , int n>
typedef row_type::Iterator Dune::ScaledIdentityMatrix< K, n >::ColIterator

rename the iterators for easier access

◆ const_iterator

template<class K , int n>
typedef ConstIterator Dune::ScaledIdentityMatrix< K, n >::const_iterator

typedef for stl compliant access

◆ const_reference

template<class K , int n>
typedef const_row_type Dune::ScaledIdentityMatrix< K, n >::const_reference

◆ const_row_type

template<class K , int n>
typedef DiagonalRowVectorConst<K,n> Dune::ScaledIdentityMatrix< K, n >::const_row_type

◆ ConstColIterator

template<class K , int n>
typedef const_row_type::ConstIterator Dune::ScaledIdentityMatrix< K, n >::ConstColIterator

rename the iterators for easier access

◆ ConstIterator

template<class K , int n>
typedef ContainerWrapperIterator<const WrapperType, const_reference, const_reference> Dune::ScaledIdentityMatrix< K, n >::ConstIterator

Iterator class for sequential access.

◆ ConstRowIterator

template<class K , int n>
typedef ConstIterator Dune::ScaledIdentityMatrix< K, n >::ConstRowIterator

rename the iterators for easier access

◆ field_type

template<class K , int n>
typedef K Dune::ScaledIdentityMatrix< K, n >::field_type

export the type representing the field

◆ Iterator

template<class K , int n>
typedef ContainerWrapperIterator<const WrapperType, reference, reference> Dune::ScaledIdentityMatrix< K, n >::Iterator

Iterator class for sequential access.

◆ iterator

template<class K , int n>
typedef Iterator Dune::ScaledIdentityMatrix< K, n >::iterator

typedef for stl compliant access

◆ reference

template<class K , int n>
typedef row_type Dune::ScaledIdentityMatrix< K, n >::reference

◆ row_type

template<class K , int n>
typedef DiagonalRowVector<K,n> Dune::ScaledIdentityMatrix< K, n >::row_type

Each row is implemented by a field vector.

◆ RowIterator

template<class K , int n>
typedef Iterator Dune::ScaledIdentityMatrix< K, n >::RowIterator

rename the iterators for easier access

◆ size_type

template<class K , int n>
typedef std::size_t Dune::ScaledIdentityMatrix< K, n >::size_type

The type used for the index access and size operations.

Member Enumeration Documentation

◆ anonymous enum

template<class K , int n>
anonymous enum

export size

Enumerator
rows 

The number of rows.

cols 

The number of columns.

Constructor & Destructor Documentation

◆ ScaledIdentityMatrix() [1/2]

template<class K , int n>
Dune::ScaledIdentityMatrix< K, n >::ScaledIdentityMatrix ( )
inline

Default constructor.

◆ ScaledIdentityMatrix() [2/2]

template<class K , int n>
Dune::ScaledIdentityMatrix< K, n >::ScaledIdentityMatrix ( const K &  k)
inline

Constructor initializing the whole matrix with a scalar.

Member Function Documentation

◆ beforeBegin() [1/2]

template<class K , int n>
Iterator Dune::ScaledIdentityMatrix< K, n >::beforeBegin ( )
inline
Returns
an iterator that is positioned before the first row of the matrix.

◆ beforeBegin() [2/2]

template<class K , int n>
ConstIterator Dune::ScaledIdentityMatrix< K, n >::beforeBegin ( ) const
inline
Returns
an iterator that is positioned before the first row of the matrix.

◆ beforeEnd() [1/2]

template<class K , int n>
Iterator Dune::ScaledIdentityMatrix< K, n >::beforeEnd ( )
inline
Returns
an iterator that is positioned before the end iterator of the rows, i.e. at the last row.

◆ beforeEnd() [2/2]

template<class K , int n>
ConstIterator Dune::ScaledIdentityMatrix< K, n >::beforeEnd ( ) const
inline
Returns
an iterator that is positioned before the end iterator of the rows. i.e. at the last row.

◆ begin() [1/2]

template<class K , int n>
Iterator Dune::ScaledIdentityMatrix< K, n >::begin ( )
inline

begin iterator

◆ begin() [2/2]

template<class K , int n>
ConstIterator Dune::ScaledIdentityMatrix< K, n >::begin ( ) const
inline

begin iterator

◆ determinant()

template<class K , int n>
K Dune::ScaledIdentityMatrix< K, n >::determinant ( ) const
inline

calculates the determinant of this matrix

◆ diagonal() [1/2]

template<class K , int n>
K & Dune::ScaledIdentityMatrix< K, n >::diagonal ( size_type  )
inline

Get reference to diagonal entry.

◆ diagonal() [2/2]

template<class K , int n>
const K & Dune::ScaledIdentityMatrix< K, n >::diagonal ( size_type  ) const
inline

Get const reference to diagonal entry.

◆ end() [1/2]

template<class K , int n>
Iterator Dune::ScaledIdentityMatrix< K, n >::end ( )
inline

end iterator

◆ end() [2/2]

template<class K , int n>
ConstIterator Dune::ScaledIdentityMatrix< K, n >::end ( ) const
inline

end iterator

◆ exists()

template<class K , int n>
bool Dune::ScaledIdentityMatrix< K, n >::exists ( size_type  i,
size_type  j 
) const
inline

return true when (i,j) is in pattern

◆ frobenius_norm()

template<class K , int n>
FieldTraits< field_type >::real_type Dune::ScaledIdentityMatrix< K, n >::frobenius_norm ( ) const
inline

frobenius norm: sqrt(sum over squared values of entries)

◆ frobenius_norm2()

template<class K , int n>
FieldTraits< field_type >::real_type Dune::ScaledIdentityMatrix< K, n >::frobenius_norm2 ( ) const
inline

square of frobenius norm, need for block recursion

◆ identical()

template<class K , int n>
bool Dune::ScaledIdentityMatrix< K, n >::identical ( const ScaledIdentityMatrix< K, n > &  other) const
inline

◆ infinity_norm()

template<class K , int n>
FieldTraits< field_type >::real_type Dune::ScaledIdentityMatrix< K, n >::infinity_norm ( ) const
inline

infinity norm (row sum norm, how to generalize for blocks?)

◆ infinity_norm_real()

template<class K , int n>
FieldTraits< field_type >::real_type Dune::ScaledIdentityMatrix< K, n >::infinity_norm_real ( ) const
inline

simplified infinity norm (uses Manhattan norm for complex values)

◆ invert()

template<class K , int n>
void Dune::ScaledIdentityMatrix< K, n >::invert ( )
inline

Compute inverse.

◆ M()

template<class K , int n>
size_type Dune::ScaledIdentityMatrix< K, n >::M ( ) const
inline

number of blocks in column direction

◆ mmhv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::mmhv ( const X &  x,
Y &  y 
) const
inline

y -= A^H x

◆ mmtv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::mmtv ( const X &  x,
Y &  y 
) const
inline

y -= A^T x

◆ mmv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::mmv ( const X &  x,
Y &  y 
) const
inline

y -= A x

◆ mtv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::mtv ( const X &  x,
Y &  y 
) const
inline

y = A^T x

◆ mv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::mv ( const X &  x,
Y &  y 
) const
inline

y = A x

◆ N()

template<class K , int n>
size_type Dune::ScaledIdentityMatrix< K, n >::N ( ) const
inline

number of blocks in row direction

◆ operator!=()

template<class K , int n>
bool Dune::ScaledIdentityMatrix< K, n >::operator!= ( const ScaledIdentityMatrix< K, n > &  other) const
inline

incomparison operator

◆ operator*=()

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator*= ( const K &  k)
inline

vector space multiplication with scalar

◆ operator+=() [1/2]

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator+= ( const K &  k)
inline

addition to the diagonal

◆ operator+=() [2/2]

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator+= ( const ScaledIdentityMatrix< K, n > &  y)
inline

vector space addition

◆ operator-=() [1/2]

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator-= ( const K &  k)
inline

subtraction from the diagonal

◆ operator-=() [2/2]

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator-= ( const ScaledIdentityMatrix< K, n > &  y)
inline

vector space subtraction

◆ operator/=()

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator/= ( const K &  k)
inline

vector space division by scalar

◆ operator=()

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator= ( const K &  k)
inline

◆ operator==()

template<class K , int n>
bool Dune::ScaledIdentityMatrix< K, n >::operator== ( const ScaledIdentityMatrix< K, n > &  other) const
inline

comparison operator

◆ operator[]() [1/2]

template<class K , int n>
reference Dune::ScaledIdentityMatrix< K, n >::operator[] ( size_type  i)
inline

Return reference object as row replacement.

◆ operator[]() [2/2]

template<class K , int n>
const_reference Dune::ScaledIdentityMatrix< K, n >::operator[] ( size_type  i) const
inline

Return const_reference object as row replacement.

◆ scalar() [1/2]

template<class K , int n>
K & Dune::ScaledIdentityMatrix< K, n >::scalar ( )
inline

Get reference to the scalar diagonal value.

◆ scalar() [2/2]

template<class K , int n>
const K & Dune::ScaledIdentityMatrix< K, n >::scalar ( ) const
inline

Get const reference to the scalar diagonal value.

◆ solve()

template<class K , int n>
template<class V >
void Dune::ScaledIdentityMatrix< K, n >::solve ( V &  x,
const V &  b 
) const
inline

Solve system A x = b.

◆ umhv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::umhv ( const X &  x,
Y &  y 
) const
inline

y += A^H x

◆ umtv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::umtv ( const X &  x,
Y &  y 
) const
inline

y += A^T x

◆ umv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::umv ( const X &  x,
Y &  y 
) const
inline

y += A x

◆ usmhv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::usmhv ( const K &  alpha,
const X &  x,
Y &  y 
) const
inline

y += alpha A^H x

◆ usmtv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::usmtv ( const K &  alpha,
const X &  x,
Y &  y 
) const
inline

y += alpha A^T x

◆ usmv()

template<class K , int n>
template<class X , class Y >
void Dune::ScaledIdentityMatrix< K, n >::usmv ( const K &  alpha,
const X &  x,
Y &  y 
) const
inline

y += alpha A x

Member Data Documentation

◆ blocklevel

template<class K , int n>
constexpr std::size_t Dune::ScaledIdentityMatrix< K, n >::blocklevel = 1
staticconstexpr

We are at the leaf of the block recursion.


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