dune-common 3.0-git
Public Types | Public Member Functions | List of all members
Dune::FieldMatrix< K, ROWS, COLS > Class Template Reference

A dense n x m matrix. More...

#include <dune/common/fmatrix.hh>

Inheritance diagram for Dune::FieldMatrix< K, ROWS, COLS >:
Inheritance graph

Public Types

enum  { rows = ROWS , cols = COLS }
 export size More...
 
typedef Base::size_type size_type
 
typedef Base::row_type row_type
 
typedef Base::row_reference row_reference
 
typedef Base::const_row_reference const_row_reference
 
enum  
 We are at the leaf of the block recursion. More...
 
typedef Traits::derived_type derived_type
 type of derived matrix class
 
typedef Traits::value_type value_type
 export the type representing the field
 
typedef Traits::value_type field_type
 export the type representing the field
 
typedef Traits::value_type block_type
 export the type representing the components
 
typedef DenseIterator< DenseMatrix, row_type, row_referenceIterator
 Iterator class for sequential access.
 
typedef Iterator iterator
 typedef for stl compliant access
 
typedef Iterator RowIterator
 rename the iterators for easier access
 
typedef std::remove_reference< row_reference >::type::Iterator ColIterator
 rename the iterators for easier access
 
typedef DenseIterator< const DenseMatrix, const row_type, const_row_referenceConstIterator
 Iterator class for sequential access.
 
typedef ConstIterator const_iterator
 typedef for stl compliant access
 
typedef ConstIterator ConstRowIterator
 rename the iterators for easier access
 
typedef std::remove_reference< const_row_reference >::type::ConstIterator ConstColIterator
 rename the iterators for easier access
 

Public Member Functions

 FieldMatrix ()
 Default constructor.
 
template<class Other >
 FieldMatrix (const Other &other)
 Constructor initializing the whole matrix with a scalar.
 
 FieldMatrix (std::initializer_list< std::initializer_list< K > > const &ll)
 Constructor initializing the matrix from a list of lists of scalars.
 
 FieldMatrix (std::initializer_list< Dune::FieldVector< K, cols > > const &l)
 Constructor initializing the matrix from a list of vector.
 
template<int l>
FieldMatrix< K, l, colsleftmultiplyany (const FieldMatrix< K, l, rows > &M) const
 Multiplies M from the left to this matrix, this matrix is not modified.
 
template<int r, int c>
FieldMatrixrightmultiply (const FieldMatrix< K, r, c > &M)
 Multiplies M from the right to this matrix.
 
template<int l>
FieldMatrix< K, rows, l > rightmultiplyany (const FieldMatrix< K, cols, l > &M) const
 Multiplies M from the right to this matrix, this matrix is not modified.
 
constexpr size_type mat_rows () const
 
constexpr size_type mat_cols () const
 
row_reference mat_access (size_type i)
 
const_row_reference mat_access (size_type i) const
 
row_reference operator[] (size_type i)
 random access
 
const_row_reference operator[] (size_type i) const
 
size_type size () const
 size method (number of rows)
 
Iterator begin ()
 begin iterator
 
ConstIterator begin () const
 begin iterator
 
Iterator end ()
 end iterator
 
ConstIterator end () const
 end iterator
 
Iterator beforeEnd ()
 
ConstIterator beforeEnd () const
 
Iterator beforeBegin ()
 
ConstIterator beforeBegin () const
 
DenseMatrixoperator+= (const DenseMatrix< Other > &y)
 vector space addition
 
DenseMatrixoperator-= (const DenseMatrix< Other > &y)
 vector space subtraction
 
DenseMatrixoperator*= (const field_type &k)
 vector space multiplication with scalar
 
DenseMatrixoperator/= (const field_type &k)
 vector space division by scalar
 
DenseMatrixaxpy (const field_type &k, const DenseMatrix< Other > &y)
 vector space axpy operation (*this += k y)
 
bool operator== (const DenseMatrix< Other > &y) const
 Binary matrix comparison.
 
bool operator!= (const DenseMatrix< Other > &y) const
 Binary matrix incomparison.
 
void mv (const X &x, Y &y) const
 y = A x
 
void mtv (const X &x, Y &y) const
 y = A^T x
 
void umv (const X &x, Y &y) const
 y += A x
 
