dune-fem 2.8.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | List of all members
Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp > Class Template Referenceabstract

inverse operator based on a newton scheme More...

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

Inheritance diagram for Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >:
Inheritance graph

Public Types

typedef JacobianOperator JacobianOperatorType
 type of operator's Jacobian
 
typedef DifferentiableOperator< JacobianOperatorTypeOperatorType
 type of operator to invert
 
typedef LInvOp LinearInverseOperatorType
 type of linear inverse operator
 
typedef BaseType::DomainFunctionType DomainFunctionType
 
typedef BaseType::RangeFunctionType RangeFunctionType
 
typedef BaseType::DomainFieldType DomainFieldType
 
typedef NewtonParameter< typename LinearInverseOperatorType::SolverParameterType > ParameterType
 
typedef std::function< bool(const RangeFunctionType &w, const RangeFunctionType &dw, double residualNorm) > ErrorMeasureType
 
typedef RangeFunction::RangeFieldType RangeFieldType
 field type of the operator's range
 

Public Member Functions

 NewtonInverseOperator (LinearInverseOperatorType jInv, const DomainFieldType &epsilon, const ParameterType &parameter)
 
 NewtonInverseOperator (const ParameterType &parameter=ParameterType(Parameter::container()))
 
 NewtonInverseOperator (const DomainFieldType &epsilon, const ParameterType &parameter)
 
 NewtonInverseOperator (const DomainFieldType &epsilon, const ParameterReader &parameter=Parameter::container())
 
void setErrorMeasure (ErrorMeasureType finished)
 
void bind (const OperatorType &op)
 
void unbind ()
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const
 
int iterations () const
 
void setMaxIterations (int maxIterations)
 
int linearIterations () const
 
void setMaxLinearIterations (int maxLinearIterations)
 
bool verbose () const
 
NewtonFailure failed () const
 
bool converged () const
 
virtual int lineSearch (RangeFunctionType &w, RangeFunctionType &dw, const DomainFunctionType &u, DomainFunctionType &residual) const
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const=0
 application operator
 
virtual void finalize ()
 finalization of operator
 

Protected Member Functions

template<class ... Args>
JacobianOperatorTypejacobian (Args &&... args) const
 

Detailed Description

template<class JacobianOperator, class LInvOp>
class Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >

inverse operator based on a newton scheme

Template Parameters
Opoperator to invert (must be a DifferentiableOperator)
LInvOplinear inverse operator
Note
Verbosity of the NewtonInverseOperator is controlled via the paramter fem.solver.newton.verbose; it defaults to fem.solver.verbose.

Member Typedef Documentation

◆ DomainFieldType

template<class JacobianOperator , class LInvOp >
typedef BaseType::DomainFieldType Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::DomainFieldType

◆ DomainFunctionType

template<class JacobianOperator , class LInvOp >
typedef BaseType::DomainFunctionType Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::DomainFunctionType

◆ ErrorMeasureType

template<class JacobianOperator , class LInvOp >
typedef std::function< bool ( const RangeFunctionType &w, const RangeFunctionType &dw, double residualNorm ) > Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::ErrorMeasureType

◆ JacobianOperatorType

template<class JacobianOperator , class LInvOp >
typedef JacobianOperator Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::JacobianOperatorType

type of operator's Jacobian

◆ LinearInverseOperatorType

template<class JacobianOperator , class LInvOp >
typedef LInvOp Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::LinearInverseOperatorType

type of linear inverse operator

◆ OperatorType

template<class JacobianOperator , class LInvOp >
typedef DifferentiableOperator< JacobianOperatorType > Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::OperatorType

type of operator to invert

◆ ParameterType

template<class JacobianOperator , class LInvOp >
typedef NewtonParameter<typename LinearInverseOperatorType::SolverParameterType> Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::ParameterType

◆ RangeFieldType

typedef RangeFunction::RangeFieldType Dune::Fem::Operator< JacobianOperator::RangeFunctionType , JacobianOperator::DomainFunctionType >::RangeFieldType
inherited

field type of the operator's range

