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::InverseOperatorInterface< Traits > Class Template Referenceabstract

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

Inheritance diagram for Dune::Fem::InverseOperatorInterface< Traits >:
Inheritance graph

Public Types

typedef BaseType::DomainFunctionType DomainFunctionType
 
typedef BaseType::RangeFunctionType RangeFunctionType
 
typedef Traits::SolverDiscreteFunctionType SolverDiscreteFunctionType
 
typedef Traits::OperatorType OperatorType
 
typedef Traits::AssembledOperatorType AssembledOperatorType
 
typedef Traits::PreconditionerType PreconditionerType
 
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

 InverseOperatorInterface (const SolverParameterType &parameter)
 default constructor
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const
 application of operator to compute
 
template<class DImpl , class RImpl >
void operator() (const DiscreteFunctionInterface< DImpl > &u, DiscreteFunctionInterface< RImpl > &w) const
 application of operator to compute
 
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
 
 InverseOperatorInterface (const InverseOperatorInterface &other)
 copy constructor setting defaults
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const=0
 application operator
 
virtual void finalize ()
 finalization of operator
 

Protected Types

typedef Traits::OperatorType BaseType
 
typedef BartonNackmanInterface< InverseOperatorInterface< Traits >, typename Traits::InverseOperatorType > Base2Type
 
typedef Traits::InverseOperatorType InverseOperatorType
 

Protected Member Functions

void opApply (const SolverDiscreteFunctionType &u, SolverDiscreteFunctionType &w) const
 
template<class DImpl , class RImpl >
void opApply (const DiscreteFunctionInterface< DImpl > &u, DiscreteFunctionInterface< RImpl > &w) const
 
const Traits::InverseOperatorType & asImp () const
 
Traits::InverseOperatorType & asImp ()
 

Static Protected Member Functions

static const Traits::InverseOperatorType & asImp (const ThisType &other)
 
static Traits::InverseOperatorType & asImp (ThisType &other)
 

Protected Attributes

std::shared_ptr< SolverParameterTypeparameter_
 
const OperatorTypeoperator_ = nullptr
 
const AssembledOperatorTypeassembledOperator_ = nullptr
 
const PreconditionerTypepreconditioner_ = nullptr
 
std::unique_ptr< SolverDiscreteFunctionTyperhs_
 
std::unique_ptr< SolverDiscreteFunctionTypex_
 
int iterations_ = -1
 
bool rightHandSideCopied_ = false
 
bool verbose_
 

Member Typedef Documentation

◆ AssembledOperatorType

template<class Traits >
typedef Traits::AssembledOperatorType Dune::Fem::InverseOperatorInterface< Traits >::AssembledOperatorType

◆ Base2Type

template<class Traits >
typedef BartonNackmanInterface< InverseOperatorInterface< Traits >, typename Traits::InverseOperatorType > Dune::Fem::InverseOperatorInterface< Traits >::Base2Type
protected

◆ BaseType

template<class Traits >
typedef Traits::OperatorType Dune::Fem::InverseOperatorInterface< Traits >::BaseType
protected

◆ DomainFieldType

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

field type of the operator's domain

◆ DomainFunctionType

template<class Traits >
typedef BaseType::DomainFunctionType Dune::Fem::InverseOperatorInterface< Traits >::DomainFunctionType

◆ InverseOperatorType

template<class Traits >
typedef Traits::InverseOperatorType Dune::Fem::InverseOperatorInterface< Traits >::InverseOperatorType
protected

◆ OperatorType

template<class Traits >
typedef Traits::OperatorType Dune::Fem::InverseOperatorInterface< Traits >::OperatorType

◆ PreconditionerType

template<class Traits >
typedef Traits::PreconditionerType Dune::Fem::InverseOperatorInterface< Traits >::PreconditionerType

◆ RangeFieldType

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

field type of the operator's range

◆ RangeFunctionType

template<class Traits >
typedef BaseType::RangeFunctionType Dune::Fem::InverseOperatorInterface< Traits >::RangeFunctionType

◆ SolverDiscreteFunctionType

template<class Traits >
typedef Traits::SolverDiscreteFunctionType Dune::Fem::InverseOperatorInterface< Traits >::SolverDiscreteFunctionType

◆ SolverParameterType

template<class Traits >
typedef Traits::SolverParameterType Dune::Fem::InverseOperatorInterface< Traits >::SolverParameterType

Constructor & Destructor Documentation

◆ InverseOperatorInterface() [1/2]

template<class Traits >
Dune::Fem::InverseOperatorInterface< Traits >::InverseOperatorInterface ( const SolverParameterType parameter)
inline

default constructor

Note
parameter SolverParameter object to steer the linear solvers

◆ InverseOperatorInterface() [2/2]

template<class Traits >
Dune::Fem::InverseOperatorInterface< Traits >::InverseOperatorInterface ( const InverseOperatorInterface< Traits > &  other)
inline

copy constructor setting defaults

Member Function Documentation

◆ asImp() [1/4]

Traits::InverseOperatorType & Dune::Fem::BartonNackmanInterface< InverseOperatorInterface< Traits > , Traits::InverseOperatorType >::asImp ( )
inlineprotectedinherited

