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

Inverse operator base on CG method. Uses a runtime parameter fem.preconditioning which enables diagonal preconditioning if diagonal matrix entries are available, i.e., Op :: assembled is true. More...

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

Inheritance diagram for Dune::Fem::CGInverseOperator< DiscreteFunction, Op >:
Inheritance graph

Public Types

typedef BaseType::DomainFunctionType DomainFunctionType
 
typedef BaseType::RangeFunctionType RangeFunctionType
 
typedef DomainFunctionType DestinationType
 
typedef Op OperatorType
 type of operator More...
 
typedef OperatorType::RangeFieldType RangeFieldType
 
typedef Dune::FieldTraits< RangeFieldType >::real_type RealType
 
typedef Fem::Operator< RangeFunctionType, DomainFunctionTypePreconditioningType
 
typedef Fem::Operator< RangeFunctionType, DomainFunctionTypePreconditionerType
 
typedef DiscreteFunction::RangeFieldType DomainFieldType
 field type of the operator's domain More...
 

Public Member Functions

template<class LinearOperator >
 CGInverseOperator (const LinearOperator &op, RealType redEps, RealType absLimit, unsigned int maxIter, bool verbose, const ParameterReader &parameter=Parameter::container())
 constructor of CGInverseOperator More...
 
template<class LinearOperator >
 CGInverseOperator (const LinearOperator &op, RealType redEps, RealType absLimit, unsigned int maxIter, const ParameterReader &parameter=Parameter::container())
 constructor of CGInverseOperator More...
 
template<class LinearOperator >
 CGInverseOperator (const LinearOperator &op, RealType redEps, RealType absLimit, const ParameterReader &parameter=Parameter::container())
 
 CGInverseOperator (const OperatorType &op, const PreconditioningType &precond, RealType redEps, RealType absLimit, unsigned int maxIter, const ParameterReader &parameter=Parameter::container())
 constructor of CGInverseOperator More...
 
 CGInverseOperator (const OperatorType &op, const PreconditioningType &precond, RealType redEps, RealType absLimit, const ParameterReader &parameter=Parameter::container())
 
 ~CGInverseOperator ()
 destructor More...
 
virtual void operator() (const DomainFunctionType &arg, RangeFunctionType &dest) const
 application operator More...
 
template<typename... A>
void prepare (A...) const
 
void finalize () const
 
virtual void apply (const DomainFunctionType &arg, RangeFunctionType &dest) const
 application operator 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 Member Functions

template<class LinearOperator >
void checkPreconditioning (const LinearOperator &linearOp)
 

Protected Attributes

PreconditioningTypeprecondObj_
 
const OperatorTypeoperator_
 
const PreconditionerTypepreconditioner_
 
SolverType solver_
 
ParameterReader parameter_
 

Detailed Description

template<class DiscreteFunction, class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
class Dune::Fem::CGInverseOperator< DiscreteFunction, Op >

Inverse operator base on CG method. Uses a runtime parameter fem.preconditioning which enables diagonal preconditioning if diagonal matrix entries are available, i.e., Op :: assembled is true.

Member Typedef Documentation

template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
typedef DomainFunctionType Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::DestinationType
typedef DiscreteFunction ::RangeFieldType Dune::Fem::Operator< DiscreteFunction , DiscreteFunction >::DomainFieldType
inherited

field type of the operator's domain

template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
typedef BaseType::DomainFunctionType Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::DomainFunctionType
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
typedef Op Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::OperatorType

type of operator

template<class DiscreteFunction >
typedef Fem::Operator< RangeFunctionType, DomainFunctionType > Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::PreconditionerType
inherited
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
typedef Fem::Operator< RangeFunctionType,DomainFunctionType > Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::PreconditioningType
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
typedef OperatorType::RangeFieldType Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::RangeFieldType
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
typedef BaseType::RangeFunctionType Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::RangeFunctionType
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
typedef Dune::FieldTraits< RangeFieldType >::real_type Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::RealType

