KASKADE 7 development version
Public Types | Public Member Functions | List of all members
Kaskade::SymmetricLinearOperator< X, Xstar > Class Template Referenceabstract

Interface for symmetric linear operators. More...

#include <symmetricOperators.hh>

Detailed Description

template<class X, class Xstar>
class Kaskade::SymmetricLinearOperator< X, Xstar >

Interface for symmetric linear operators.

In addition to the Dune::LinearOperator interface, symmetric operators provide access to a dual pairing \( \langle\cdot,\cdot\rangle \) (w.r.t. which they are symmetric) and offer the simultaneous evaluation of \( Ax \) and \( \langle x,Ax\rangle \), which can be implemented more efficiently than the sequential evaluation of the two quantities. This efficiency gain is exploited, e.g., in the conjugate gradient solver Pcg.

Definition at line 68 of file symmetricOperators.hh.

Inheritance diagram for Kaskade::SymmetricLinearOperator< X, Xstar >:
Kaskade::SymmetricLinearOperatorWrapper< X, Xstar >

Public Types

typedef X::field_type field_type
 

Public Member Functions

virtual field_type applyDp (X const &x, Xstar &y) const
 operator application Computes \( y \leftarrow Ax \) and returns the dual pairing \( \langle x,y \rangle \). More...
 
virtual field_type dp (X const &x, Xstar const &y) const =0
 returns the dual pairing \( \langle x, y \rangle \) with respect to which the operator is symmetric More...
 
virtual Dune::SolverCategory::Category category () const override
 returns the category of the operator More...
 

Member Typedef Documentation

◆ field_type

template<class X , class Xstar >
typedef X::field_type Kaskade::SymmetricLinearOperator< X, Xstar >::field_type

Definition at line 71 of file symmetricOperators.hh.

Member Function Documentation

◆ applyDp()

template<class X , class Xstar >
virtual field_type Kaskade::SymmetricLinearOperator< X, Xstar >::applyDp ( X const &  x,
Xstar &  y 
) const
inlinevirtual

operator application Computes \( y \leftarrow Ax \) and returns the dual pairing \( \langle x,y \rangle \).

The default implementation just calls dp(x,y) after the operator application. When implementing this interface in derived classes, consider a more efficient version.

Reimplemented in Kaskade::SymmetricMatrixOperator< X, Matrix >.

Definition at line 81 of file symmetricOperators.hh.

◆ category()

template<class X , class Xstar >
virtual Dune::SolverCategory::Category Kaskade::SymmetricLinearOperator< X, Xstar >::category ( ) const
inlineoverridevirtual

returns the category of the operator

From the Dune doxygen documentation it is unclear what this is supposed to mean. We return a dummy here.

Definition at line 98 of file symmetricOperators.hh.

◆ dp()

template<class X , class Xstar >
virtual field_type Kaskade::SymmetricLinearOperator< X, Xstar >::dp ( X const &  x,
Xstar const &  y 
) const
pure virtual

returns the dual pairing \( \langle x, y \rangle \) with respect to which the operator is symmetric

Implemented in Kaskade::SymmetricMatrixOperator< X, Matrix >, and Kaskade::SymmetricLinearOperatorWrapper< X, Xstar >.

Referenced by Kaskade::SymmetricLinearOperator< X, Xstar >::applyDp().


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