Loading...
Searching...
No Matches
Dune::FieldMatrix< K, ROWS, COLS > Class Template Reference
Common » 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 >:

## Public Types

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
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

constexpr | FieldMatrix ()=default
| Default constructor.
constexpr | FieldMatrix (std::initializer_list< Dune::FieldVector< K, cols > > const &l)
| Constructor initializing the matrix from a list of vector.
| FieldMatrix (const FieldMatrix &)=default
| copy constructor
template<class T, typename = std::enable_if_t<HasDenseMatrixAssigner<FieldMatrix, T>::value>>
constexpr | FieldMatrix (T const &rhs)
| copy constructor from assignable type T
constexpr FieldMatrix & | operator= (const FieldMatrix &)=default
| copy assignment operator
template<typename T>
constexpr FieldMatrix & | operator= (const FieldMatrix< T, ROWS, COLS > &x)
| copy assignment from FieldMatrix over a different field
template<typename T, int rows, int cols>
FieldMatrix & | operator= (FieldMatrix< T, rows, cols > const &)=delete
| no copy assignment from FieldMatrix of different size
constexpr FieldMatrix< K, COLS, ROWS > | transposed () const
| Return transposed of the matrix as FieldMatrix.
template<int l>
constexpr 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>
constexpr FieldMatrix & | rightmultiply (const FieldMatrix< K, r, c > &M)
| Multiplies M from the right to this matrix.
template<int l>
constexpr 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 row_reference | mat_access (size_type i)
constexpr const_row_reference | mat_access (size_type i) const
constexpr derived_type & | operator= (const RHS &rhs)
FieldMatrix< K, ROWS, COLS > & | rightmultiply (const DenseMatrix< M2 > &M)
| Multiplies M from the right to this matrix.
constexpr row_reference | operator[] (size_type i)
| random access
constexpr const_row_reference | operator[] (size_type i) const
constexpr size_type | size () const
| size method (number of rows)
constexpr Iterator | begin ()
| begin iterator
constexpr ConstIterator | begin () const
| begin iterator
constexpr Iterator | end ()
| end iterator
constexpr ConstIterator | end () const
| end iterator
constexpr Iterator | beforeEnd ()
constexpr ConstIterator | beforeEnd () const
constexpr Iterator | beforeBegin ()
constexpr ConstIterator | beforeBegin () const
constexpr derived_type & | operator+= (const DenseMatrix< Other > &x)
| vector space addition
constexpr derived_type | operator- () const
| Matrix negation.
constexpr derived_type & | operator-= (const DenseMatrix< Other > &x)
| vector space subtraction
constexpr derived_type & | operator*= (const field_type &k)
| vector space multiplication with scalar
constexpr derived_type & | operator/= (const field_type &k)
| vector space division by scalar
constexpr derived_type & | axpy (const field_type &a, const DenseMatrix< Other > &x)
| vector space axpy operation (*this += a x)
constexpr bool | operator== (const DenseMatrix< Other > &x) const
| Binary matrix comparison.
constexpr bool | operator!= (const DenseMatrix< Other > &x) const
| Binary matrix incomparison.
constexpr void | mv (const X &x, Y &y) const
| y = A x
constexpr void | mtv (const X &x, Y &y) const
| y = A^T x
constexpr void | umv (const X &x, Y &y) const
| y += A x
constexpr void | umtv (const X &x, Y &y) const
| y += A^T x
constexpr void | umhv (const X &x, Y &y) const
| y += A^H x
constexpr void | mmv (const X &x, Y &y) const
| y -= A x
constexpr void | mmtv (const X &x, Y &y) const
| y -= A^T x
constexpr void | mmhv (const X &x, Y &y) const
| y -= A^H x
constexpr void | usmv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const
| y += alpha A x
constexpr void | usmtv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const
| y += alpha A^T x
constexpr void | usmhv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const
| y += alpha A^H x
constexpr FieldTraits< value_type >::real_type | frobenius_norm () const
| frobenius norm: sqrt(sum over squared values of entries)
constexpr FieldTraits< value_type >::real_type | frobenius_norm2 () const
| square of frobenius norm, need for block recursion
constexpr FieldTraits< vt >::real_type | infinity_norm () const
| infinity norm (row sum norm, how to generalize for blocks?)
constexpr FieldTraits< vt >::real_type | infinity_norm () const
| infinity norm (row sum norm, how to generalize for blocks?)
constexpr FieldTraits< vt >::real_type | infinity_norm_real () const
| simplified infinity norm (uses Manhattan norm for complex values)
constexpr FieldTraits< vt >::real_type | infinity_norm_real () const
| simplified infinity norm (uses Manhattan norm for complex values)
void | solve (V1 &x, const V2 &b, bool doPivoting=true) const
| Solve system A x = b.
void | invert (bool doPivoting=true)
| Compute inverse.
field_type | determinant (bool doPivoting=true) const
| calculates the determinant of this matrix
FieldMatrix< K, ROWS, COLS > & | leftmultiply (const DenseMatrix< M2 > &M)
| Multiplies M from the left to this matrix.
constexpr size_type | N () const
| number of rows
constexpr size_type | M () const
| number of columns
constexpr size_type | rows () const
| number of rows
constexpr size_type | cols () const
| number of columns
constexpr bool | exists (size_type i, size_type j) const
| return true when (i,j) is in pattern

