Dune::DiagonalMatrix< K, n > Class Template Reference
[Dense Matrix and Vector Template Library]

A diagonal matrix of static size. More...

#include <dune/common/diagonalmatrix.hh>

List of all members.

Public Types

enum  { blocklevel = 1 }
 

We are at the leaf of the block recursion.

More...
enum  { rows = n, cols = n }
 

export size

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

Public Member Functions

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

Friends

std::ostream & operator<< (std::ostream &s, const DiagonalMatrix< K, n > &a)
 Sends the matrix to an output stream.

Detailed Description

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

A diagonal matrix of static size.

This is meant to be a replacement of FieldMatrix for the case that it is a diagonal matrix.

Template Parameters:
K Type used for scalars
n Matrix size

Member Typedef Documentation

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

export the type representing the components

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

rename the iterators for easier access

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

typedef for stl compliant access

template<class K, int n>
typedef const_row_type Dune::DiagonalMatrix< K, n >::const_reference
template<class K, int n>
typedef const_row_type Dune::DiagonalMatrix< K, n >::const_row_reference
template<class K, int n>
typedef DiagonalRowVectorConst<K,n> Dune::DiagonalMatrix< K, n >::const_row_type
template<class K, int n>
typedef const_row_type::ConstIterator Dune::DiagonalMatrix< K, n >::ConstColIterator

rename the iterators for easier access

Iterator class for sequential access.

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

rename the iterators for easier access

template<class K, int n>
typedef value_type Dune::DiagonalMatrix< K, n >::field_type
template<class K, int n>
typedef Iterator Dune::DiagonalMatrix< K, n >::iterator

typedef for stl compliant access

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

Iterator class for sequential access.

template<class K, int n>
typedef row_type Dune::DiagonalMatrix< K, n >::reference
template<class K, int n>
typedef row_type Dune::DiagonalMatrix< K, n >::row_reference
template<class K, int n>
typedef DiagonalRowVector<K,n> Dune::DiagonalMatrix< K, n >::row_type

Each row is implemented by a field vector.

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

rename the iterators for easier access

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

The type used for the index access and size operations.

template<class K, int n>
typedef K Dune::DiagonalMatrix< K, n >::value_type

export the type representing the field


Member Enumeration Documentation

template<class K, int n>
anonymous enum

We are at the leaf of the block recursion.

Enumerator:
blocklevel 

The number of block levels we contain. This is 1.

template<class K, int n>
anonymous enum

export size

Enumerator:
rows 

The number of rows.

cols 

The number of columns.


Constructor & Destructor Documentation

template<class K, int n>
Dune::DiagonalMatrix< K, n >::DiagonalMatrix (  )  [inline]

Default constructor.

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

Constructor initializing the whole matrix with a scalar.

template<class K, int n>
Dune::DiagonalMatrix< K, n >::DiagonalMatrix ( const FieldVector< K, n > &  diag  )  [inline]

Constructor initializing the diagonal with a vector.

template<class K, int n>
Dune::DiagonalMatrix< K, n >::DiagonalMatrix ( std::initializer_list< K > const &  l  )  [inline]

Construct diagonal matrix from an initializer list.

The elements of the list are copied into the diagonal elements of the matrix. If the initializer list is shorter than the matrix diagonal (which has n elements), the remaining matrix diagonal elements are left uninitialized. If the initializer list is longer, than only the first n elements will be copied into the matrix diagonal.


Member Function Documentation

template<class K, int n>
ConstIterator Dune::DiagonalMatrix< K, n >::beforeBegin (  )  const [inline]
Returns:
an iterator that is positioned before the first row of the matrix.
template<class K, int n>
Iterator Dune::DiagonalMatrix< K, n >::beforeBegin (  )  [inline]
Returns:
an iterator that is positioned before the first row of the matrix.
template<class K, int n>
ConstIterator Dune::DiagonalMatrix< K, n >::beforeEnd (  )  const [inline]
Returns:
an iterator that is positioned before the end iterator of the rows. i.e. at the last row.
template<class K, int n>
Iterator Dune::DiagonalMatrix< K, n >::beforeEnd (  )  [inline]
Returns:
an iterator that is positioned before the end iterator of the rows, i.e. at the last row.
template<class K, int n>
ConstIterator Dune::DiagonalMatrix< K, n >::begin (  )  const [inline]

