|
dune-istl 2.12-git
|
A multiple of the identity matrix of static size. More...
#include <dune/istl/scaledidmatrix.hh>
Public Types | |
| typedef K | field_type |
| The type representing numbers. | |
| typedef K | block_type |
| The type representing matrix entries (which may be matrices themselves) | |
| typedef std::size_t | size_type |
| The type used for the indices and sizes. | |
| typedef DiagonalRowVector< K, n > | row_type |
| Type of a single matrix row. | |
| typedef row_type | reference |
| typedef DiagonalRowVectorConst< K, n > | const_row_type |
| Const type of a single row. | |
| typedef const_row_type | const_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 | |
| ScaledIdentityMatrix () | |
| Default constructor. | |
| ScaledIdentityMatrix (const K &k) | |
| Constructor initializing the whole matrix with a scalar. | |
| ScaledIdentityMatrix & | operator= (const K &k) |
| Assignment from scalar. | |
| bool | identical (const ScaledIdentityMatrix< K, n > &other) const |
| Check if matrix is identical to 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 |
| bool | operator== (const ScaledIdentityMatrix &other) const |
| Test for equality. | |
| bool | operator!= (const ScaledIdentityMatrix &other) const |
| Test for inequality. | |
| template<class V > | |
| void | solve (V &x, const V &b) const |
| Solve linear system A x = b. | |
| void | invert () |
| Compute inverse. | |
| K | 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 if (i,j) is in the matrix pattern, i.e., if i==j. | |
| 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) const |
| Get const reference to diagonal entry. | |
| K & | diagonal (size_type) |
| Get reference to diagonal entry. | |
| const K & | scalar () const |
| Get const reference to the scalar diagonal value. | |
| K & | scalar () |
| Get reference to the scalar diagonal value. | |
Matrix-vector products | |
| 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 K &alpha, const X &x, Y &y) const |
| y += alpha A x | |
| template<class X , class Y > | |
| void | usmtv (const K &alpha, const X &x, Y &y) const |
| y += alpha A^T x | |
| template<class X , class Y > | |
| void | usmhv (const K &alpha, const X &x, Y &y) const |
| y += alpha A^H x | |
Norms | |
| FieldTraits< field_type >::real_type | frobenius_norm () const |
| The Frobenius norm. | |
| FieldTraits< field_type >::real_type | frobenius_norm2 () const |
| The square of the Frobenius norm. | |
| FieldTraits< field_type >::real_type | infinity_norm () const |
| The row sum norm. | |
| FieldTraits< field_type >::real_type | infinity_norm_real () const |
| simplified infinity norm (uses Manhattan norm for complex values) | |
Static Public Attributes | |
| static constexpr std::integral_constant< size_type, n > | rows = {} |
| The number of matrix rows. | |
| static constexpr std::integral_constant< size_type, n > | cols = {} |
| The number of matrix columns. | |
Friends | |
| std::ostream & | operator<< (std::ostream &s, const ScaledIdentityMatrix< K, n > &a) |
| Sends the matrix to an output stream. | |
Vector space arithmetic | |
| ScaledIdentityMatrix & | operator+= (const ScaledIdentityMatrix &y) |
| Vector space addition. | |
| ScaledIdentityMatrix & | operator-= (const ScaledIdentityMatrix &y) |
| Vector space subtraction. | |
| ScaledIdentityMatrix & | operator+= (const K &k) |
| Addition of a scalar to the diagonal. | |
| ScaledIdentityMatrix & | operator-= (const K &k) |
| Subtraction of a scalar from the diagonal. | |
| ScaledIdentityMatrix & | operator*= (const K &k) |
| Vector space multiplication with scalar. | |
| ScaledIdentityMatrix & | operator/= (const K &k) |
| Vector space division by scalar. | |
| template<class Scalar , std::enable_if_t< IsNumber< Scalar >::value, int > = 0> | |
| auto | operator* (const ScaledIdentityMatrix &matrix, Scalar scalar) |
| Vector space multiplication with scalar. | |
| template<class Scalar , std::enable_if_t< IsNumber< Scalar >::value, int > = 0> | |
| auto | operator* (Scalar scalar, const ScaledIdentityMatrix &matrix) |
| Vector space multiplication with scalar. | |
| template<class OtherScalar > requires requires(K k, OtherScalar otherScalar) { k + otherScalar; } | |
| auto & | operator+= (FieldMatrix< OtherScalar, n, n > &fieldMatrix, const ScaledIdentityMatrix &matrix) |
| Addition of ScaledIdentityMatrix to FieldMatrix. | |
| template<class OtherScalar > requires requires(K k, OtherScalar otherScalar) { k + otherScalar; } | |
| auto | operator+ (const FieldMatrix< OtherScalar, n, n > &fieldMatrix, const ScaledIdentityMatrix &matrix) |
| Addition of ScaledIdentityMatrix to FieldMatrix. | |
| template<class OtherScalar > requires requires(K k, OtherScalar otherScalar) { k + otherScalar; } | |
| auto | operator+ (const ScaledIdentityMatrix &matrix, const FieldMatrix< OtherScalar, n, n > &fieldMatrix) |
| Addition of FieldMatrix to ScaledIdentityMatrix. | |
| template<class OtherScalar > requires requires(K k, OtherScalar otherScalar) { k + otherScalar; } | |
| auto | operator+= (DiagonalMatrix< OtherScalar, n > &diagonalMatrix, const ScaledIdentityMatrix &matrix) |
| Addition of ScaledIdentityMatrix to DiagonalMatrix. | |
| template<class OtherScalar > requires requires(K k, OtherScalar otherScalar) { k + otherScalar; } | |
| auto | operator+ (const DiagonalMatrix< OtherScalar, n > &diagonalMatrix, const ScaledIdentityMatrix &matrix) |
| Addition of ScaledIdentityMatrix to DiagonalMatrix. | |
| template<class OtherScalar > requires requires(K k, OtherScalar otherScalar) { k + otherScalar; } | |
| auto | operator+ (const ScaledIdentityMatrix &matrix, const DiagonalMatrix< OtherScalar, n > &diagonalMatrix) |
| Addition of DiagonalMatrix to ScaledIdentityMatrix. | |
Detailed Description
class Dune::ScaledIdentityMatrix< K, n >
A multiple of the identity matrix of static size.
This class provides all operations specified by the dune-istl matrix API. The implementations exploit the fact that the matrix is a multiple of the identity.
- Template Parameters
-
K The number used for matrix entries n The number of matrix rows and columns
- Warning
- If
mis an object of typeScaledIdentityMatrix, then code likewill compile. However, the expressionK entry = m[0][1];m[0][1]is not guaranteed to return 0. Rather, its behavior is undefined.
Member Typedef Documentation
◆ block_type
| typedef K Dune::ScaledIdentityMatrix< K, n >::block_type |
The type representing matrix entries (which may be matrices themselves)
◆ ColIterator
| typedef row_type::Iterator Dune::ScaledIdentityMatrix< K, n >::ColIterator |
rename the iterators for easier access
◆ const_iterator
| typedef ConstIterator Dune::ScaledIdentityMatrix< K, n >::const_iterator |
typedef for stl compliant access
◆ const_reference
| typedef const_row_type Dune::ScaledIdentityMatrix< K, n >::const_reference |
◆ const_row_type
| typedef DiagonalRowVectorConst<K,n> Dune::ScaledIdentityMatrix< K, n >::const_row_type |
Const type of a single row.
◆ ConstColIterator
| typedef const_row_type::ConstIterator Dune::ScaledIdentityMatrix< K, n >::ConstColIterator |
rename the iterators for easier access
◆ ConstIterator
| typedef ContainerWrapperIterator<const WrapperType, const_reference, const_reference> Dune::ScaledIdentityMatrix< K, n >::ConstIterator |
Iterator class for sequential access.
◆ ConstRowIterator
| typedef ConstIterator Dune::ScaledIdentityMatrix< K, n >::ConstRowIterator |
rename the iterators for easier access
◆ field_type
| typedef K Dune::ScaledIdentityMatrix< K, n >::field_type |
The type representing numbers.
◆ Iterator
| typedef ContainerWrapperIterator<const WrapperType, reference, reference> Dune::ScaledIdentityMatrix< K, n >::Iterator |
Iterator class for sequential access.
◆ iterator
| typedef Iterator Dune::ScaledIdentityMatrix< K, n >::iterator |
typedef for stl compliant access
◆ reference
| typedef row_type Dune::ScaledIdentityMatrix< K, n >::reference |
◆ row_type
| typedef DiagonalRowVector<K,n> Dune::ScaledIdentityMatrix< K, n >::row_type |
Type of a single matrix row.
Since the implementation does not store actual rows, this is a proxy type, which tries to behave like an array of matrix entries as much as possible.
- Note
- The type is really
DiagonalRowVector. Implementing a dedicatedScaledIdentityMatrixRowVectorwould just be a copy of that.
◆ RowIterator
| typedef Iterator Dune::ScaledIdentityMatrix< K, n >::RowIterator |
rename the iterators for easier access
◆ size_type
| typedef std::size_t Dune::ScaledIdentityMatrix< K, n >::size_type |
The type used for the indices and sizes.
Constructor & Destructor Documentation
◆ ScaledIdentityMatrix() [1/2]
|
inline |
Default constructor.
◆ ScaledIdentityMatrix() [2/2]
|
inline |
Constructor initializing the whole matrix with a scalar.
Member Function Documentation
◆ beforeBegin() [1/2]
|
inline |
- Returns
- an iterator that is positioned before the first row of the matrix.
◆ beforeBegin() [2/2]
|
inline |
- Returns
- an iterator that is positioned before the first row of the matrix.
◆ beforeEnd() [1/2]
|
inline |
- Returns
- an iterator that is positioned before the end iterator of the rows, i.e. at the last row.
◆ beforeEnd() [2/2]
|
inline |
- Returns
- an iterator that is positioned before the end iterator of the rows. i.e. at the last row.
◆ begin() [1/2]
|
inline |
begin iterator
◆ begin() [2/2]
|
inline |
begin iterator
◆ determinant()
|
inline |
Calculates the determinant of this matrix.
◆ diagonal() [1/2]
|
inline |
Get reference to diagonal entry.
◆ diagonal() [2/2]
|
inline |
Get const reference to diagonal entry.
◆ end() [1/2]
|
inline |
end iterator
◆ end() [2/2]
|
inline |
end iterator
◆ exists()
|
inline |
Return true if (i,j) is in the matrix pattern, i.e., if i==j.
◆ frobenius_norm()
|
inline |
The Frobenius norm.
◆ frobenius_norm2()
|
inline |
The square of the Frobenius norm.
◆ identical()
|
inline |
Check if matrix is identical to other matrix.
"Identical" means: Not just the same values, but the very same object.
◆ infinity_norm()
|
inline |
The row sum norm.
For a multiple of the identity matrix, this is simply the absolute value of any diagonal matrix entry.
◆ infinity_norm_real()
|
inline |
simplified infinity norm (uses Manhattan norm for complex values)
◆ invert()
|
inline |
Compute inverse.
◆ M()
|
inline |
number of blocks in column direction
◆ mmhv()
|
inline |
y -= A^H x
◆ mmtv()
|
inline |
y -= A^T x
◆ mmv()
|
inline |
y -= A x
◆ mtv()
|
inline |
y = A^T x
◆ mv()
|
inline |
y = A x
◆ N()
|
inline |
number of blocks in row direction
◆ operator!=()
|
inline |
Test for inequality.
◆ operator*=()
|
inline |
Vector space multiplication with scalar.
◆ operator+=() [1/2]
|
inline |
Addition of a scalar to the diagonal.
- Warning
- This is not the same as adding a scalar to a FieldMatrix!
◆ operator+=() [2/2]
|
inline |
Vector space addition.
◆ operator-=() [1/2]
|
inline |
Subtraction of a scalar from the diagonal.
- Warning
- This is not the same as subtracting a scalar from a FieldMatrix!
◆ operator-=() [2/2]
|
inline |
Vector space subtraction.
◆ operator/=()
|
inline |
Vector space division by scalar.
◆ operator=()
|
inline |
Assignment from scalar.
◆ operator==()
|
inline |
Test for equality.
◆ operator[]() [1/2]
|
inline |
Return reference object as row replacement.
◆ operator[]() [2/2]
|
inline |
Return const_reference object as row replacement.
◆ scalar() [1/2]
|
inline |
Get reference to the scalar diagonal value.
◆ scalar() [2/2]
|
inline |
Get const reference to the scalar diagonal value.
◆ solve()
|
inline |
Solve linear system A x = b.
- Template Parameters
-
V Vector data type
◆ umhv()
|
inline |
y += A^H x
◆ umtv()
|
inline |
y += A^T x
◆ umv()
|
inline |
y += A x
◆ usmhv()
|
inline |
y += alpha A^H x
◆ usmtv()
|
inline |
y += alpha A^T x
◆ usmv()
|
inline |
y += alpha A x
Friends And Related Symbol Documentation
◆ operator* [1/2]
|
friend |
Vector space multiplication with scalar.
◆ operator* [2/2]
|
friend |
Vector space multiplication with scalar.
◆ operator+ [1/4]
requires requires(K k, OtherScalar otherScalar) { k + otherScalar; }
|
friend |
Addition of ScaledIdentityMatrix to DiagonalMatrix.
◆ operator+ [2/4]
requires requires(K k, OtherScalar otherScalar) { k + otherScalar; }
|
friend |
Addition of ScaledIdentityMatrix to FieldMatrix.
◆ operator+ [3/4]
requires requires(K k, OtherScalar otherScalar) { k + otherScalar; }
|
friend |
Addition of DiagonalMatrix to ScaledIdentityMatrix.
◆ operator+ [4/4]
requires requires(K k, OtherScalar otherScalar) { k + otherScalar; }
|
friend |
Addition of FieldMatrix to ScaledIdentityMatrix.
◆ operator+= [1/2]
requires requires(K k, OtherScalar otherScalar) { k + otherScalar; }
|
friend |
Addition of ScaledIdentityMatrix to DiagonalMatrix.
◆ operator+= [2/2]
requires requires(K k, OtherScalar otherScalar) { k + otherScalar; }
|
friend |
Addition of ScaledIdentityMatrix to FieldMatrix.
◆ operator<<
|
friend |
Sends the matrix to an output stream.
Member Data Documentation
◆ cols
|
staticconstexpr |
The number of matrix columns.
◆ rows
|
staticconstexpr |
The number of matrix rows.
The documentation for this class was generated from the following file:
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8