## Static Public Member Functions

static constexpr size_type | mat_rows ()
static constexpr size_type | mat_cols ()

## Static Public Attributes

static constexpr int | rows = ROWS
| The number of rows.
static constexpr int | cols = COLS
| The number of columns.
static constexpr int | blocklevel
| The number of block levels we contain. This is the leaf, that is, 1.

## Static Protected Member Functions

static void | luDecomposition (DenseMatrix< FieldMatrix< K, ROWS, COLS > > &A, Func func, Mask &nonsingularLanes, bool throwEarly, bool doPivoting)
| do an LU-Decomposition on matrix A

## Friends

template<class, int, int>
class | FieldMatrix
template<class OtherScalar>
constexpr auto | operator+ (const FieldMatrix &matrixA, const FieldMatrix< OtherScalar, ROWS, COLS > &matrixB)
| vector space addition – two-argument version
template<class OtherScalar>
constexpr auto | operator- (const FieldMatrix &matrixA, const FieldMatrix< OtherScalar, ROWS, COLS > &matrixB)
| vector space subtraction – two-argument version
template<class Scalar, std::enable_if_t< IsNumber< Scalar >::value, int > = 0>
constexpr auto | operator* (const FieldMatrix &matrix, 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 FieldMatrix &matrix)
| vector space multiplication with scalar
template<class Scalar, std::enable_if_t< IsNumber< Scalar >::value, int > = 0>
constexpr auto | operator/ (const FieldMatrix &matrix, Scalar scalar)
| vector space division by scalar
template<class OtherScalar, int otherCols>
constexpr auto | operator* (const FieldMatrix &matrixA, const FieldMatrix< OtherScalar, COLS, otherCols > &matrixB)
| Matrix-matrix multiplication.
template<class OtherMatrix, std::enable_if_t< Impl::IsStaticSizeMatrix_v< OtherMatrix > and not Impl::IsFieldMatrix_v< OtherMatrix >, int > = 0>
constexpr auto | operator* (const FieldMatrix &matrixA, const OtherMatrix &matrixB)
| Matrix-matrix multiplication.
template<class OtherMatrix, std::enable_if_t< Impl::IsStaticSizeMatrix_v< OtherMatrix > and not Impl::IsFieldMatrix_v< OtherMatrix >, int > = 0>
constexpr auto | operator* (const OtherMatrix &matrixA, const FieldMatrix &matrixB)
| Matrix-matrix multiplication.

## 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

## Constructor & Destructor Documentation