void umtv (const X &x, Y &y) const
 y += A^T x
 
void umhv (const X &x, Y &y) const
 y += A^H x
 
void mmv (const X &x, Y &y) const
 y -= A x
 
void mmtv (const X &x, Y &y) const
 y -= A^T x
 
void mmhv (const X &x, Y &y) const
 y -= A^H x
 
void usmv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const
 y += alpha A x
 
void usmtv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const
 y += alpha A^T x
 
void usmhv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const
 y += alpha A^H x
 
FieldTraits< value_type >::real_type frobenius_norm () const
 frobenius norm: sqrt(sum over squared values of entries)
 
FieldTraits< value_type >::real_type frobenius_norm2 () const
 square of frobenius norm, need for block recursion
 
FieldTraits< vt >::real_type infinity_norm () const
 infinity norm (row sum norm, how to generalize for blocks?)
 
FieldTraits< vt >::real_type infinity_norm () const
 infinity norm (row sum norm, how to generalize for blocks?)
 
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)
 
void solve (V &x, const V &b) const
 Solve system A x = b.
 
void invert ()
 Compute inverse.
 
field_type determinant () const
 calculates the determinant of this matrix
 
FieldMatrix< K, ROWS, COLS > & leftmultiply (const DenseMatrix< M2 > &M)
 Multiplies M from the left to this matrix.
 
FieldMatrix< K, ROWS, COLS > & rightmultiply (const DenseMatrix< M2 > &M)
 Multiplies M from the right to this matrix.
 
size_type N () const
 number of rows
 
size_type M () const
 number of columns
 
size_type rows () const
 number of rows
 
size_type cols () const
 number of columns
 
bool exists (size_type i, size_type j) const
 return true when (i,j) is in pattern
 

Detailed Description

template<class K, int ROWS, int COLS>
class Dune::FieldMatrix< K, ROWS, COLS >

A dense n x m matrix.

Matrices represent linear maps from a vector space V to a vector space W. This class represents such a linear map by storing a two-dimensional array of numbers of a given field type K. The number of rows and columns is given at compile time.

Member Typedef Documentation

◆ block_type

typedef Traits::value_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::block_type
inherited

export the type representing the components

◆ ColIterator

typedef std::remove_reference<row_reference>::type::Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::ColIterator
inherited

rename the iterators for easier access

◆ const_iterator

typedef ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::const_iterator
inherited

typedef for stl compliant access

◆ const_row_reference

template<class K , int ROWS, int COLS>
typedef Base::const_row_reference Dune::FieldMatrix< K, ROWS, COLS >::const_row_reference

◆ ConstColIterator

typedef std::remove_reference<const_row_reference>::type::ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::ConstColIterator
inherited

rename the iterators for easier access

◆ ConstIterator

typedef DenseIterator<const DenseMatrix,const row_type,const_row_reference> Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::ConstIterator
inherited

Iterator class for sequential access.

◆ ConstRowIterator

typedef ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::ConstRowIterator
inherited

rename the iterators for easier access

◆ derived_type

typedef Traits::derived_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::derived_type
inherited

type of derived matrix class

◆ field_type

typedef Traits::value_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::field_type
inherited

export the type representing the field

◆ Iterator

typedef DenseIterator<DenseMatrix,row_type,row_reference> Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::Iterator
inherited

Iterator class for sequential access.

◆ iterator

typedef Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::iterator
inherited

typedef for stl compliant access

◆ row_reference

template<class K , int ROWS, int COLS>
typedef Base::row_reference Dune::FieldMatrix< K, ROWS, COLS >::row_reference

◆ row_type

template<class K , int ROWS, int COLS>
typedef Base::row_type Dune::FieldMatrix< K, ROWS, COLS >::row_type

◆ RowIterator

typedef Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::RowIterator
inherited

rename the iterators for easier access

◆ size_type

template<class K , int ROWS, int COLS>
typedef Base::size_type Dune::FieldMatrix< K, ROWS, COLS >::size_type

◆ value_type

typedef Traits::value_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::value_type
inherited

export the type representing the field

Member Enumeration Documentation

◆ anonymous enum

template<class K , int ROWS, int COLS>
anonymous enum

export size

Enumerator
rows 

The number of rows.

cols 

The number of columns.

◆ anonymous enum

anonymous enum
inherited

We are at the leaf of the block recursion.

Constructor & Destructor Documentation

◆ FieldMatrix() [1/4]

template<class K , int ROWS, int COLS>
Dune::FieldMatrix< K, ROWS, COLS >::FieldMatrix ( )
inline

Default constructor.

◆ FieldMatrix() [2/4]

template<class K , int ROWS, int COLS>
template<class Other >
Dune::FieldMatrix< K, ROWS, COLS >::FieldMatrix ( const Other &  other)
inline

Constructor initializing the whole matrix with a scalar.

◆ FieldMatrix() [3/4]

template<class K , int ROWS, int COLS>
Dune::FieldMatrix< K, ROWS, COLS >::FieldMatrix ( std::initializer_list< std::initializer_list< K > > const &  ll)
inline

Constructor initializing the matrix from a list of lists of scalars.

◆ FieldMatrix() [4/4]

template<class K , int ROWS, int COLS>
Dune::FieldMatrix< K, ROWS, COLS >::FieldMatrix ( std::initializer_list< Dune::FieldVector< K, cols > > const &  l)
inline

Constructor initializing the matrix from a list of vector.

Member Function Documentation

◆ axpy()

DenseMatrix & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::axpy ( const field_type k,
const DenseMatrix< Other > &  y 
)
inlineinherited

vector space axpy operation (*this += k y)

◆ beforeBegin() [1/2]

Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeBegin ( )
inlineinherited
Returns
an iterator that is positioned before the first entry of the vector.

◆ beforeBegin() [2/2]

ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeBegin ( ) const
inlineinherited
Returns
an iterator that is positioned before the first entry of the vector.

◆ beforeEnd() [1/2]

Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::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::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeEnd ( ) const
inlineinherited
Returns
an iterator that is positioned before the end iterator of the vector. i.e. at the last element

◆ begin() [1/2]

Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::begin ( )
inlineinherited

begin iterator

◆ begin() [2/2]

ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::begin ( ) const
inlineinherited

begin iterator

◆ cols()

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::cols ( ) const
inlineinherited

number of columns

◆ determinant()

field_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::determinant ( ) const
inherited

calculates the determinant of this matrix

◆ end() [1/2]

Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::end ( )
inlineinherited

end iterator

◆ end() [2/2]

ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::end ( ) const
inlineinherited

end iterator

◆ exists()

bool Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::exists ( size_type  i,
size_type  j 
) const
inlineinherited

return true when (i,j) is in pattern

◆ frobenius_norm()

FieldTraits< value_type >::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::frobenius_norm ( ) const
inlineinherited

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

◆ frobenius_norm2()

FieldTraits< value_type >::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::frobenius_norm2 ( ) const
inlineinherited

square of frobenius norm, need for block recursion

◆ infinity_norm() [1/2]

FieldTraits< vt >::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::infinity_norm ( ) const
inlineinherited

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

◆ infinity_norm() [2/2]

FieldTraits< vt >::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::infinity_norm ( ) const
inlineinherited

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

◆ infinity_norm_real() [1/2]

FieldTraits< vt >::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::infinity_norm_real ( ) const
inlineinherited

simplified infinity norm (uses Manhattan norm for complex values)

◆ infinity_norm_real() [2/2]

FieldTraits< vt >::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::infinity_norm_real ( ) const
inlineinherited

simplified infinity norm (uses Manhattan norm for complex values)

◆ invert()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::invert ( )
inherited

Compute inverse.

Exceptions
FMatrixErrorif the matrix is singular

◆ leftmultiply()

FieldMatrix< K, ROWS, COLS > & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::leftmultiply ( const DenseMatrix< M2 > &  M)
inlineinherited

Multiplies M from the left to this matrix.

◆ leftmultiplyany()

template<class K , int ROWS, int COLS>
template<int l>
FieldMatrix< K, l, cols > Dune::FieldMatrix< K, ROWS, COLS >::leftmultiplyany ( const FieldMatrix< K, l, rows > &  M) const
inline

Multiplies M from the left to this matrix, this matrix is not modified.

◆ M()

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::M ( ) const
inlineinherited

number of columns

◆ mat_access() [1/2]

template<class K , int ROWS, int COLS>
row_reference Dune::FieldMatrix< K, ROWS, COLS >::mat_access ( size_type  i)
inline