Constructor & Destructor Documentation

template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
template<class LinearOperator >
Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::CGInverseOperator ( const LinearOperator op,
RealType  redEps,
RealType  absLimit,
unsigned int  maxIter,
bool  verbose,
const ParameterReader parameter = Parameter::container() 
)
inline

constructor of CGInverseOperator

Parameters
[in]opoperator to invert
[in]redEpsreduction epsilon
[in]absLimitabsolut limit of residual
[in]maxItermaximum number of iteration steps
[in]verboseverbosity
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
template<class LinearOperator >
Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::CGInverseOperator ( const LinearOperator op,
RealType  redEps,
RealType  absLimit,
unsigned int  maxIter,
const ParameterReader parameter = Parameter::container() 
)
inline

constructor of CGInverseOperator

Parameters
[in]opoperator to invert
[in]redEpsreduction epsilon
[in]absLimitabsolut limit of residual
[in]maxItermaximum number of iteration steps
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
template<class LinearOperator >
Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::CGInverseOperator ( const LinearOperator op,
RealType  redEps,
RealType  absLimit,
const ParameterReader parameter = Parameter::container() 
)
inline
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::CGInverseOperator ( const OperatorType op,
const PreconditioningType precond,
RealType  redEps,
RealType  absLimit,
unsigned int  maxIter,
const ParameterReader parameter = Parameter::container() 
)
inline

constructor of CGInverseOperator

Parameters
[in]opoperator to invert
[in]precondprecondition operator
[in]redEpsreduction epsilon
[in]absLimitabsolut limit of residual
[in]maxItermaximum number of iteration steps
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::CGInverseOperator ( const OperatorType op,
const PreconditioningType precond,
RealType  redEps,
RealType  absLimit,
const ParameterReader parameter = Parameter::container() 
)
inline
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::~CGInverseOperator ( )
inline

destructor

Member Function Documentation

template<class DiscreteFunction >
virtual void Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::apply ( const DomainFunctionType arg,
RangeFunctionType dest 
) const
inlinevirtualinherited

application operator

The application operator actually solves the linear system $op(dest) = arg$ using the CG method.

Parameters
[in]argargument discrete function
[out]destdestination discrete function
template<class DiscreteFunction >
double Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::averageCommTime ( ) const
inlineinherited

return average communication time during last solve

template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
template<class LinearOperator >
void Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::checkPreconditioning ( const LinearOperator linearOp)
inlineprotected
template<class DiscreteFunction >
void Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::finalize ( ) const
inlineinherited
template<class DiscreteFunction >
unsigned int Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::iterations ( ) const
inlineinherited

number of iterations needed for last solve

template<class DiscreteFunction >
virtual void Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::operator() ( const DomainFunctionType arg,
RangeFunctionType dest 
) const
inlinevirtualinherited

application operator

The application operator actually solves the linear system $op(dest) = arg$ using the CG method.

Parameters
[in]argargument discrete function
[out]destdestination discrete function

Implements Dune::Fem::Operator< DiscreteFunction, DiscreteFunction >.

template<class DiscreteFunction >
template<typename... A>
void Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::prepare ( A...  ) const
inlineinherited

Member Data Documentation

template<class DiscreteFunction >
const OperatorType& Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::operator_
protectedinherited
template<class DiscreteFunction >
ParameterReader Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::parameter_
protectedinherited
template<class DiscreteFunction >
const PreconditionerType* Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::preconditioner_
protectedinherited
template<class DiscreteFunction , class Op = Fem::Operator< DiscreteFunction, DiscreteFunction >>
PreconditioningType* Dune::Fem::CGInverseOperator< DiscreteFunction, Op >::precondObj_
protected
template<class DiscreteFunction >
SolverType Dune::Fem::Solver::CGInverseOperator< DiscreteFunction >::solver_
protectedinherited

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