Dune::FieldMatrix< K, ROWS, COLS > Class Template Reference
[Dense Matrix and Vector Template Library]

A dense n x m matrix. More...

#include <dune/common/fmatrix.hh>

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

List of all members.

Public Types

enum  { rows = ROWS, cols = COLS }
 

export size

More...
typedef Base::size_type size_type
 The type used for the index access and size operation.
typedef Base::row_type row_type
 The type used to represent a row (must fulfill the Dune::DenseVector interface).
typedef Base::row_reference row_reference
 The type used to represent a reference to a row (usually row_type &).
typedef Base::const_row_reference const_row_reference
 The type used to represent a reference to a constant row (usually const row_type &).
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_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 std::remove_reference
< row_reference >
::type::Iterator 
ColIterator
 rename the iterators for easier access
typedef DenseIterator< const
DenseMatrix, const row_type,
const_row_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 std::remove_reference
< const_row_reference >
::type::ConstIterator 
ConstColIterator
 rename the iterators for easier access

Public Member Functions

 FieldMatrix ()
 Default constructor.
 FieldMatrix (std::initializer_list< Dune::FieldVector< K, cols > > const &l)
 Constructor initializing the matrix from a list of vector.
template<class T , typename = std::enable_if_t<HasDenseMatrixAssigner<FieldMatrix, T>::value>>
 FieldMatrix (T const &rhs)
template<typename T , int rows, int cols>
FieldMatrixoperator= (FieldMatrix< T, rows, cols > const &rhs)
template<int l>
FieldMatrix< K, l, cols > leftmultiplyany (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

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

export the type representing the components

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

rename the iterators for easier access

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

typedef for stl compliant access

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

The type used to represent a reference to a constant row (usually const row_type &).

Reimplemented from Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >.

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

rename the iterators for easier access

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

Iterator class for sequential access.

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

rename the iterators for easier access

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

type of derived matrix class

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

export the type representing the field

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

typedef for stl compliant access

Iterator class for sequential access.

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

The type used to represent a reference to a row (usually row_type &).

Reimplemented from Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >.

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

The type used to represent a row (must fulfill the Dune::DenseVector interface).

Reimplemented from Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >.

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

rename the iterators for easier access

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

The type used for the index access and size operation.

Reimplemented from Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >.

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

export the type representing the field


Member Enumeration Documentation

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

export size

Enumerator:
rows 

The number of rows.

cols 

The number of columns.

anonymous enum [inherited]

We are at the leaf of the block recursion.


Constructor & Destructor Documentation

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

Default constructor.

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.

template<class K, int ROWS, int COLS>
template<class T , typename = std::enable_if_t<HasDenseMatrixAssigner<FieldMatrix, T>::value>>
Dune::FieldMatrix< K, ROWS, COLS >::FieldMatrix ( T const &  rhs  )  [inline]

Member Function Documentation

DenseMatrix& Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::axpy ( const field_type &  k,
const DenseMatrix< Other > &  y 
) [inline, inherited]

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

ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeBegin (  )  const [inline, inherited]
Returns:
an iterator that is positioned before the first entry of the vector.
Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeBegin (  )  [inline, inherited]
Returns:
an iterator that is positioned before the first entry of the vector.
ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeEnd (  )  const [inline, inherited]
Returns:
an iterator that is positioned before the end iterator of the vector. i.e. at the last element
Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeEnd (  )  [inline, inherited]
Returns:
an iterator that is positioned before the end iterator of the vector, i.e. at the last entry.
ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::begin (  )  const [inline, inherited]

begin iterator

Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::begin (  )  [inline, inherited]

begin iterator

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::cols (  )  const [inline, inherited]

number of columns

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

calculates the determinant of this matrix

ConstIterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::end (  )  const [inline, inherited]

end iterator

Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::end (  )  [inline, inherited]

end iterator

bool Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::exists ( size_type  i,
size_type  j 
) const [inline, inherited]

return true when (i,j) is in pattern

FieldTraits<value_type>::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::frobenius_norm (  )  const [inline, inherited]

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

FieldTraits<value_type>::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::frobenius_norm2 (  )  const [inline, inherited]

square of frobenius norm, need for block recursion

FieldTraits<vt>::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::infinity_norm (  )  const [inline, inherited]

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

FieldTraits<vt>::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::infinity_norm (  )  const [inline, inherited]

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

FieldTraits<vt>::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::infinity_norm_real (  )  const [inline, inherited]

simplified infinity norm (uses Manhattan norm for complex values)

FieldTraits<vt>::real_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::infinity_norm_real (  )  const [inline, inherited]

simplified infinity norm (uses Manhattan norm for complex values)

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

Compute inverse.

Exceptions:
FMatrixError if the matrix is singular
FieldMatrix< K, ROWS, COLS > & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::leftmultiply ( const DenseMatrix< M2 > &  M  )  [inline, inherited]

Multiplies M from the left to this matrix.

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.

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::M (  )  const [inline, inherited]

number of columns

template<class K, int ROWS, int COLS>
const_row_reference Dune::FieldMatrix< K, ROWS, COLS >::mat_access ( size_type  i  )  const [inline]
template<class K, int ROWS, int COLS>
row_reference Dune::FieldMatrix< K, ROWS, COLS >::mat_access ( size_type  i  )  [inline]
template<class K, int ROWS, int COLS>
constexpr size_type Dune::FieldMatrix< K, ROWS, COLS >::mat_cols (  )  const [inline]
template<class K, int ROWS, int COLS>
constexpr size_type Dune::FieldMatrix< K, ROWS, COLS >::mat_rows (  )  const [inline]
void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::mmhv ( const X &  x,
Y &  y 
) const [inline, inherited]

y -= A^H x

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

y -= A^T x

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

y -= A x

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

y = A^T x

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

y = A x

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::N (  )  const [inline, inherited]

number of rows

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

Binary matrix incomparison.

DenseMatrix& Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator*= ( const field_type &  k  )  [inline, inherited]

vector space multiplication with scalar

DenseMatrix& Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator+= ( const DenseMatrix< Other > &  y  )  [inline, inherited]

vector space addition

DenseMatrix& Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator-= ( const DenseMatrix< Other > &  y  )  [inline, inherited]

vector space subtraction

DenseMatrix& Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator/= ( const field_type &  k  )  [inline, inherited]

vector space division by scalar

template<class K, int ROWS, int COLS>
template<typename T , int rows, int cols>
FieldMatrix& Dune::FieldMatrix< K, ROWS, COLS >::operator= ( FieldMatrix< T, rows, cols > const &  rhs  )  [inline]
bool Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator== ( const DenseMatrix< Other > &  y  )  const [inline, inherited]

Binary matrix comparison.

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

random access

FieldMatrix< K, ROWS, COLS > & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::rightmultiply ( const DenseMatrix< M2 > &  M  )  [inline, inherited]

Multiplies M from the right to this matrix.

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.

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.

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::rows (  )  const [inline, inherited]

number of rows

size_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::size (  )  const [inline, inherited]

size method (number of rows)

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

Solve system A x = b.

Exceptions:
FMatrixError if the matrix is singular
void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::umhv ( const X &  x,
Y &  y 
) const [inline, inherited]

y += A^H x

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

y += A^T x

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

y += A x

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

y += alpha A^H x

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

y += alpha A^T x

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

y += alpha A x


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