dune-fem 2.8.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
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 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 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
 
SolverParameterTypeparameter () const
 
bool verbose () const
 
double averageCommTime () const
 return accumulated communication time
 
virtual void finalize ()
 finalization of operator
 

Protected Types

typedef BartonNackmanInterface< InverseOperatorInterface< KrylovInverseOperatorTraits< DiscreteFunction, method > >, typename Traits::InverseOperatorTypeBase2Type
 
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()))
 
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< PreconditionerTypeprecondObj_
 
bool useDiagonalPreconder_
 
std::vector< DomainFunctionTypev_
 
const bool verbose_
 
const int method_
 
std::shared_ptr< SolverParameterTypeparameter_
 
const OperatorTypeoperator_
 
const AssembledOperatorTypeassembledOperator_
 
const PreconditionerTypepreconditioner_
 
std::unique_ptr< SolverDiscreteFunctionTyperhs_
 
std::unique_ptr< SolverDiscreteFunctionTypex_
 
int iterations_
 
bool rightHandSideCopied_
 

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

◆ 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

◆ 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.

◆ finalize()

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

finalization of operator

Note
The default implementation is empty.

◆ iterations()

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

return number of iterations used in previous call of application operator

◆ 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

◆ 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

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

◆ 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

◆ useDiagonalPreconder_

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

◆ 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: