KASKADE 7 development version
Public Types | Public Member Functions | List of all members
MatrixRepresentedOperator< X, Y > Class Template Reference

Defines a linear operator \(A:\ X\rightarrow Y\) with matrix representation \(M_A \in \mathbb{K}^{n\times m}\). More...

#include <concepts.hh>

Detailed Description

template<class X, class Y>
class MatrixRepresentedOperator< X, Y >

Defines a linear operator \(A:\ X\rightarrow Y\) with matrix representation \(M_A \in \mathbb{K}^{n\times m}\).

This concept adds the following commutative diagram to the Dune::LinearOperator concept:

\[ \begin{CD} X @>A>> Y \\ @AA{S^{-1}_X}A\ @VV{S_Y}V \\ \mathbb{K}^n @>M_A>> \mathbb{K}^m \\ \end{CD} \]

The mappings \(S_X\) and \(S_Y\) are the coordinate mappings of the domain and range space of \(A\). \(M_A\) is the matrix representation corresponding to the canonical basis in \(\mathbb{K}^n\) and \(\mathbb{K}^m\ (\mathrm{dim}(X)=n, \mathrm{dim}(Y)=m) \).

The matrix-representation \(M_A\) can be accessed via MatrixGeneratedOperator<X,Y>::get<MatrixType>() thus leaving the choice of matrix type to the user (i.e. Dune::BCRSMatrix, MatrixAsTriplet,...). Note that the set of matrix types that can be obtained depends on the actual model of this concept.

For the application of \(S^{-1}_X\) or \(S_Y\) use the member functions:

Definition at line 477 of file concepts.hh.

Inheritance diagram for MatrixRepresentedOperator< X, Y >:

Public Types

typedef X domain_type
 
typedef Y range_type
 

Public Member Functions

template<class MatrixType >
MatrixType get () const
 Get matrix-representation of the operator. More...
 
template<class Vector >
void rangeToVector (Y const &y, Vector &coord) const
 Get coordinate vector \(coord\in\mathbb{K}^m\) from \(y\in Y\). More...
 
template<class Vector >
void vectorToDomain (Vector const &coord, X &x) const
 Get \(x\in X\) from coordinate vector \(coord\in\mathbb{K}^n\). More...
 

Member Typedef Documentation

◆ domain_type

template<class X , class Y >
typedef X MatrixRepresentedOperator< X, Y >::domain_type

type of the operator's domain

Definition at line 481 of file concepts.hh.

◆ range_type

template<class X , class Y >
typedef Y MatrixRepresentedOperator< X, Y >::range_type

type of the operator's domain

Definition at line 483 of file concepts.hh.

Member Function Documentation

◆ get()

template<class X , class Y >
template<class MatrixType >
MatrixType MatrixRepresentedOperator< X, Y >::get ( ) const

Get matrix-representation of the operator.

◆ rangeToVector()

template<class X , class Y >
template<class Vector >
void MatrixRepresentedOperator< X, Y >::rangeToVector ( Y const &  y,
Vector &  coord 
) const

Get coordinate vector \(coord\in\mathbb{K}^m\) from \(y\in Y\).

Apply \(S_Y\) to \(y\in Y\): \(coord=S_Y(y)\).

The used vector type Vector must provide:

  • its iterator type via typename Vector::iterator
  • (possibly overloads of) the free functions:
    • typename Vector::iterator std::begin(Vector&);
    • typename Vector::iterator std::end(Vector&)

◆ vectorToDomain()

template<class X , class Y >
template<class Vector >
void MatrixRepresentedOperator< X, Y >::vectorToDomain ( Vector const &  coord,
X &  x 
) const

Get \(x\in X\) from coordinate vector \(coord\in\mathbb{K}^n\).

Apply \(S^{-1}_X\) to \(coord\): \(x=S^{-1}_X(x)\).

The used vector type Vector must provide:

  • its iterator type via typename Vector::const_iterator
  • (possibly overloads of) the free functions:
    • typename Vector::const_iterator std::begin(Vector const&);
    • typename Vector::const_iterator std::end(Vector const&);

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