## FieldMatrix() [1/4]

template<class K, int ROWS, int COLS>

Dune::FieldMatrix< K, ROWS, COLS >::FieldMatrix | ( |  | ) |

constexpr default

Default constructor.

## FieldMatrix() [2/4]

template<class K, int ROWS, int COLS>

Dune::FieldMatrix< K, ROWS, COLS >::FieldMatrix | ( | std::initializer_list< Dune::FieldVector< K, cols > > const & | l | ) |

inline constexpr

Constructor initializing the matrix from a list of vector.

## FieldMatrix() [3/4]

template<class K, int ROWS, int COLS>

Dune::FieldMatrix< K, ROWS, COLS >::FieldMatrix | ( | const FieldMatrix< K, ROWS, COLS > & |  | ) |

default

copy constructor

## FieldMatrix() [4/4]

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 constexpr

copy constructor from assignable type T

## Member Function Documentation

## axpy()

derived_type & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::axpy | ( | const field_type & | a,
|  | const DenseMatrix< Other > & | x )

inline constexpr inherited

vector space axpy operation (*this += a x)

## beforeBegin() [1/2]

Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeBegin | ( |  | ) |

inline constexpr inherited

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

inline constexpr inherited

Returns
  an iterator that is positioned before the first entry of the vector.

## beforeEnd() [1/2]

Iterator Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::beforeEnd | ( |  | ) |

inline constexpr inherited

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

inline constexpr inherited

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 | ( |  | ) |

inline constexpr inherited

begin iterator

## begin() [2/2]

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

inline constexpr inherited

begin iterator

## cols()

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

inline constexpr inherited

number of columns

## determinant()

field_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::determinant | ( | bool | doPivoting = true | ) | const

inherited

calculates the determinant of this matrix

## end() [1/2]

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

inline constexpr inherited

end iterator

## end() [2/2]

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

inline constexpr inherited

end iterator

## exists()

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

inline constexpr inherited

return true when (i,j) is in pattern

## frobenius_norm()

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

inline constexpr inherited

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

inline constexpr inherited

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

inline constexpr inherited

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

inline constexpr inherited

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

inline constexpr inherited

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

inline constexpr inherited

simplified infinity norm (uses Manhattan norm for complex values)

## invert()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::invert | ( | bool | doPivoting = true | ) |

inherited

Compute inverse.

Exceptions

  FMatrixError | if the matrix is singular

## leftmultiply()

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.

## 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 constexpr

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

## luDecomposition()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::luDecomposition | ( | DenseMatrix< FieldMatrix< K, ROWS, COLS > > & | A,
|  | Func | func,
|  | Mask & | nonsingularLanes,
|  | bool | throwEarly,
|  | bool | doPivoting )

static protected inherited

do an LU-Decomposition on matrix A

Parameters

  A | The matrix to decompose, and to store the result in.
  func | Functor used for swapping lanes and to conduct the elimination. Depending on the functor, `luDecomposition()` can be used for solving, for inverting, or to compute the determinant.
  nonsingularLanes | SimdMask of lanes that are nonsingular.
  throwEarly | Whether to throw an `FMatrixError` immediately as soon as one lane is discovered to be singular. If `false`, do not throw, instead continue until finished or all lanes are singular, and exit via return in both cases.
  doPivoting | Enable pivoting.

There are two modes of operation:

- Terminate as soon as one lane is discovered to be singular. Early termination is done by throwing an `FMatrixError`. On entry, `Simd::allTrue(nonsingularLanes)` and `throwEarly==true` should hold. After early termination, the contents of `A` should be considered bogus, and `nonsingularLanes` has the lane(s) that triggered the early termination unset. There may be more singular lanes than the one reported in `nonsingularLanes`, which just haven't been discovered yet; so the value of `nonsingularLanes` is mostly useful for diagnostics.
- Terminate only when all lanes are discovered to be singular. Use this when you want to apply special postprocessing in singular lines (e.g. setting the determinant of singular lanes to 0 in `determinant()`). On entry, `nonsingularLanes` may have any value and `throwEarly==false` should hold. The function will not throw an exception if some lanes are discovered to be singular, instead it will continue running until all lanes are singular or until finished, and terminate only via normal return. On exit, `nonsingularLanes` contains the map of lanes that are valid in `A`.