◆ mat_access() [2/2]

template<class K , int ROWS, int COLS>
const_row_reference Dune::FieldMatrix< K, ROWS, COLS >::mat_access ( size_type  i) const
inline

◆ mat_cols()

template<class K , int ROWS, int COLS>
constexpr size_type Dune::FieldMatrix< K, ROWS, COLS >::mat_cols ( ) const
inlineconstexpr

◆ mat_rows()

template<class K , int ROWS, int COLS>
constexpr size_type Dune::FieldMatrix< K, ROWS, COLS >::mat_rows ( ) const
inlineconstexpr

◆ mmhv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::mmhv ( const X &  x,
Y &  y 
) const
inlineinherited

y -= A^H x

◆ mmtv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::mmtv ( const X &  x,
Y &  y 
) const
inlineinherited

y -= A^T x

◆ mmv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::mmv ( const X &  x,
Y &  y 
) const
inlineinherited

y -= A x

◆ mtv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::mtv ( const X &  x,
Y &  y 
) const
inlineinherited

y = A^T x

◆ mv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::mv ( const X &  x,
Y &  y 
) const
inlineinherited

y = A x

◆ N()

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::N ( ) const
inlineinherited

number of rows

◆ operator!=()

bool Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator!= ( const DenseMatrix< Other > &  y) const
inlineinherited

Binary matrix incomparison.

◆ operator*=()

DenseMatrix & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator*= ( const field_type k)
inlineinherited

vector space multiplication with scalar

◆ operator+=()

DenseMatrix & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator+= ( const DenseMatrix< Other > &  y)
inlineinherited

vector space addition

◆ operator-=()

DenseMatrix & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator-= ( const DenseMatrix< Other > &  y)
inlineinherited

vector space subtraction

◆ operator/=()

DenseMatrix & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator/= ( const field_type k)
inlineinherited

vector space division by scalar

◆ operator==()

bool Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator== ( const DenseMatrix< Other > &  y) const
inlineinherited

Binary matrix comparison.

◆ operator[]() [1/2]

row_reference Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator[] ( size_type  i)
inlineinherited

random access

◆ operator[]() [2/2]

const_row_reference Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator[] ( size_type  i) const
inlineinherited

◆ rightmultiply() [1/2]

FieldMatrix< K, ROWS, COLS > & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::rightmultiply ( const DenseMatrix< M2 > &  M)
inlineinherited

Multiplies M from the right to this matrix.

◆ rightmultiply() [2/2]

template<class K , int ROWS, int COLS>
template<int r, int c>
FieldMatrix & Dune::FieldMatrix< K, ROWS, COLS >::rightmultiply ( const FieldMatrix< K, r, c > &  M)
inline

Multiplies M from the right to this matrix.

◆ rightmultiplyany()

template<class K , int ROWS, int COLS>
template<int l>
FieldMatrix< K, rows, l > Dune::FieldMatrix< K, ROWS, COLS >::rightmultiplyany ( const FieldMatrix< K, cols, l > &  M) const
inline

Multiplies M from the right to this matrix, this matrix is not modified.

◆ rows()

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::rows ( ) const
inlineinherited

number of rows

◆ size()

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::size ( ) const
inlineinherited

size method (number of rows)

◆ solve()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::solve ( V &  x,
const V &  b 
) const
inherited

Solve system A x = b.

Exceptions
FMatrixErrorif the matrix is singular

◆ umhv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::umhv ( const X &  x,
Y &  y 
) const
inlineinherited

y += A^H x

◆ umtv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::umtv ( const X &  x,
Y &  y 
) const
inlineinherited

y += A^T x

◆ umv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::umv ( const X &  x,
Y &  y 
) const
inlineinherited

y += A x

◆ usmhv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::usmhv ( const typename FieldTraits< Y >::field_type &  alpha,
const X &  x,
Y &  y 
) const
inlineinherited

y += alpha A^H x

◆ usmtv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::usmtv ( const typename FieldTraits< Y >::field_type &  alpha,
const X &  x,
Y &  y 
) const
inlineinherited

y += alpha A^T x

◆ usmv()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::usmv ( const typename FieldTraits< Y >::field_type &  alpha,
const X &  x,
Y &  y 
) const
inlineinherited

y += alpha A x


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