◆ asImp() [2/4]

const Traits::InverseOperatorType & Dune::Fem::BartonNackmanInterface< InverseOperatorInterface< Traits > , Traits::InverseOperatorType >::asImp ( ) const
inlineprotectedinherited

◆ asImp() [3/4]

static const Traits::InverseOperatorType & Dune::Fem::BartonNackmanInterface< InverseOperatorInterface< Traits > , Traits::InverseOperatorType >::asImp ( const ThisType other)
inlinestaticprotectedinherited

◆ asImp() [4/4]

static Traits::InverseOperatorType & Dune::Fem::BartonNackmanInterface< InverseOperatorInterface< Traits > , Traits::InverseOperatorType >::asImp ( ThisType other)
inlinestaticprotectedinherited

◆ averageCommTime()

template<class Traits >
double Dune::Fem::InverseOperatorInterface< Traits >::averageCommTime ( ) const
inline

return accumulated communication time

◆ bind() [1/2]

template<class Traits >
void Dune::Fem::InverseOperatorInterface< Traits >::bind ( const OperatorType op)
inline

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() [2/2]

template<class Traits >
void Dune::Fem::InverseOperatorInterface< Traits >::bind ( const OperatorType op,
const PreconditionerType preconditioner 
)
inline

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()

template<class Traits >
int Dune::Fem::InverseOperatorInterface< Traits >::iterations ( ) const
inline

return number of iterations used in previous call of application operator

◆ opApply() [1/2]

template<class Traits >
template<class DImpl , class RImpl >
void Dune::Fem::InverseOperatorInterface< Traits >::opApply ( const DiscreteFunctionInterface< DImpl > &  u,
DiscreteFunctionInterface< RImpl > &  w 
) const
inlineprotected

◆ opApply() [2/2]

template<class Traits >
void Dune::Fem::InverseOperatorInterface< Traits >::opApply ( const SolverDiscreteFunctionType u,
SolverDiscreteFunctionType w 
) const
inlineprotected

◆ operator()() [1/3]

template<class Traits >
template<class DImpl , class RImpl >
void Dune::Fem::InverseOperatorInterface< Traits >::operator() ( const DiscreteFunctionInterface< DImpl > &  u,
DiscreteFunctionInterface< RImpl > &  w 
) const
inline

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]

template<class Traits >
virtual void Dune::Fem::InverseOperatorInterface< Traits >::operator() ( const DomainFunctionType u,
RangeFunctionType w 
) const
inlinevirtual

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()

template<class Traits >
SolverParameterType & Dune::Fem::InverseOperatorInterface< Traits >::parameter ( ) const
inline

◆ setMaxIterations()

template<class Traits >
virtual void Dune::Fem::InverseOperatorInterface< Traits >::setMaxIterations ( const int  iter)
inlinevirtual

◆ setMaxLinearIterations()

template<class Traits >
virtual void Dune::Fem::InverseOperatorInterface< Traits >::setMaxLinearIterations ( const int  iter)
inlinevirtual

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

Parameters
iternumber of max linear iterations

◆ setParameters()

template<class Traits >
void Dune::Fem::InverseOperatorInterface< Traits >::setParameters ( const SolverParameterType newParams)
inline

set complete set of linear inverse operator parameters

Note
newParams set of new parameters

◆ unbind()

template<class Traits >
void Dune::Fem::InverseOperatorInterface< Traits >::unbind ( )
inline

reset all pointers and internal temporary memory

◆ verbose()

template<class Traits >
bool Dune::Fem::InverseOperatorInterface< Traits >::verbose ( ) const
inline

Member Data Documentation

◆ assembledOperator_

template<class Traits >
const AssembledOperatorType* Dune::Fem::InverseOperatorInterface< Traits >::assembledOperator_ = nullptr
protected

◆ iterations_

template<class Traits >
int Dune::Fem::InverseOperatorInterface< Traits >::iterations_ = -1
mutableprotected

◆ operator_

template<class Traits >
const OperatorType* Dune::Fem::InverseOperatorInterface< Traits >::operator_ = nullptr
protected

◆ parameter_

template<class Traits >
std::shared_ptr<SolverParameterType> Dune::Fem::InverseOperatorInterface< Traits >::parameter_
protected

◆ preconditioner_

template<class Traits >
const PreconditionerType* Dune::Fem::InverseOperatorInterface< Traits >::preconditioner_ = nullptr
protected

◆ rhs_

template<class Traits >
std::unique_ptr< SolverDiscreteFunctionType > Dune::Fem::InverseOperatorInterface< Traits >::rhs_
mutableprotected

◆ rightHandSideCopied_

template<class Traits >
bool Dune::Fem::InverseOperatorInterface< Traits >::rightHandSideCopied_ = false
mutableprotected

◆ verbose_

template<class Traits >
bool Dune::Fem::InverseOperatorInterface< Traits >::verbose_
mutableprotected

◆ x_

template<class Traits >
std::unique_ptr< SolverDiscreteFunctionType > Dune::Fem::InverseOperatorInterface< Traits >::x_
mutableprotected

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