|
virtual bool | apply (vector_type &c, const vector_type &d) |
| compute new correction c = B*d More...
|
|
virtual bool | apply_update_defect (vector_type &c, vector_type &d) |
| compute new correction c = B*d and update defect d := d - A*c More...
|
|
virtual SmartPtr< ILinearIterator< vector_type, vector_type > > | clone () |
| clone More...
|
|
virtual bool | init (SmartPtr< ILinearOperator< vector_type > > J, const vector_type &u) |
|
virtual bool | init (SmartPtr< ILinearOperator< vector_type > > L) |
|
virtual const char * | name () const |
| returns the name of iterator More...
|
|
| OperatorInverseIterator (SmartPtr< ILinearOperatorInverse< vector_type > > opInv) |
| default constructor More...
|
|
virtual bool | supports_parallel () const |
| returns if parallel solving is supported More...
|
|
| ~OperatorInverseIterator () |
|
virtual std::string | config_string () const |
|
SmartPtr< IDamping< TAlgebra::vector_type, TAlgebra::vector_type > > | damping () |
| returns the scaling More...
|
|
| ILinearIterator () |
| constructor More...
|
|
| ILinearIterator (const ILinearIterator< TAlgebra::vector_type, TAlgebra::vector_type > &parent) |
| copy constructor More...
|
|
virtual bool | init (SmartPtr< ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > > J, const TAlgebra::vector_type &u)=0 |
| initialize for operator J(u) and linearization point u More...
|
|
virtual bool | init (SmartPtr< ILinearOperator< TAlgebra::vector_type, TAlgebra::vector_type > > L)=0 |
| initialize for linear operator L More...
|
|
void | set_damp (number factor) |
| sets the damping to a constant factor More...
|
|
void | set_damp (SmartPtr< IDamping< TAlgebra::vector_type, TAlgebra::vector_type > > spScaling) |
| sets a scaling for the correction More...
|
|
virtual | ~ILinearIterator () |
| virtual destructor More...
|
|
template<typename TAlgebra>
class ug::OperatorInverseIterator< TAlgebra >
a LinearIterator which can uses ILinearOperatorInverse to perform B^{-1} this is for the case that some class needs a preconditioner, but we'd like to use a linear solver example: 4x AMG as preconditioner
linSolver = LinearSolver()
linSolver:set_preconditioner(amg)
linSolver:set_convergence_check(ConvCheck(4, 0, 0, false) )
someObject:set_preconditioner(oii)
OperatorInverseIterator(SmartPtr< ILinearOperatorInverse< vector_type > > opInv)
default constructor
Definition: operator_inverse_iterator.h:92
template<typename TAlgebra >
compute new correction c = B*d and update defect d := d - A*c
This method applies the inverse operator, i.e. c = B*d. The domain function d is changed in the way, that the defect d := d - A*c is returned in the function. This is always useful, when the iterating algorithm can (or must) update the defect during computation (this is e.g. the case for the geometric multigrid method). Note, that this method can always be implemented by calling apply and then computing d := d - A*c.
- Parameters
-
[in,out] | d | defect |
[out] | u | correction |
- Returns
- bool success flag
Implements ug::ILinearIterator< TAlgebra::vector_type >.
References ug::OperatorInverseIterator< TAlgebra >::m_opInv.