Dune Core Modules (unstable)

Dune::ScaledIdentityMatrix< K, n > Class Template Reference

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. More...
 
typedef DiagonalRowVectorConst< K, n > const_row_type
 Const type of a single row.
 
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.
 
ScaledIdentityMatrixoperator= (const K &k)
 Assignment from scalar.
 
bool identical (const ScaledIdentityMatrix< K, n > &other) const
 Check if matrix is identical to other matrix. More...
 
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. More...
 
void invert ()
 Compute inverse.
 
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. More...
 
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.
 

Vector space arithmetic

ScaledIdentityMatrixoperator+= (const ScaledIdentityMatrix &y)
 Vector space addition.
 
ScaledIdentityMatrixoperator-= (const ScaledIdentityMatrix &y)
 Vector space subtraction.
 
ScaledIdentityMatrixoperator+= (const K &k)
 Addition of a scalar to the diagonal. More...
 
ScaledIdentityMatrixoperator-= (const K &k)
 Subtraction of a scalar from the diagonal. More...
 
ScaledIdentityMatrixoperator*= (const K &k)
 Vector space multiplication with scalar.
 
ScaledIdentityMatrixoperator/= (const K &k)
 Vector space division by scalar.
 

Detailed Description

template<class K, int n>
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
KThe number used for matrix entries
nThe number of matrix rows and columns
Warning
If m is an object of type ScaledIdentityMatrix, then code like
K entry = m[0][1];
will compile. However, the expression m[0][1] is not guaranteed to return 0. Rather, its behavior is undefined.

Member Typedef Documentation

◆ row_type

template<class K , int n>
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 dedicated ScaledIdentityMatrixRowVector would just be a copy of that.

Member Function Documentation

◆ beforeBegin() [1/2]

template<class K , int n>
Iterator Dune::ScaledIdentityMatrix< K, n >::beforeBegin ( )
inline
Returns
an iterator that is positioned before the first row of the matrix.

◆ beforeBegin() [2/2]

template<class K , int n>
ConstIterator Dune::ScaledIdentityMatrix< K, n >::beforeBegin ( ) const
inline
Returns
an iterator that is positioned before the first row of the matrix.

◆ beforeEnd() [1/2]

template<class K , int n>
Iterator Dune::ScaledIdentityMatrix< K, n >::beforeEnd ( )
inline
Returns
an iterator that is positioned before the end iterator of the rows, i.e. at the last row.

◆ beforeEnd() [2/2]

template<class K , int n>
ConstIterator Dune::ScaledIdentityMatrix< K, n >::beforeEnd ( ) const
inline
Returns
an iterator that is positioned before the end iterator of the rows. i.e. at the last row.

◆ identical()

template<class K , int n>
bool Dune::ScaledIdentityMatrix< K, n >::identical ( const ScaledIdentityMatrix< K, n > &  other) const
inline

Check if matrix is identical to other matrix.

"Identical" means: Not just the same values, but the very same object.

◆ infinity_norm()

template<class K , int n>
FieldTraits< field_type >::real_type Dune::ScaledIdentityMatrix< K, n >::infinity_norm ( ) const
inline

The row sum norm.

For a multiple of the identity matrix, this is simply the absolute value of any diagonal matrix entry.

◆ operator+=()

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator+= ( const K &  k)
inline

Addition of a scalar to the diagonal.

Warning
This is not the same as adding a scalar to a FieldMatrix!

◆ operator-=()

template<class K , int n>
ScaledIdentityMatrix & Dune::ScaledIdentityMatrix< K, n >::operator-= ( const K &  k)
inline

Subtraction of a scalar from the diagonal.

Warning
This is not the same as subtracting a scalar from a FieldMatrix!

◆ solve()

template<class K , int n>
template<class V >
void Dune::ScaledIdentityMatrix< K, n >::solve ( V &  x,
const V &  b 
) const
inline

Solve linear system A x = b.

Template Parameters
VVector data type

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Sep 21, 22:40, 2025)