## M()

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

inline constexpr inherited

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 constexpr

## 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 constexpr

## mat_cols()

template<class K, int ROWS, int COLS>

constexpr size_type Dune::FieldMatrix< K, ROWS, COLS >::mat_cols | ( |  | ) |

inline static constexpr

## mat_rows()

template<class K, int ROWS, int COLS>

constexpr size_type Dune::FieldMatrix< K, ROWS, COLS >::mat_rows | ( |  | ) |

inline static constexpr

## mmhv()

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

inline constexpr inherited

y -= A^H x

## mmtv()

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

inline constexpr inherited

y -= A^T x

## mmv()

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

inline constexpr inherited

y -= A x

## mtv()

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

inline constexpr inherited

y = A^T x

## mv()

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

inline constexpr inherited

y = A x

## N()

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

inline constexpr inherited

number of rows

## operator!=()

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

inline constexpr inherited

Binary matrix incomparison.

## operator*=()

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

inline constexpr inherited

vector space multiplication with scalar

## operator+=()

derived_type & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator+= | ( | const DenseMatrix< Other > & | x | ) |

inline constexpr inherited

vector space addition

## operator-()

derived_type Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator- | ( |  | ) | const

inline constexpr inherited

Matrix negation.

## operator-=()

derived_type & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator-= | ( | const DenseMatrix< Other > & | x | ) |

inline constexpr inherited

vector space subtraction

## operator/=()

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

inline constexpr inherited

vector space division by scalar

## operator=() [1/4]

template<class K, int ROWS, int COLS>

FieldMatrix & Dune::FieldMatrix< K, ROWS, COLS >::operator= | ( | const FieldMatrix< K, ROWS, COLS > & |  | ) |

constexpr default

copy assignment operator

## operator=() [2/4]

template<class K, int ROWS, int COLS>
template<typename T>

FieldMatrix & Dune::FieldMatrix< K, ROWS, COLS >::operator= | ( | const FieldMatrix< T, ROWS, COLS > & | x | ) |

inline constexpr

copy assignment from FieldMatrix over a different field

## operator=() [3/4]

template<class K, int ROWS, int COLS>

derived_type & Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::operator= | ( | const RHS & | rhs | ) |

inline constexpr

## operator=() [4/4]

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 & |  | ) |

delete

no copy assignment from FieldMatrix of different size

## operator==()

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

inline constexpr inherited

Binary matrix comparison.

## operator[]() [1/2]

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

inline constexpr inherited

random access

## operator[]() [2/2]

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

inline constexpr inherited

## rightmultiply() [1/2]

template<class K, int ROWS, int COLS>

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

inline

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 constexpr

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 constexpr

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

## rows()

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

inline constexpr inherited

number of rows

## size()

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

inline constexpr inherited

size method (number of rows)

## solve()

void Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::solve | ( | V1 & | x,
|  | const V2 & | b,
|  | bool | doPivoting = true ) const

inherited

Solve system A x = b.

Exceptions

  FMatrixError | if the matrix is singular

## transposed()

template<class K, int ROWS, int COLS>

FieldMatrix< K, COLS, ROWS > Dune::FieldMatrix< K, ROWS, COLS >::transposed | ( |  | ) | const

inline constexpr

Return transposed of the matrix as FieldMatrix.

## umhv()

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

inline constexpr inherited

y += A^H x

## umtv()

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

inline constexpr inherited

y += A^T x

## umv()

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

inline constexpr inherited

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

inline constexpr inherited

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

inline constexpr inherited

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

inline constexpr inherited

y += alpha A x

