dune-fem 2.12-git
Loading...
Searching...
No Matches
Dune::Fem::KrylovInverseOperator< DiscreteFunction, method > Class Template Referenceabstract

#include <dune/fem/solver/krylovinverseoperators.hh>

Inheritance diagram for Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >:
Inheritance graph

Public Types

typedef BaseType::DomainFunctionType DomainFunctionType
 
typedef BaseType::RangeFunctionType RangeFunctionType
 
typedef BaseType::OperatorType OperatorType
 
typedef BaseType::PreconditionerType PreconditionerType
 
typedef BaseType::AssembledOperatorType AssembledOperatorType
 
typedef Traits::SolverDiscreteFunctionType SolverDiscreteFunctionType
 
typedef Traits::SolverParameterType SolverParameterType
 
typedef Impl::SolverInfo SolverInfoType
 
typedef std::function< bool(const RangeFunctionType &w, const RangeFunctionType &dw, double residualNorm) > ErrorMeasureType
 type of error measure (used by NewtonInverseOperator primnarily)
 
typedef DomainFunction::RangeFieldType DomainFieldType
 field type of the operator's domain
 
typedef RangeFunction::RangeFieldType RangeFieldType
 field type of the operator's range
 

Public Member Functions

 KrylovInverseOperator (const OperatorType &op, const SolverParameter &parameter=SolverParameter(Parameter::container()))
 
 KrylovInverseOperator (const OperatorType &op, const PreconditionerType &preconditioner, const SolverParameter &parameter=SolverParameter(Parameter::container()))
 
 KrylovInverseOperator (const SolverParameter &parameter=SolverParameter(Parameter::container()))
 main constructor
 
template<class Operator >
void bind (const Operator &op)
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const
 application of operator to compute
 
void operator() (const DiscreteFunctionInterface< DImpl > &u, DiscreteFunctionInterface< RImpl > &w) const
 application of operator to compute
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const=0
 application operator
 
void bind (const OperatorType &op)
 store pointer to linear operator
 
void bind (const OperatorType &op, const PreconditionerType &preconditioner)
 store pointer to linear operator and preconditioner
 
void unbind ()
 reset all pointers and internal temporary memory
 
int iterations () const
 return number of iterations used in previous call of application operator
 
virtual SolverInfoType info () const
 Return performance info about last solver call.
 
virtual void setMaxLinearIterations (const int iter)
 set number of max linear iterations to be used before an exception is thrown
 
virtual void setMaxIterations (const int iter)
 
void setParameters (const SolverParameterType &newParams)
 set complete set of linear inverse operator parameters
 
SolverParameterType & parameter () const
 
bool verbose () const
 
double averageCommTime () const
 return accumulated communication time
 
virtual void finalize ()
 finalization of operator
 
virtual bool nonlinear () const
 

Static Public Member Functions

static std::vector< int > supportedSolverMethods ()
 
static std::vector< int > supportedPreconditionMethods ()
 

Static Public Attributes

static const bool preconditioningAvailable
 true if a preconditioner type is exported and can be set using bind( op, p )
 

Protected Types

typedef BartonNackmanInterface< InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >, typename Traits::InverseOperatorType > Base2Type
 
typedef Traits::InverseOperatorType InverseOperatorType
 

Protected Member Functions

int apply (const DomainFunctionType &u, RangeFunctionType &w) const
 
template<class LinearOperator >
 KrylovInverseOperator (const LinearOperator &op, const PreconditionerType *preconditioner, const SolverParameter &parameter=SolverParameter(Parameter::container()))
 
template<class LinearOperator >
void createPreconditioner (const LinearOperator &op)
 
void opApply (const SolverDiscreteFunctionType &u, SolverDiscreteFunctionType &w) const
 
void opApply (const DiscreteFunctionInterface< DImpl > &u, DiscreteFunctionInterface< RImpl > &w) const
 
const Implementation & asImp () const
 
Implementation & asImp ()
 

Static Protected Member Functions

static const Implementation & asImp (const ThisType &other)
 
static Implementation & asImp (ThisType &other)
 

Protected Attributes

std::unique_ptr< PreconditionerType > precondObj_
 
std::vector< DomainFunctionType > v_
 
const bool verbose_
 
const int method_
 
const int precondMethod_
 
std::shared_ptr< SolverParameterType > parameter_
 
const OperatorType * operator_
 
const AssembledOperatorType * assembledOperator_
 
const PreconditionerType * preconditioner_
 
std::unique_ptr< SolverDiscreteFunctionType > rhs_
 
std::unique_ptr< SolverDiscreteFunctionType > x_
 
int iterations_
 
bool rightHandSideCopied_
 

Friends

class InverseOperatorInterface< Traits >
 

Member Typedef Documentation

◆ AssembledOperatorType

template<class DiscreteFunction , int method>
typedef BaseType::AssembledOperatorType Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::AssembledOperatorType

◆ Base2Type

typedef BartonNackmanInterface< InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >, typename Traits::InverseOperatorType > Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::Base2Type
protectedinherited

