dune-fem  2.4.1-rc
Public Types | Public Member Functions | Protected Attributes | List of all members
Dune::Fem::ConjugateGradientSolver< Operator > Class Template Reference

linear solver using the CG algorithm More...

#include </local/tomalk/somewhere/tmp/dune-fem/dune/fem/solver/cginverseoperator.hh>

Inheritance diagram for Dune::Fem::ConjugateGradientSolver< Operator >:
Inheritance graph

Public Types

typedef Operator OperatorType
 type of the operators to invert More...
 
typedef OperatorType::DomainFieldType DomainFieldType
 field type of the operator's domain vectors More...
 
typedef OperatorType::RangeFieldType RangeFieldType
 field type of the operator's range vectors More...
 
typedef Dune::FieldTraits< RangeFieldType >::real_type RealType
 
typedef OperatorType::DomainFunctionType DomainFunctionType
 type of the operator's domain vectors More...
 
typedef OperatorType::RangeFunctionType RangeFunctionType
 type of the operator's range vectors More...
 
typedef Fem::Operator< RangeFunctionType, DomainFunctionTypePreconditionerType
 type of the preconditioner, maps from the range of the operator (the dual space) in it's domain More...
 

Public Member Functions

 ConjugateGradientSolver (const RealType &epsilon, unsigned int maxIterations, bool verbose, const ParameterReader &parameter=Parameter::container())
 constructor More...
 
 ConjugateGradientSolver (RealType epsilon, unsigned int maxIterations, const ParameterReader &parameter=Parameter::container())
 constructor More...
 
 ConjugateGradientSolver (const ThisType &)=delete
 
void solve (const OperatorType &op, const RangeFunctionType &b, DomainFunctionType &x) const
 solve $op( x ) = b$ More...
 
void solve (const OperatorType &op, const PreconditionerType &p, const RangeFunctionType &b, DomainFunctionType &x) const
 solve $op( x ) = b$ More...
 
unsigned int iterations () const
 number of iterations needed for last solve More...
 
double averageCommTime () const
 return average communication time during last solve More...
 

Protected Attributes

const RealType epsilon_
 
const unsigned int maxIterations_
 
const bool verbose_
 
double averageCommTime_
 
unsigned int realCount_
 

Detailed Description

template<class Operator>
class Dune::Fem::ConjugateGradientSolver< Operator >

linear solver using the CG algorithm

Parameters
Operatortype of the operator to invert

Member Typedef Documentation

field type of the operator's domain vectors

type of the operator's domain vectors

template<class Operator>
typedef Operator Dune::Fem::ConjugateGradientSolver< Operator >::OperatorType

type of the operators to invert

type of the preconditioner, maps from the range of the operator (the dual space) in it's domain

field type of the operator's range vectors

type of the operator's range vectors

template<class Operator>
typedef Dune::FieldTraits< RangeFieldType >::real_type Dune::Fem::ConjugateGradientSolver< Operator >::RealType

Constructor & Destructor Documentation

template<class Operator>
Dune::Fem::ConjugateGradientSolver< Operator >::ConjugateGradientSolver ( const RealType epsilon,
unsigned int  maxIterations,
bool  verbose,
const ParameterReader parameter = Parameter::container() 
)
inline

constructor

Parameters
[in]epsilontolerance
[in]maxIterationsmaximum number of CG iterations
[in]verboseverbose output

Referenced by Dune::Fem::ConjugateGradientSolver< OperatorType >::ConjugateGradientSolver().

template<class Operator>
Dune::Fem::ConjugateGradientSolver< Operator >::ConjugateGradientSolver ( RealType  epsilon,
unsigned int  maxIterations,
const ParameterReader parameter = Parameter::container() 
)
inline

constructor

Parameters
[in]epsilontolerance
[in]maxIterationsmaximum number of CG iterations
template<class Operator>
Dune::Fem::ConjugateGradientSolver< Operator >::ConjugateGradientSolver ( const ThisType )
delete

Member Function Documentation

template<class Operator>
double Dune::Fem::ConjugateGradientSolver< Operator >::averageCommTime ( ) const
inline

return average communication time during last solve

template<class Operator>
unsigned int Dune::Fem::ConjugateGradientSolver< Operator >::iterations ( ) const
inline

number of iterations needed for last solve

template<class Operator >
void Dune::Fem::ConjugateGradientSolver< Operator >::solve ( const OperatorType op,
const RangeFunctionType b,
DomainFunctionType x 
) const
inline

solve $op( x ) = b$

Note
The CG algorithm also works for positive semidefinite operators. In this case, $x \cdot v = b \cdot v$ for all $v$ in the operator's kernel.
Parameters
[in]oplinear operator to invert (must be symmetic and positive definite)
[in]bright hand side
xsolution (must be initialized to a start value)

References Dune::Fem::ConjugateGradientSolver< Operator >::averageCommTime_, Dune::Fem::ConjugateGradientSolver< Operator >::epsilon_, Dune::Fem::ConjugateGradientSolver< Operator >::maxIterations_, Dune::Fem::ConjugateGradientSolver< Operator >::realCount_, and Dune::Fem::ConjugateGradientSolver< Operator >::verbose_.

Referenced by Dune::Fem::ConjugateGradientSolver< OperatorType >::ConjugateGradientSolver().

template<class Operator >
void Dune::Fem::ConjugateGradientSolver< Operator >::solve ( const OperatorType op,
const PreconditionerType p,
const RangeFunctionType b,
DomainFunctionType x 
) const
inline

solve $op( x ) = b$

Note
The CG algorithm also works for positive semidefinite operators. In this case, $x \cdot v = b \cdot v$ for all $v$ in the operator's kernel.
Parameters
[in]oplinear operator to invert (must be symmetic and positive definite)
[in]p(lef) preconditioning operator
[in]bright hand side
xsolution (must be initialized to a start value)

References Dune::Fem::ConjugateGradientSolver< Operator >::averageCommTime_, Dune::Fem::ConjugateGradientSolver< Operator >::epsilon_, Dune::Fem::ConjugateGradientSolver< Operator >::maxIterations_, Dune::Fem::real(), Dune::Fem::ConjugateGradientSolver< Operator >::realCount_, and Dune::Fem::ConjugateGradientSolver< Operator >::verbose_.

Member Data Documentation

template<class Operator>
double Dune::Fem::ConjugateGradientSolver< Operator >::averageCommTime_
mutableprotected
template<class Operator>
const RealType Dune::Fem::ConjugateGradientSolver< Operator >::epsilon_
protected
template<class Operator>
const unsigned int Dune::Fem::ConjugateGradientSolver< Operator >::maxIterations_
protected
template<class Operator>
unsigned int Dune::Fem::ConjugateGradientSolver< Operator >::realCount_
mutableprotected
template<class Operator>
const bool Dune::Fem::ConjugateGradientSolver< Operator >::verbose_
protected

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