## Friends And Related Symbol Documentation

## FieldMatrix

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

friend class FieldMatrix

friend

## operator* [1/5]

template<class K, int ROWS, int COLS>
template<class Scalar, std::enable_if_t< IsNumber< Scalar >::value, int > = 0>

auto operator* | ( | const FieldMatrix< K, ROWS, COLS > & | matrix,
|  | Scalar | scalar )

friend

vector space multiplication with scalar

## operator* [2/5]

template<class K, int ROWS, int COLS>
template<class OtherScalar, int otherCols>

auto operator* | ( | const FieldMatrix< K, ROWS, COLS > & | matrixA,
|  | const FieldMatrix< OtherScalar, COLS, otherCols > & | matrixB )

friend

Matrix-matrix multiplication.

## operator* [3/5]

template<class K, int ROWS, int COLS>
template<class OtherMatrix, std::enable_if_t< Impl::IsStaticSizeMatrix_v< OtherMatrix > and not Impl::IsFieldMatrix_v< OtherMatrix >, int > = 0>

auto operator* | ( | const FieldMatrix< K, ROWS, COLS > & | matrixA,
|  | const OtherMatrix & | matrixB )

friend

Matrix-matrix multiplication.

This implements multiplication of a FieldMatrix with another matrix of type OtherMatrix. The latter has to provide OtherMatrix::field_type, OtherMatrix::cols, and OtherMatrix::mtv(x,y).

## operator* [4/5]

template<class K, int ROWS, int COLS>
template<class OtherMatrix, std::enable_if_t< Impl::IsStaticSizeMatrix_v< OtherMatrix > and not Impl::IsFieldMatrix_v< OtherMatrix >, int > = 0>

auto operator* | ( | const OtherMatrix & | matrixA,
|  | const FieldMatrix< K, ROWS, COLS > & | matrixB )

friend

Matrix-matrix multiplication.

This implements multiplication of another matrix of type OtherMatrix with a FieldMatrix. The former has to provide OtherMatrix::field_type, OtherMatrix::rows, and OtherMatrix::mv(x,y).

## operator* [5/5]

template<class K, int ROWS, int COLS>
template<class Scalar, std::enable_if_t< IsNumber< Scalar >::value, int > = 0>

auto operator* | ( | Scalar | scalar,
|  | const FieldMatrix< K, ROWS, COLS > & | matrix )

friend

vector space multiplication with scalar

## operator+

template<class K, int ROWS, int COLS>
template<class OtherScalar>

auto operator+ | ( | const FieldMatrix< K, ROWS, COLS > & | matrixA,
|  | const FieldMatrix< OtherScalar, ROWS, COLS > & | matrixB )

friend

vector space addition – two-argument version

## operator-

template<class K, int ROWS, int COLS>
template<class OtherScalar>

auto operator- | ( | const FieldMatrix< K, ROWS, COLS > & | matrixA,
|  | const FieldMatrix< OtherScalar, ROWS, COLS > & | matrixB )

friend

vector space subtraction – two-argument version

## operator/

template<class K, int ROWS, int COLS>
template<class Scalar, std::enable_if_t< IsNumber< Scalar >::value, int > = 0>

auto operator/ | ( | const FieldMatrix< K, ROWS, COLS > & | matrix,
|  | Scalar | scalar )

friend

vector space division by scalar

## Member Data Documentation

## blocklevel

int Dune::DenseMatrix< FieldMatrix< K, ROWS, COLS > >::blocklevel

static constexpr inherited

The number of block levels we contain. This is the leaf, that is, 1.

## cols

template<class K, int ROWS, int COLS>

int Dune::FieldMatrix< K, ROWS, COLS >::cols = COLS

static constexpr

The number of columns.

## rows

template<class K, int ROWS, int COLS>

int Dune::FieldMatrix< K, ROWS, COLS >::rows = ROWS

static constexpr

The number of rows.

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

- densematrix.hh
- fmatrix.hh