|
dune-common 2.11
|
Construct a matrix with a dynamic size. More...
#include <dune/common/dynmatrix.hh>

Public Types | |
| typedef Base::size_type | size_type |
| typedef Base::value_type | value_type |
| typedef Base::row_type | row_type |
| 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 Traits::row_reference | row_reference |
| The type used to represent a reference to a row (usually row_type &) | |
| typedef Traits::const_row_reference | const_row_reference |
| The type used to represent a reference to a constant row (usually const row_type &) | |
| 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 | |
| DynamicMatrix () | |
| Default constructor. | |
| DynamicMatrix (size_type r, size_type c, value_type v=value_type()) | |
| Constructor initializing the whole matrix with a scalar. | |
| DynamicMatrix (std::initializer_list< DynamicVector< K > > const &ll) | |
| Constructor initializing the matrix from a list of vector. | |
| template<class T , typename = std::enable_if_t<!Dune::IsNumber<T>::value && HasDenseMatrixAssigner<DynamicMatrix, T>::value>> | |
| DynamicMatrix (T const &rhs) | |
| void | resize (size_type r, size_type c, value_type v=value_type()) |
resize matrix to r × c | |
| template<typename T , typename = std::enable_if_t<!Dune::IsNumber<T>::value>> | |
| DynamicMatrix & | operator= (T const &rhs) |
| template<typename T , typename = std::enable_if_t<Dune::IsNumber<T>::value>> | |
| DynamicMatrix & | operator= (T scalar) |
| DynamicMatrix | transposed () const |
| Return transposed of the matrix as DynamicMatrix. | |
| size_type | mat_rows () const |
| size_type | mat_cols () const |
| row_type & | mat_access (size_type i) |
| const row_type & | mat_access (size_type i) const |
| 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 | |
| DynamicMatrix< K > & | leftmultiply (const DenseMatrix< M2 > &M) |
| Multiplies M from the left to this matrix. | |
| DynamicMatrix< K > & | 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 | |
Static Public Attributes | |
| 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< DynamicMatrix< K > > &A, Func func, Mask &nonsingularLanes, bool throwEarly, bool doPivoting) |
| do an LU-Decomposition on matrix A | |
Detailed Description
class Dune::DynamicMatrix< K >
Construct a matrix with a dynamic size.
- Template Parameters
-
K is the field type (use float, double, complex, etc)
Member Typedef Documentation
◆ block_type
|
inherited |
export the type representing the components
◆ ColIterator
|
inherited |
rename the iterators for easier access
◆ const_iterator
|
inherited |
typedef for stl compliant access
◆ const_row_reference
|
inherited |
The type used to represent a reference to a constant row (usually const row_type &)
◆ ConstColIterator
|
inherited |
rename the iterators for easier access
◆ ConstIterator
|
inherited |
Iterator class for sequential access.
◆ ConstRowIterator
|
inherited |
rename the iterators for easier access
◆ derived_type
|
inherited |
type of derived matrix class
◆ field_type
|
inherited |
export the type representing the field
◆ Iterator
|
inherited |
Iterator class for sequential access.
◆ iterator
|
inherited |
typedef for stl compliant access
◆ row_reference
|
inherited |
The type used to represent a reference to a row (usually row_type &)
◆ row_type
| typedef Base::row_type Dune::DynamicMatrix< K >::row_type |
◆ RowIterator
|
inherited |
rename the iterators for easier access
◆ size_type
| typedef Base::size_type Dune::DynamicMatrix< K >::size_type |
◆ value_type
| typedef Base::value_type Dune::DynamicMatrix< K >::value_type |
Constructor & Destructor Documentation
◆ DynamicMatrix() [1/4]
|
inline |
Default constructor.
◆ DynamicMatrix() [2/4]
|
inline |
Constructor initializing the whole matrix with a scalar.
◆ DynamicMatrix() [3/4]
|
inline |
Constructor initializing the matrix from a list of vector.
◆ DynamicMatrix() [4/4]
|
inline |
Member Function Documentation
◆ axpy()
|
inlineconstexprinherited |
vector space axpy operation (*this += a x)
◆ 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
◆ begin() [1/2]
|
inlineconstexprinherited |
begin iterator
◆ begin() [2/2]
|
inlineconstexprinherited |
begin iterator
◆ cols()
|
inlineconstexprinherited |
number of columns
◆ determinant()
|
inherited |
calculates the determinant of this matrix
◆ end() [1/2]
|
inlineconstexprinherited |
end iterator
◆ end() [2/2]
|
inlineconstexprinherited |
end iterator
◆ exists()
|
inlineconstexprinherited |
return true when (i,j) is in pattern
◆ frobenius_norm()
|
inlineconstexprinherited |
frobenius norm: sqrt(sum over squared values of entries)
◆ frobenius_norm2()
|
inlineconstexprinherited |
square of frobenius norm, need for block recursion
◆ infinity_norm() [1/2]
|
inlineconstexprinherited |
infinity norm (row sum norm, how to generalize for blocks?)
◆ infinity_norm() [2/2]
|
inlineconstexprinherited |
infinity norm (row sum norm, how to generalize for blocks?)
◆ infinity_norm_real() [1/2]
|
inlineconstexprinherited |
simplified infinity norm (uses Manhattan norm for complex values)
◆ infinity_norm_real() [2/2]
|
inlineconstexprinherited |
simplified infinity norm (uses Manhattan norm for complex values)
◆ invert()
|
inherited |
Compute inverse.
- Exceptions
-
FMatrixError if the matrix is singular
◆ leftmultiply()
|
inlineinherited |
Multiplies M from the left to this matrix.
◆ 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.
◆ M()
|
inlineconstexprinherited |
number of columns
◆ mat_access() [1/2]
|
inline |
◆ mat_access() [2/2]
|
inline |
◆ mat_cols()
|
inline |
◆ mat_rows()
|
inline |
◆ mmhv()
|
inlineconstexprinherited |
y -= A^H x
◆ mmtv()
|
inlineconstexprinherited |
y -= A^T x
◆ mmv()
|
inlineconstexprinherited |
y -= A x
◆ mtv()
|
inlineconstexprinherited |
y = A^T x
◆ mv()
|
inlineconstexprinherited |
y = A x
◆ N()
|
inlineconstexprinherited |
number of rows
◆ operator!=()
|
inlineconstexprinherited |
Binary matrix incomparison.
◆ operator*=()
|
inlineconstexprinherited |
vector space multiplication with scalar
◆ operator+=()
|
inlineconstexprinherited |
vector space addition
◆ operator-()
|
inlineconstexprinherited |
Matrix negation.
◆ operator-=()
|
inlineconstexprinherited |
vector space subtraction
◆ operator/=()
|
inlineconstexprinherited |
vector space division by scalar
◆ operator=() [1/2]
|
inline |
◆ operator=() [2/2]
|
inline |
◆ operator==()
|
inlineconstexprinherited |
Binary matrix comparison.
◆ operator[]() [1/2]
|
inlineconstexprinherited |
random access
◆ operator[]() [2/2]
|
inlineconstexprinherited |
◆ resize()
|
inline |
resize matrix to r × c
Resize the matrix to r × c, using v as the value of all entries.
- Warning
- All previous entries are lost, even when the matrix was not actually resized.
- Parameters
-
r number of rows c number of columns v value of matrix entries
◆ rightmultiply()
|
inlineinherited |
Multiplies M from the right to this matrix.
◆ rows()
|
inlineconstexprinherited |
number of rows
◆ size()
|
inlineconstexprinherited |
size method (number of rows)
◆ solve()
|
inherited |
Solve system A x = b.
- Exceptions
-
FMatrixError if the matrix is singular
◆ transposed()
|
inline |
Return transposed of the matrix as DynamicMatrix.
◆ umhv()
|
inlineconstexprinherited |
y += A^H x
◆ umtv()
|
inlineconstexprinherited |
y += A^T x
◆ umv()
|
inlineconstexprinherited |
y += A x
◆ usmhv()
|
inlineconstexprinherited |
y += alpha A^H x
◆ usmtv()
|
inlineconstexprinherited |
y += alpha A^T x
◆ usmv()
|
inlineconstexprinherited |
y += alpha A x
Member Data Documentation
◆ blocklevel
|
staticconstexprinherited |
The number of block levels we contain. This is the leaf, that is, 1.
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