◆ DomainFieldType

typedef DomainFunction::RangeFieldType Dune::Fem::Operator< Traits::DiscreteFunctionType , Traits::DiscreteFunctionType >::DomainFieldType
inherited

field type of the operator's domain

◆ DomainFunctionType

template<class DiscreteFunction , int method>
typedef BaseType::DomainFunctionType Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::DomainFunctionType

◆ ErrorMeasureType

typedef std::function< bool ( const RangeFunctionType &w, const RangeFunctionType &dw, double residualNorm ) > Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::ErrorMeasureType
inherited

type of error measure (used by NewtonInverseOperator primnarily)

◆ InverseOperatorType

typedef Traits::InverseOperatorType Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::InverseOperatorType
protectedinherited

◆ OperatorType

template<class DiscreteFunction , int method>
typedef BaseType::OperatorType Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::OperatorType

◆ PreconditionerType

template<class DiscreteFunction , int method>
typedef BaseType::PreconditionerType Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::PreconditionerType

◆ RangeFieldType

typedef RangeFunction::RangeFieldType Dune::Fem::Operator< Traits::DiscreteFunctionType , Traits::DiscreteFunctionType >::RangeFieldType
inherited

field type of the operator's range

◆ RangeFunctionType

template<class DiscreteFunction , int method>
typedef BaseType::RangeFunctionType Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::RangeFunctionType

◆ SolverDiscreteFunctionType

typedef Traits::SolverDiscreteFunctionType Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::SolverDiscreteFunctionType
inherited

◆ SolverInfoType

typedef Impl::SolverInfo Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::SolverInfoType
inherited

◆ SolverParameterType

typedef Traits::SolverParameterType Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::SolverParameterType
inherited

Constructor & Destructor Documentation

◆ KrylovInverseOperator() [1/4]

template<class DiscreteFunction , int method>
Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::KrylovInverseOperator ( const OperatorType &  op,
const SolverParameter &  parameter = SolverParameter(Parameter::container()) 
)
inline

◆ KrylovInverseOperator() [2/4]

template<class DiscreteFunction , int method>
Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::KrylovInverseOperator ( const OperatorType &  op,
const PreconditionerType &  preconditioner,
const SolverParameter &  parameter = SolverParameter(Parameter::container()) 
)
inline

◆ KrylovInverseOperator() [3/4]

template<class DiscreteFunction , int method>
Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::KrylovInverseOperator ( const SolverParameter &  parameter = SolverParameter(Parameter::container()))
inline

main constructor

◆ KrylovInverseOperator() [4/4]

template<class DiscreteFunction , int method>
template<class LinearOperator >
Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::KrylovInverseOperator ( const LinearOperator &  op,
const PreconditionerType *  preconditioner,
const SolverParameter &  parameter = SolverParameter(Parameter::container()) 
)
inlineprotected

Member Function Documentation

◆ apply()

template<class DiscreteFunction , int method>
int Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::apply ( const DomainFunctionType &  u,
RangeFunctionType &  w 
) const
inlineprotected

◆ asImp() [1/4]

template<class Interface , class Implementation >
Implementation & Dune::Fem::BartonNackmanInterface< Interface, Implementation >::asImp ( )
inlineprotectedinherited

◆ asImp() [2/4]

template<class Interface , class Implementation >
const Implementation & Dune::Fem::BartonNackmanInterface< Interface, Implementation >::asImp ( ) const
inlineprotectedinherited

◆ asImp() [3/4]

template<class Interface , class Implementation >
static const Implementation & Dune::Fem::BartonNackmanInterface< Interface, Implementation >::asImp ( const ThisType &  other)
inlinestaticprotectedinherited

◆ asImp() [4/4]

template<class Interface , class Implementation >
static Implementation & Dune::Fem::BartonNackmanInterface< Interface, Implementation >::asImp ( ThisType &  other)
inlinestaticprotectedinherited

◆ averageCommTime()

double Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::averageCommTime ( ) const
inlineinherited

return accumulated communication time

◆ bind() [1/3]

template<class DiscreteFunction , int method>
template<class Operator >
void Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::bind ( const Operator &  op)
inline

◆ bind() [2/3]

void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::bind ( const OperatorType &  op)
inlineinherited

store pointer to linear operator

Parameters
oplinear operator following the Dune::Fem:Operator interface
Note
A dynamic cast to AssembledOperatorType is carried out. For some solvers this is necessary.

◆ bind() [3/3]

void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::bind ( const OperatorType &  op,
const PreconditionerType &  preconditioner 
)
inlineinherited

store pointer to linear operator and preconditioner

Parameters
oplinear operator following the Dune::Fem:Operator interface
preconditionerprecondition operator
Note
A dynamic cast to AssembledOperatorType is carried out. For some solvers this is necessary.

◆ createPreconditioner()

template<class DiscreteFunction , int method>
template<class LinearOperator >
void Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::createPreconditioner ( const LinearOperator &  op)
inlineprotected

◆ finalize()