◆ RangeFunctionType

template<class JacobianOperator , class LInvOp >
typedef BaseType::RangeFunctionType Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::RangeFunctionType

Constructor & Destructor Documentation

◆ NewtonInverseOperator() [1/4]

template<class JacobianOperator , class LInvOp >
Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::NewtonInverseOperator ( LinearInverseOperatorType  jInv,
const DomainFieldType epsilon,
const ParameterType parameter 
)
inline

constructor

Parameters
[in]jInvlinear inverse operator (will be move constructed)
Note
The tolerance is read from the paramter fem.solver.newton.tolerance constructor
Parameters
[in]jInvlinear inverse operator (will be move constructed)
[in]epsilontolerance for norm of residual
Note
The tolerance is read from the paramter fem.solver.newton.tolerance

◆ NewtonInverseOperator() [2/4]

template<class JacobianOperator , class LInvOp >
Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::NewtonInverseOperator ( const ParameterType parameter = ParameterTypeParameter::container() ))
inlineexplicit

constructor

Note
The tolerance is read from the paramter fem.solver.newton.tolerance

◆ NewtonInverseOperator() [3/4]

template<class JacobianOperator , class LInvOp >
Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::NewtonInverseOperator ( const DomainFieldType epsilon,
const ParameterType parameter 
)
inline

constructor

Parameters
[in]epsilontolerance for norm of residual

◆ NewtonInverseOperator() [4/4]

template<class JacobianOperator , class LInvOp >
Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::NewtonInverseOperator ( const DomainFieldType epsilon,
const ParameterReader parameter = Parameter::container() 
)
inline

Member Function Documentation

◆ bind()

template<class JacobianOperator , class LInvOp >
void Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::bind ( const OperatorType op)
inline

◆ converged()

template<class JacobianOperator , class LInvOp >
bool Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::converged ( ) const
inline

◆ failed()

template<class JacobianOperator , class LInvOp >
NewtonFailure Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::failed ( ) const
inline

◆ finalize()

virtual void Dune::Fem::Operator< JacobianOperator::RangeFunctionType , JacobianOperator::DomainFunctionType >::finalize ( )
inlinevirtualinherited

finalization of operator

Note
The default implementation is empty.

◆ iterations()

template<class JacobianOperator , class LInvOp >
int Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::iterations ( ) const
inline

◆ jacobian()

template<class JacobianOperator , class LInvOp >
template<class ... Args>
JacobianOperatorType & Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::jacobian ( Args &&...  args) const
inlineprotected

◆ linearIterations()

template<class JacobianOperator , class LInvOp >
int Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::linearIterations ( ) const
inline

◆ lineSearch()

template<class JacobianOperator , class LInvOp >
virtual int Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::lineSearch ( RangeFunctionType w,
RangeFunctionType dw,
const DomainFunctionType u,
DomainFunctionType residual 
) const
inlinevirtual

◆ operator()() [1/2]

template<class JacobianOperator , class LInvOp >
void Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::operator() ( const DomainFunctionType u,
RangeFunctionType w 
) const
inlinevirtual

◆ operator()() [2/2]

virtual void Dune::Fem::Operator< JacobianOperator::RangeFunctionType , JacobianOperator::DomainFunctionType >::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.

◆ setErrorMeasure()

template<class JacobianOperator , class LInvOp >
void Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::setErrorMeasure ( ErrorMeasureType  finished)
inline

constructor

Parameters
[in]opoperator to invert
Note
The tolerance is read from the paramter fem.solver.newton.tolerance

◆ setMaxIterations()

template<class JacobianOperator , class LInvOp >
void Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::setMaxIterations ( int  maxIterations)
inline

◆ setMaxLinearIterations()

template<class JacobianOperator , class LInvOp >
void Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::setMaxLinearIterations ( int  maxLinearIterations)
inline

◆ unbind()

template<class JacobianOperator , class LInvOp >
void Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::unbind ( )
inline

◆ verbose()

template<class JacobianOperator , class LInvOp >
bool Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp >::verbose ( ) const
inline

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