begin iterator

template<class K, int n>
Iterator Dune::DiagonalMatrix< K, n >::begin (  )  [inline]

begin iterator

template<class K, int n>
K Dune::DiagonalMatrix< K, n >::determinant (  )  const [inline]

calculates the determinant of this matrix

template<class K, int n>
FieldVector<K,n>& Dune::DiagonalMatrix< K, n >::diagonal (  )  [inline]

Get reference to diagonal vector.

template<class K, int n>
const FieldVector<K,n>& Dune::DiagonalMatrix< K, n >::diagonal (  )  const [inline]

Get const reference to diagonal vector.

template<class K, int n>
K& Dune::DiagonalMatrix< K, n >::diagonal ( size_type  i  )  [inline]

Get reference to diagonal entry.

template<class K, int n>
const K& Dune::DiagonalMatrix< K, n >::diagonal ( size_type  i  )  const [inline]

Get const reference to diagonal entry.

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

end iterator

template<class K, int n>
Iterator Dune::DiagonalMatrix< K, n >::end (  )  [inline]

end iterator

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

return true when (i,j) is in pattern

template<class K, int n>
double Dune::DiagonalMatrix< K, n >::frobenius_norm (  )  const [inline]

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

template<class K, int n>
double Dune::DiagonalMatrix< K, n >::frobenius_norm2 (  )  const [inline]

square of frobenius norm, need for block recursion

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

Check if matrix is the same object as the other matrix.

template<class K, int n>
double Dune::DiagonalMatrix< K, n >::infinity_norm (  )  const [inline]

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

template<class K, int n>
double Dune::DiagonalMatrix< K, n >::infinity_norm_real (  )  const [inline]

simplified infinity norm (uses Manhattan norm for complex values)

template<class K, int n>
void Dune::DiagonalMatrix< K, n >::invert (  )  [inline]

Compute inverse.

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

number of blocks in column direction

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

y -= A^H x

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

y -= A^T x

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

y -= A x

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

y = A^T x

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

y = A x

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

number of blocks in row direction

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

incomparison operator

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

vector space multiplication with scalar

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

vector space multiplication with scalar

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

vector space addition

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

vector space division by scalar

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

vector space subtraction

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

vector space division by scalar

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

Assignment from a scalar.

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

comparison operator

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

Return const_reference object as row replacement.

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

Return reference object as row replacement.

template<class K, int n>
size_type Dune::DiagonalMatrix< K, n >::size (  )  const [inline]
template<class K, int n>
template<class V >
void Dune::DiagonalMatrix< K, n >::solve ( V &  x,
const V &  b 
) const [inline]

Solve system A x = b.

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

y += A^H x

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

y += A^T x

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

y += A x

template<class K, int n>
template<class X , class Y >
void Dune::DiagonalMatrix< K, n >::usmhv ( const typename FieldTraits< Y >::field_type alpha,
const X &  x,
Y &  y 
) const [inline]

y += alpha A^H x

template<class K, int n>
template<class X , class Y >
void Dune::DiagonalMatrix< K, n >::usmtv ( const typename FieldTraits< Y >::field_type alpha,
const X &  x,
Y &  y 
) const [inline]

y += alpha A^T x

template<class K, int n>
template<class X , class Y >
void Dune::DiagonalMatrix< K, n >::usmv ( const typename FieldTraits< Y >::field_type alpha,
const X &  x,
Y &  y 
) const [inline]

y += alpha A x


Friends And Related Function Documentation

template<class K, int n>
std::ostream& operator<< ( std::ostream &  s,
const DiagonalMatrix< K, n > &  a 
) [friend]

Sends the matrix to an output stream.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 25 Mar 2018 for dune-common by  doxygen 1.6.1