virtual void Dune::Fem::Operator< Traits::DiscreteFunctionType , Traits::DiscreteFunctionType >::finalize ( )
inlinevirtualinherited

finalization of operator

Note
The default implementation is empty.

◆ info()

virtual SolverInfoType Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::info ( ) const
inlinevirtualinherited

Return performance info about last solver call.

◆ iterations()

int Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::iterations ( ) const
inlineinherited

return number of iterations used in previous call of application operator

◆ nonlinear()

virtual bool Dune::Fem::Operator< Traits::DiscreteFunctionType , Traits::DiscreteFunctionType >::nonlinear ( ) const
inlinevirtualinherited

Return true if the Operator is nonlinear and false otherwise (default is true).

◆ opApply() [1/2]

void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::opApply ( const DiscreteFunctionInterface< DImpl > &  u,
DiscreteFunctionInterface< RImpl > &  w 
) const
inlineprotectedinherited

◆ opApply() [2/2]

void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::opApply ( const SolverDiscreteFunctionType &  u,
SolverDiscreteFunctionType &  w 
) const
inlineprotectedinherited

◆ operator()() [1/3]

void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::operator() ( const DiscreteFunctionInterface< DImpl > &  u,
DiscreteFunctionInterface< RImpl > &  w 
) const
inlineinherited

application of operator to compute

\[ w = op^-1( u ) \]

.

Parameters
uparameter right hand side of linear problem
winitial guess for linear solver
Note
Calling the inverse operator for arbitrary discrete functions a copy to solver compatible discrete function is made.

◆ operator()() [2/3]

virtual void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::operator() ( const DomainFunctionType &  u,
RangeFunctionType &  w 
) const
inlinevirtualinherited

application of operator to compute

\[ w = op^-1( u ) \]

.

Parameters
uparameter right hand side of linear problem
winitial guess for linear solver

◆ operator()() [3/3]

virtual void Dune::Fem::Operator< Traits::DiscreteFunctionType , Traits::DiscreteFunctionType >::operator() ( const DomainFunctionType &  u,
RangeFunctionType &  w 
) const
pure virtualinherited

application operator

Parameters
[in]uargument discrete function
[out]wdestination discrete function
Note
This method has to be implemented by all derived classes.

◆ parameter()

SolverParameterType & Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::parameter ( ) const
inlineinherited

◆ setMaxIterations()

virtual void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::setMaxIterations ( const int  iter)
inlinevirtualinherited

◆ setMaxLinearIterations()

virtual void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::setMaxLinearIterations ( const int  iter)
inlinevirtualinherited

set number of max linear iterations to be used before an exception is thrown

Parameters
iternumber of max linear iterations

◆ setParameters()

void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::setParameters ( const SolverParameterType &  newParams)
inlineinherited

set complete set of linear inverse operator parameters

Note
newParams set of new parameters

◆ supportedPreconditionMethods()

template<class DiscreteFunction , int method>
static std::vector< int > Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::supportedPreconditionMethods ( )
inlinestatic

◆ supportedSolverMethods()

template<class DiscreteFunction , int method>
static std::vector< int > Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::supportedSolverMethods ( )
inlinestatic

◆ unbind()

void Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::unbind ( )
inlineinherited

reset all pointers and internal temporary memory

◆ verbose()

bool Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::verbose ( ) const
inlineinherited

Friends And Related Symbol Documentation

◆ InverseOperatorInterface< Traits >

template<class DiscreteFunction , int method>
friend class InverseOperatorInterface< Traits >
friend

Member Data Documentation

◆ assembledOperator_

const AssembledOperatorType* Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::assembledOperator_
protectedinherited

◆ iterations_

int Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::iterations_
mutableprotectedinherited

◆ method_

template<class DiscreteFunction , int method>
const int Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::method_
protected

◆ operator_

const OperatorType* Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::operator_
protectedinherited

◆ parameter_

std::shared_ptr<SolverParameterType> Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::parameter_
protectedinherited

◆ preconditioner_

const PreconditionerType* Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::preconditioner_
protectedinherited

◆ preconditioningAvailable

const bool Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::preconditioningAvailable
staticinherited

true if a preconditioner type is exported and can be set using bind( op, p )

◆ precondMethod_

template<class DiscreteFunction , int method>
const int Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::precondMethod_
protected

◆ precondObj_

template<class DiscreteFunction , int method>
std::unique_ptr< PreconditionerType > Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::precondObj_
protected

◆ rhs_

std::unique_ptr< SolverDiscreteFunctionType > Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::rhs_
mutableprotectedinherited

◆ rightHandSideCopied_

bool Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::rightHandSideCopied_
mutableprotectedinherited

◆ v_

template<class DiscreteFunction , int method>
std::vector< DomainFunctionType > Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::v_
mutableprotected

◆ verbose_

template<class DiscreteFunction , int method>
const bool Dune::Fem::KrylovInverseOperator< DiscreteFunction, method >::verbose_
protected

◆ x_

std::unique_ptr< SolverDiscreteFunctionType > Dune::Fem::InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >::x_
mutableprotectedinherited

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