DUNE PDELab (unstable)
A dense n x m matrix. More...
#include <dune/common/fmatrix.hh>
Public Types | |
| using | size_type = typename Base::size_type |
| The type used for the index access and size operation. | |
| using | value_type = typename Base::value_type |
| The type of the elements stored in the matrix. | |
| using | reference = value_type & |
| The type used for references to the matrix entries. | |
| using | const_reference = const value_type & |
| The type used for const references to the matrix entries. | |
| using | row_type = typename Base::row_type |
| The type the rows of the matrix are represented by. | |
| using | row_reference = typename Base::row_reference |
| The type used for references to the rows of the matrix. | |
| using | const_row_reference = typename Base::const_row_reference |
| The type used for const references to the rows of the matrix. | |
| typedef Traits::derived_type | derived_type |
| type of derived matrix class | |
| 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 | |
|
template<class OtherK , int otherRows, int otherCols> requires (otherRows != ROWS || otherCols != COLS) | |
| constexpr FieldMatrix & | operator= (const FieldMatrix< OtherK, otherRows, otherCols > &)=delete |
| Delete assignment from FieldMatrix of different shape. | |
| constexpr FieldMatrix< K, COLS, ROWS > | transposed () const |
| Return transposed of the matrix as FieldMatrix. | |
| constexpr row_reference | operator[] (size_type i) |
| random access | |
| 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. More... | |
| void | invert (bool doPivoting=true) |
| Compute inverse. More... | |
| 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. | |
| FieldMatrix< K, ROWS, COLS > & | rightmultiply (const DenseMatrix< M2 > &M) |
| Multiplies M from the right 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 | |
Constructors | |
| constexpr | FieldMatrix () noexcept(std::is_nothrow_default_constructible_v< K >) |
| Default constructor, making value-initialized matrix with all components set to zero. | |
| constexpr | FieldMatrix (std::initializer_list< Dune::FieldVector< K, cols > > const &l) |
| Constructor initializing the matrix from a nested list of values. | |
|
template<class OtherK , int otherRows, int otherCols> requires (otherRows != ROWS || otherCols != COLS) | |
| constexpr | FieldMatrix (const FieldMatrix< OtherK, otherRows, otherCols > &)=delete |
| Delete assignment from FieldMatrix of different shape. | |
|
template<class OtherMatrix > requires (HasDenseMatrixAssigner<FieldMatrix, OtherMatrix>::value) | |
| constexpr | FieldMatrix (const OtherMatrix &rhs) |
| copy constructor from assignable type OtherMatrix | |
Element access | |
| constexpr row_reference | mat_access (size_type i) |
| constexpr const_row_reference | mat_access (size_type i) const |
| constexpr | operator const_reference () const noexcept |
| Conversion operator. | |
| constexpr | operator reference () noexcept |
| Conversion operator. | |
Static Public Member Functions | |
Capacity | |
| static constexpr size_type | mat_rows () |
| static constexpr size_type | mat_cols () |
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 More... | |
Friends | |
Comparison operators | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr bool | operator== (const FieldMatrix &a, const S &b) noexcept |
| comparing FieldMatrix<1,1> with scalar for equality | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr bool | operator== (const S &a, const FieldMatrix &b) noexcept |
| comparing FieldMatrix<1,1> with scalar for equality | |
|
template<class OtherK > requires (Std::three_way_comparable_with<K,OtherK>) | |
| constexpr auto | operator<=> (const FieldMatrix &a, const FieldMatrix< OtherK, ROWS, COLS > &b) noexcept |
| three-way comparison of FieldMatrix | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr auto | operator<=> (const FieldMatrix &a, const S &b) noexcept |
| three-way comparison of FieldMatrix<1,1> with scalar | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr auto | operator<=> (const S &a, const FieldMatrix &b) noexcept |
| three-way comparison of FieldMatrix<1,1> with scalar | |
Vector space operations | |
| template<class OtherK > | |
| constexpr auto | operator+ (const FieldMatrix &matrixA, const FieldMatrix< OtherK, ROWS, COLS > &matrixB) |
| vector space addition | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr auto | operator+ (const FieldMatrix &a, const S &b) noexcept |
| Binary addition, when using FieldVector<K,1,1> like K. | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr auto | operator+ (const S &a, const FieldMatrix &b) noexcept |
| Binary addition, when using FieldMatrix<K,1,1> like K. | |
| template<class OtherK > | |
| constexpr auto | operator- (const FieldMatrix &matrixA, const FieldMatrix< OtherK, ROWS, COLS > &matrixB) |
| vector space subtraction | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr auto | operator- (const FieldMatrix &a, const S &b) noexcept |
| Binary subtraction, when using FieldMatrix<K,1,1> like K. | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr auto | operator- (const S &a, const FieldMatrix &b) noexcept |
| Binary subtraction, when using FieldMatrix<K,1,1> like K. | |
| template<Concept::Number S> | |
| constexpr auto | operator* (const FieldMatrix &matrix, const S &scalar) |
| vector space multiplication with scalar | |
| template<Concept::Number S> | |
| constexpr auto | operator* (const S &scalar, const FieldMatrix &matrix) |
| vector space multiplication with scalar | |
| template<Concept::Number S> | |
| constexpr auto | operator/ (const FieldMatrix &matrix, const S &scalar) |
| vector space division by scalar | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr FieldMatrix | operator/ (const S &a, const FieldMatrix &b) noexcept |
| Binary division, when using FieldMatrix<K,1,1> like K. | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr FieldMatrix & | operator+= (const S &scalar) |
| add scalar | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr FieldMatrix & | operator-= (const S &scalar) |
| subtract scalar | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr FieldMatrix & | operator*= (const S &scalar) |
| multiplication with scalar | |
|
template<Concept::Number S> requires (ROWS*COLS == 1) | |
| constexpr FieldMatrix & | operator/= (const S &scalar) |
| division by scalar | |
Matrix-matrix multiplication | |
| template<class OtherK , int otherCols> | |
| constexpr auto | operator* (const FieldMatrix &matrixA, const FieldMatrix< OtherK, COLS, otherCols > &matrixB) |
| Matrix-matrix multiplication of FieldMatrix types. | |
| template<class OtherMatrix > requires (Impl::IsStaticSizeMatrix_v<OtherMatrix> and not Impl::IsFieldMatrix_v<OtherMatrix>) | |
| constexpr auto | operator* (const FieldMatrix &matrixA, const OtherMatrix &matrixB) |
| Matrix-matrix multiplication of FieldMatrix with other matrix type. More... | |
| template<class OtherMatrix > requires (Impl::IsStaticSizeMatrix_v<OtherMatrix> and not Impl::IsFieldMatrix_v<OtherMatrix>) | |
| constexpr auto | operator* (const OtherMatrix &matrixA, const FieldMatrix &matrixB) |
| Matrix-matrix multiplication. More... | |
| 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. | |
Detailed Description
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.
- Examples
- recipe-integration.cc.
Member Function Documentation
◆ beforeBegin() [1/2]
|
inlineconstexprinherited |
- Returns
- an iterator that is positioned before the first entry of the vector.
◆ beforeBegin() [2/2]
|
inlineconstexprinherited |
- Returns
- an iterator that is positioned before the first entry of the vector.
◆ beforeEnd() [1/2]
|
inlineconstexprinherited |
- Returns
- an iterator that is positioned before the end iterator of the vector, i.e. at the last entry.
◆ beforeEnd() [2/2]
|
inlineconstexprinherited |
- Returns
- an iterator that is positioned before the end iterator of the vector. i.e. at the last element
◆ invert()
|
inherited |
Compute inverse.
- Exceptions
-
FMatrixError if the matrix is singular
◆ luDecomposition()
|
staticprotectedinherited |
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 FMatrixErrorimmediately as soon as one lane is discovered to be singular. Iffalse, 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)andthrowEarly==trueshould hold. After early termination, the contents ofAshould be considered bogus, andnonsingularLaneshas the lane(s) that triggered the early termination unset. There may be more singular lanes than the one reported innonsingularLanes, which just haven't been discovered yet; so the value ofnonsingularLanesis 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,nonsingularLanesmay have any value andthrowEarly==falseshould 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,nonsingularLanescontains the map of lanes that are valid inA.
◆ solve()
|
inherited |
Solve system A x = b.
- Exceptions
-
FMatrixError if the matrix is singular
Friends And Related Function Documentation
◆ operator* [1/2]
requires (Impl::IsStaticSizeMatrix_v<OtherMatrix> and not Impl::IsFieldMatrix_v<OtherMatrix>)
|
friend |
Matrix-matrix multiplication of FieldMatrix with other matrix type.
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* [2/2]
requires (Impl::IsStaticSizeMatrix_v<OtherMatrix> and not Impl::IsFieldMatrix_v<OtherMatrix>)
|
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).
The documentation for this class was generated from the following files:
- dune/common/densematrix.hh
- dune/common/fmatrix.hh
|
Legal Statements / Impressum |
Hosted by TU Dresden & Uni Heidelberg |
generated with Hugo v0.111.3
(Feb 24, 23:35, 2026)