DUNE-FEM (unstable)

Dune::Fem::NewtonInverseOperator< JacobianOperator, LInvOp > Class Template Referenceabstract

inverse operator based on a newton scheme More...

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

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 Impl::SolverInfo SolverInfoType
 performance info about last solver call
 
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)
 
const std::vector< double > & timing () const
 returns [overall, jacobian, solve] timings in seconds for last operator () call.
 
SolverInfoType info () const
 return performance information about last solver run *‍/
 
virtual void operator() (const DomainFunctionType &u, RangeFunctionType &w) const=0
 application operator More...
 
virtual void finalize ()
 finalization of operator More...
 
virtual bool nonlinear () const
 

Static Public Attributes

static constexpr bool preconditioningAvailable = SelectPreconditioning< LinearInverseOperatorType > :: value
 type of preconditioner for linear solver
 

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.nonlinear.verbose; it defaults to fem.solver.verbose.
Similar to CG solver the initial guess should take the constraints into account. In this case we need the initial residual to be zero on the boundary, i.e., when calling operator()(u,w) then w=g+u should hold on the Dirichlet boundary. This way we do not explicitly need to call the constraints here.

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.nonlinear.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.nonlinear.tolerance

◆ NewtonInverseOperator() [2/4]

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

constructor

Note
The tolerance is read from the paramter fem.solver.nonlinear.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
[in]parameterparameter set for solver config.

◆ NewtonInverseOperator() [4/4]

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

constructor

Parameters
[in]epsilontolerance for norm of residual
[in]parameterparameter set for solver config.

Member Function Documentation

◆ finalize()

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

finalization of operator

Note
The default implementation is empty.

◆ nonlinear()

virtual bool Dune::Fem::Operator< JacobianOperator::RangeFunctionType , JacobianOperator::DomainFunctionType >::nonlinear ( ) const
inlinevirtualinherited

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

◆ operator()()

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.nonlinear.tolerance

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 27, 22:29, 2024)